diff --git a/Makefile b/Makefile index 9f2e4636a4b4..ab30a17f58af 100644 --- a/Makefile +++ b/Makefile @@ -38,6 +38,11 @@ $(info QMK Firmware $(QMK_VERSION)) endif endif +# Try to determine userspace from qmk config, if set. +ifeq ($(QMK_USERSPACE),) + QMK_USERSPACE = $(shell qmk config -ro user.overlay_dir | cut -d= -f2 | sed -e 's@^None$$@@g') +endif + # Determine which qmk cli to use QMK_BIN := qmk @@ -191,9 +196,20 @@ define PARSE_KEYBOARD KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.))) KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.))) + ifneq ($(QMK_USERSPACE),) + KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/keymaps/*/.))) + KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/keymaps/*/.))) + KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.))) + KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.))) + KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.))) + endif + KEYBOARD_LAYOUTS := $(shell $(QMK_BIN) list-layouts --keyboard $1) LAYOUT_KEYMAPS := $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.))))) + ifneq ($(QMK_USERSPACE),) + $$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(QMK_USERSPACE)/layouts/$$(LAYOUT)/*/.))))) + endif KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS)) @@ -300,17 +316,18 @@ endef define BUILD_TEST TEST_PATH := $1 TEST_NAME := $$(notdir $$(TEST_PATH)) + TEST_FULL_NAME := $$(subst /,_,$$(patsubst $$(ROOT_DIR)tests/%,%,$$(TEST_PATH))) MAKE_TARGET := $2 COMMAND := $1 MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f $(BUILDDEFS_PATH)/build_test.mk $$(MAKE_TARGET) - MAKE_VARS := TEST=$$(TEST_NAME) TEST_PATH=$$(TEST_PATH) FULL_TESTS="$$(FULL_TESTS)" + MAKE_VARS := TEST=$$(TEST_NAME) TEST_OUTPUT=$$(TEST_FULL_NAME) TEST_PATH=$$(TEST_PATH) FULL_TESTS="$$(FULL_TESTS)" MAKE_MSG := $$(MSG_MAKE_TEST) $$(eval $$(call BUILD)) ifneq ($$(MAKE_TARGET),clean) - TEST_EXECUTABLE := $$(TEST_OUTPUT_DIR)/$$(TEST_NAME).elf - TESTS += $$(TEST_NAME) + TEST_EXECUTABLE := $$(TEST_OUTPUT_DIR)/$$(TEST_FULL_NAME).elf + TESTS += $$(TEST_FULL_NAME) TEST_MSG := $$(MSG_TEST) - $$(TEST_NAME)_COMMAND := \ + $$(TEST_FULL_NAME)_COMMAND := \ printf "$$(TEST_MSG)\n"; \ $$(TEST_EXECUTABLE); \ if [ $$$$? -gt 0 ]; \ @@ -322,15 +339,22 @@ endef define PARSE_TEST TESTS := - TEST_NAME := $$(firstword $$(subst :, ,$$(RULE))) - TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME):,,$$(RULE))) + # list of possible targets, colon-delimited, to reassign to MAKE_TARGET and remove + TARGETS := :clean: + ifneq (,$$(findstring :$$(lastword $$(subst :, ,$$(RULE))):, $$(TARGETS))) + MAKE_TARGET := $$(lastword $$(subst :, ,$$(RULE))) + TEST_SUBPATH := $$(subst $$(eval) ,/,$$(wordlist 2, $$(words $$(subst :, ,$$(RULE))), _ $$(subst :, ,$$(RULE)))) + else + MAKE_TARGET := + TEST_SUBPATH := $$(subst :,/,$$(RULE)) + endif include $(BUILDDEFS_PATH)/testlist.mk - ifeq ($$(TEST_NAME),all) + ifeq ($$(RULE),all) MATCHED_TESTS := $$(TEST_LIST) else - MATCHED_TESTS := $$(foreach TEST, $$(TEST_LIST),$$(if $$(findstring x$$(TEST_NAME)x, x$$(notdir $$(TEST))x), $$(TEST),)) + MATCHED_TESTS := $$(foreach TEST, $$(TEST_LIST),$$(if $$(findstring /$$(TEST_SUBPATH)/, $$(patsubst %,%/,$$(TEST))), $$(TEST),)) endif - $$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(TEST_TARGET)))) + $$(foreach TEST,$$(MATCHED_TESTS),$$(eval $$(call BUILD_TEST,$$(TEST),$$(MAKE_TARGET)))) endef @@ -423,8 +447,18 @@ clean: rm -rf $(BUILD_DIR) echo 'done.' -.PHONY: distclean -distclean: clean +.PHONY: distclean distclean_qmk +distclean: distclean_qmk +distclean_qmk: clean echo -n 'Deleting *.bin, *.hex, and *.uf2 ... ' rm -f *.bin *.hex *.uf2 echo 'done.' + +ifneq ($(QMK_USERSPACE),) +.PHONY: distclean_userspace +distclean: distclean_userspace +distclean_userspace: clean + echo -n 'Deleting userspace *.bin, *.hex, and *.uf2 ... ' + rm -f $(QMK_USERSPACE)/*.bin $(QMK_USERSPACE)/*.hex $(QMK_USERSPACE)/*.uf2 + echo 'done.' +endif diff --git a/builddefs/build_full_test.mk b/builddefs/build_full_test.mk index 85ee0898ec2d..63f9fea915db 100644 --- a/builddefs/build_full_test.mk +++ b/builddefs/build_full_test.mk @@ -13,10 +13,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -$(TEST)_INC := \ +$(TEST_OUTPUT)_INC := \ tests/test_common/common_config.h -$(TEST)_SRC := \ +$(TEST_OUTPUT)_SRC := \ $(QUANTUM_SRC) \ $(SRC) \ $(QUANTUM_PATH)/keymap_introspection.c \ @@ -30,8 +30,8 @@ $(TEST)_SRC := \ tests/test_common/test_logger.cpp \ $(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.cpp)) -$(TEST)_DEFS := $(OPT_DEFS) "-DKEYMAP_C=\"keymap.c\"" +$(TEST_OUTPUT)_DEFS := $(OPT_DEFS) "-DKEYMAP_C=\"keymap.c\"" -$(TEST)_CONFIG := $(TEST_PATH)/config.h +$(TEST_OUTPUT)_CONFIG := $(TEST_PATH)/config.h VPATH += $(TOP_DIR)/tests/test_common diff --git a/builddefs/build_json.mk b/builddefs/build_json.mk index 0c034eb2aea0..e9d1420f3639 100644 --- a/builddefs/build_json.mk +++ b/builddefs/build_json.mk @@ -1,17 +1,36 @@ # Look for a json keymap file ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","") KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) + KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_5) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","") KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) + KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_4) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","") KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) + KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_3) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","") KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) + KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_2) else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","") KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) + KEYMAP_JSON_PATH := $(MAIN_KEYMAP_PATH_1) +endif + +ifneq ($(QMK_USERSPACE),) + ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json)","") + KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.json + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json)","") + KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.json + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json)","") + KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.json + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json)","") + KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.json + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json)","") + KEYMAP_JSON := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.json + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1) + endif endif diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk index ecaac564f8ae..c7eecb9299be 100644 --- a/builddefs/build_keyboard.mk +++ b/builddefs/build_keyboard.mk @@ -130,37 +130,68 @@ include $(BUILDDEFS_PATH)/build_json.mk # Pull in keymap level rules.mk ifeq ("$(wildcard $(KEYMAP_PATH))", "") # Look through the possible keymap folders until we find a matching keymap.c - ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_1)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_2)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_3)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_4)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) - else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") - -include $(MAIN_KEYMAP_PATH_5)/rules.mk - KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c - KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) - else ifneq ($(LAYOUTS),) - # If we haven't found a keymap yet fall back to community layouts - include $(BUILDDEFS_PATH)/build_layout.mk - else - $(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap) - # this state should never be reached + ifneq ($(QMK_USERSPACE),) + ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c)","") + -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/rules.mk + KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1)/keymap.c + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_1) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c)","") + -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/rules.mk + KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2)/keymap.c + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_2) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c)","") + -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/rules.mk + KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3)/keymap.c + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_3) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c)","") + -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/rules.mk + KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4)/keymap.c + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_4) + else ifneq ("$(wildcard $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c)","") + -include $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/rules.mk + KEYMAP_C := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5)/keymap.c + KEYMAP_PATH := $(QMK_USERSPACE)/$(MAIN_KEYMAP_PATH_5) + endif + endif + ifeq ($(KEYMAP_PATH),) + ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_1)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_2)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_3)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_4)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4) + else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","") + -include $(MAIN_KEYMAP_PATH_5)/rules.mk + KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c + KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5) + else ifneq ($(LAYOUTS),) + # If we haven't found a keymap yet fall back to community layouts + include $(BUILDDEFS_PATH)/build_layout.mk + else ifeq ("$(wildcard $(KEYMAP_JSON_PATH))", "") # Not finding keymap.c is fine if we found a keymap.json + $(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap) + # this state should never be reached + endif endif endif # Have we found a keymap.json? ifneq ("$(wildcard $(KEYMAP_JSON))", "") + ifneq ("$(wildcard $(KEYMAP_C))", "") + $(call WARNING_MESSAGE,Keymap is specified as both keymap.json and keymap.c -- keymap.json file wins.) + endif + + KEYMAP_PATH := $(KEYMAP_JSON_PATH) + KEYMAP_C := $(INTERMEDIATE_OUTPUT)/src/keymap.c KEYMAP_H := $(INTERMEDIATE_OUTPUT)/src/config.h @@ -360,6 +391,16 @@ ifeq ("$(USER_NAME)","") endif USER_PATH := users/$(USER_NAME) +# If we have userspace, then add it to the lookup VPATH +ifneq ($(wildcard $(QMK_USERSPACE)),) + VPATH += $(QMK_USERSPACE) +endif + +# If the equivalent users directory exists in userspace, use that in preference to anything currently in the main repo +ifneq ($(wildcard $(QMK_USERSPACE)/$(USER_PATH)),) + USER_PATH := $(QMK_USERSPACE)/$(USER_PATH) +endif + # Pull in user level rules.mk -include $(USER_PATH)/rules.mk ifneq ("$(wildcard $(USER_PATH)/config.h)","") @@ -400,6 +441,10 @@ ifneq ("$(KEYMAP_H)","") CONFIG_H += $(KEYMAP_H) endif +ifeq ($(KEYMAP_C),) + $(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap) +endif + OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\" # If a keymap or userspace places their keymap array in another file instead, allow for it to be included @@ -451,6 +496,7 @@ $(eval $(call add_qmk_prefix_defs,MCU_PORT_NAME,MCU_PORT_NAME)) $(eval $(call add_qmk_prefix_defs,MCU_FAMILY,MCU_FAMILY)) $(eval $(call add_qmk_prefix_defs,MCU_SERIES,MCU_SERIES)) $(eval $(call add_qmk_prefix_defs,BOARD,BOARD)) +$(eval $(call add_qmk_prefix_defs,OPT,OPT)) # Control whether intermediate file listings are generated # e.g.: @@ -496,10 +542,10 @@ check-size: top-symbols top-symbols: build echo "###########################################" echo "# Highest flash usage:" - $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' + $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [RrTt] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' echo "###########################################" echo "# Highest RAM usage:" - $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' + $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [BbCDdGgSs] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g' echo "###########################################" endif diff --git a/builddefs/build_layout.mk b/builddefs/build_layout.mk index 6166bd847c59..9ff99cc2218e 100644 --- a/builddefs/build_layout.mk +++ b/builddefs/build_layout.mk @@ -1,6 +1,10 @@ LAYOUTS_PATH := layouts LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/)))) +ifneq ($(QMK_USERSPACE),) + LAYOUTS_REPOS += $(patsubst %/,%,$(QMK_USERSPACE)/$(LAYOUTS_PATH)) +endif + define SEARCH_LAYOUTS_REPO LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP) LAYOUT_KEYMAP_JSON := $$(LAYOUT_KEYMAP_PATH)/keymap.json diff --git a/builddefs/build_test.mk b/builddefs/build_test.mk index 9eead77beabd..2cc1134da5b3 100644 --- a/builddefs/build_test.mk +++ b/builddefs/build_test.mk @@ -9,13 +9,13 @@ OPT = g include paths.mk include $(BUILDDEFS_PATH)/message.mk -TARGET=test/$(TEST) +TARGET=test/$(TEST_OUTPUT) GTEST_OUTPUT = $(BUILD_DIR)/gtest TEST_OBJ = $(BUILD_DIR)/test_obj -OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT) +OUTPUTS := $(TEST_OBJ)/$(TEST_OUTPUT) $(GTEST_OUTPUT) GTEST_INC := \ $(LIB_PATH)/googletest/googletest/include \ @@ -71,18 +71,18 @@ ifneq ($(filter $(FULL_TESTS),$(TEST)),) include $(BUILDDEFS_PATH)/build_full_test.mk endif -$(TEST)_SRC += \ +$(TEST_OUTPUT)_SRC += \ tests/test_common/main.cpp \ $(QUANTUM_PATH)/logging/print.c ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),) -$(TEST)_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\" +$(TEST_OUTPUT)_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\" endif -$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC) -$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC) -$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS) -$(TEST_OBJ)/$(TEST)_CONFIG := $($(TEST)_CONFIG) +$(TEST_OBJ)/$(TEST_OUTPUT)_SRC := $($(TEST_OUTPUT)_SRC) +$(TEST_OBJ)/$(TEST_OUTPUT)_INC := $($(TEST_OUTPUT)_INC) $(VPATH) $(GTEST_INC) +$(TEST_OBJ)/$(TEST_OUTPUT)_DEFS := $($(TEST_OUTPUT)_DEFS) +$(TEST_OBJ)/$(TEST_OUTPUT)_CONFIG := $($(TEST_OUTPUT)_CONFIG) include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk include $(BUILDDEFS_PATH)/common_rules.mk diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk index 8446f4250a63..e298c61f26ec 100644 --- a/builddefs/common_features.mk +++ b/builddefs/common_features.mk @@ -75,10 +75,7 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes) endif ifeq ($(strip $(SEQUENCER_ENABLE)), yes) - OPT_DEFS += -DSEQUENCER_ENABLE MUSIC_ENABLE = yes - SRC += $(QUANTUM_DIR)/sequencer/sequencer.c - SRC += $(QUANTUM_DIR)/process_keycode/process_sequencer.c endif ifeq ($(strip $(MIDI_ENABLE)), yes) @@ -94,11 +91,6 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c endif -MUSIC_ENABLE ?= no -ifeq ($(MUSIC_ENABLE), yes) - SRC += $(QUANTUM_DIR)/process_keycode/process_music.c -endif - VALID_STENO_PROTOCOL_TYPES := geminipr txbolt all STENO_PROTOCOL ?= all ifeq ($(strip $(STENO_ENABLE)), yes) @@ -124,17 +116,11 @@ ifeq ($(strip $(STENO_ENABLE)), yes) endif endif -ifeq ($(strip $(VIRTSER_ENABLE)), yes) - OPT_DEFS += -DVIRTSER_ENABLE -endif - ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) - OPT_DEFS += -DMOUSEKEY_ENABLE MOUSE_ENABLE := yes - SRC += $(QUANTUM_DIR)/mousekey.c endif -VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3320 pmw3360 pmw3389 pimoroni_trackball custom +VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick azoteq_iqs5xx cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3320 pmw3360 pmw3389 pimoroni_trackball custom ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type) @@ -151,30 +137,26 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes) 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 + SPI_DRIVER_REQUIRED = yes else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), analog_joystick) - OPT_DEFS += -DSTM32_ADC -DHAL_USE_ADC=TRUE - LIB_SRC += analog.c + ANALOG_DRIVER_REQUIRED = yes + else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), azoteq_iqs5xx) + I2C_DRIVER_REQUIRED = yes else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_i2c) - OPT_DEFS += -DSTM32_I2C -DHAL_USE_I2C=TRUE + I2C_DRIVER_REQUIRED = yes SRC += drivers/sensors/cirque_pinnacle.c SRC += drivers/sensors/cirque_pinnacle_gestures.c SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c - QUANTUM_LIB_SRC += i2c_master.c else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_spi) - OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE + SPI_DRIVER_REQUIRED = yes SRC += drivers/sensors/cirque_pinnacle.c SRC += drivers/sensors/cirque_pinnacle_gestures.c SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c - QUANTUM_LIB_SRC += spi_master.c else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball) - OPT_DEFS += -DSTM32_SPI -DHAL_USE_I2C=TRUE - QUANTUM_LIB_SRC += i2c_master.c + I2C_DRIVER_REQUIRED = yes else ifneq ($(filter $(strip $(POINTING_DEVICE_DRIVER)),pmw3360 pmw3389),) - OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE + SPI_DRIVER_REQUIRED = yes SRC += drivers/sensors/pmw33xx_common.c - QUANTUM_LIB_SRC += spi_master.c endif endif endif @@ -204,12 +186,12 @@ else else ifeq ($(strip $(EEPROM_DRIVER)), i2c) # External I2C EEPROM implementation OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C - QUANTUM_LIB_SRC += i2c_master.c + I2C_DRIVER_REQUIRED = yes SRC += eeprom_driver.c eeprom_i2c.c else ifeq ($(strip $(EEPROM_DRIVER)), spi) # External SPI EEPROM implementation OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI - QUANTUM_LIB_SRC += spi_master.c + SPI_DRIVER_REQUIRED = yes SRC += eeprom_driver.c eeprom_spi.c else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash) # STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated) @@ -308,10 +290,10 @@ ifneq ($(strip $(FLASH_DRIVER)), none) else OPT_DEFS += -DFLASH_ENABLE ifeq ($(strip $(FLASH_DRIVER)),spi) + SPI_DRIVER_REQUIRED = yes OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI COMMON_VPATH += $(DRIVER_PATH)/flash SRC += flash_spi.c - QUANTUM_LIB_SRC += spi_master.c endif endif endif @@ -328,6 +310,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) COMMON_VPATH += $(QUANTUM_DIR)/rgblight POST_CONFIG_H += $(QUANTUM_DIR)/rgblight/rgblight_post_config.h OPT_DEFS += -DRGBLIGHT_ENABLE + OPT_DEFS += -DRGBLIGHT_$(strip $(shell echo $(RGBLIGHT_DRIVER) | tr '[:lower:]' '[:upper:]')) SRC += $(QUANTUM_DIR)/color.c SRC += $(QUANTUM_DIR)/rgblight/rgblight.c CIE1931_CURVE := yes @@ -342,24 +325,29 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) APA102_DRIVER_REQUIRED := yes endif - ifeq ($(strip $(RGBLIGHT_DRIVER)), custom) - OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER + ifeq ($(strip $(VELOCIKEY_ENABLE)), yes) + OPT_DEFS += -DVELOCIKEY_ENABLE endif endif +# Deprecated driver names - do not use +ifeq ($(strip $(LED_MATRIX_DRIVER)), aw20216) +LED_MATRIX_DRIVER := aw20216s +endif +ifeq ($(strip $(LED_MATRIX_DRIVER)), ckled2001) +LED_MATRIX_DRIVER := snled27351 +endif + LED_MATRIX_ENABLE ?= no -VALID_LED_MATRIX_TYPES := is31fl3731 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 custom -# TODO: is31fl3733 is31fl3737 is31fl3741 +VALID_LED_MATRIX_TYPES := is31fl3218 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a snled27351 custom ifeq ($(strip $(LED_MATRIX_ENABLE)), yes) ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid LED_MATRIX_DRIVER,LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type) endif OPT_DEFS += -DLED_MATRIX_ENABLE -ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) - # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines - OPT_DEFS += -DLIB8_ATTINY -endif + OPT_DEFS += -DLED_MATRIX_$(strip $(shell echo $(LED_MATRIX_DRIVER) | tr '[:lower:]' '[:upper:]')) + COMMON_VPATH += $(QUANTUM_DIR)/led_matrix COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations/runners @@ -367,65 +355,99 @@ endif SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c SRC += $(QUANTUM_DIR)/led_matrix/led_matrix.c SRC += $(QUANTUM_DIR)/led_matrix/led_matrix_drivers.c - SRC += $(LIB_PATH)/lib8tion/lib8tion.c + LIB8TION_ENABLE := yes CIE1931_CURVE := yes + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3218) + I2C_DRIVER_REQUIRED = yes + COMMON_VPATH += $(DRIVER_PATH)/led/issi + SRC += is31fl3218-simple.c + endif + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3731) - OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3731-simple.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3742a) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3742A -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3733) + I2C_DRIVER_REQUIRED = yes + COMMON_VPATH += $(DRIVER_PATH)/led/issi + SRC += is31fl3733-simple.c + endif + + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3736) + I2C_DRIVER_REQUIRED = yes + COMMON_VPATH += $(DRIVER_PATH)/led/issi + SRC += is31fl3736-simple.c + endif + + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3737) + I2C_DRIVER_REQUIRED = yes + COMMON_VPATH += $(DRIVER_PATH)/led/issi + SRC += is31fl3737-simple.c + endif + + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3741) + I2C_DRIVER_REQUIRED = yes + COMMON_VPATH += $(DRIVER_PATH)/led/issi + SRC += is31fl3741-simple.c + endif + + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3742a) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3743a) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3743A -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3743a) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3745) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3745 -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3745) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3746a) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3746A -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3746a) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(LED_MATRIX_DRIVER)), ckled2001) - OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(LED_MATRIX_DRIVER)), snled27351) + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led - SRC += ckled2001-simple.c - QUANTUM_LIB_SRC += i2c_master.c + SRC += snled27351-simple.c endif endif +# Deprecated driver names - do not use +ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216) +RGB_MATRIX_DRIVER := aw20216s +endif +ifeq ($(strip $(RGB_MATRIX_DRIVER)), ckled2001) +RGB_MATRIX_DRIVER := snled27351 +endif + RGB_MATRIX_ENABLE ?= no -VALID_RGB_MATRIX_TYPES := aw20216 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 ws2812 custom +VALID_RGB_MATRIX_TYPES := aw20216s is31fl3218 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a snled27351 ws2812 custom ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid RGB_MATRIX_DRIVER,RGB_MATRIX_DRIVER="$(RGB_MATRIX_DRIVER)" is not a valid matrix type) endif OPT_DEFS += -DRGB_MATRIX_ENABLE -ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) - # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines - OPT_DEFS += -DLIB8_ATTINY -endif + OPT_DEFS += -DRGB_MATRIX_$(strip $(shell echo $(RGB_MATRIX_DRIVER) | tr '[:lower:]' '[:upper:]')) + COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations/runners @@ -433,94 +455,91 @@ endif SRC += $(QUANTUM_DIR)/color.c SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix.c SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix_drivers.c - SRC += $(LIB_PATH)/lib8tion/lib8tion.c + LIB8TION_ENABLE := yes CIE1931_CURVE := yes RGB_KEYCODES_ENABLE := yes - ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216) - OPT_DEFS += -DAW20216 -DSTM32_SPI -DHAL_USE_SPI=TRUE + ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216s) + SPI_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led - SRC += aw20216.c - QUANTUM_LIB_SRC += spi_master.c + SRC += aw20216s.c + endif + + ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3218) + I2C_DRIVER_REQUIRED = yes + COMMON_VPATH += $(DRIVER_PATH)/led/issi + SRC += is31fl3218.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3731) - OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3731.c - QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3733) - OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3733.c - QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3736) - OPT_DEFS += -DIS31FL3736 -DSTM32_I2C -DHAL_USE_I2C=TRUE + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3736.c - QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3737) - OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3737.c - QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3741) - OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31fl3741.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3742a) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3742A -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3742a) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3743a) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3743A -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3743a) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3745) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3745 -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3745) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3746a) - OPT_DEFS += -DIS31FLCOMMON -DIS31FL3746A -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3746a) + OPT_DEFS += -DIS31FLCOMMON + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led/issi SRC += is31flcommon.c - QUANTUM_LIB_SRC += i2c_master.c endif - ifeq ($(strip $(RGB_MATRIX_DRIVER)), ckled2001) - OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE + ifeq ($(strip $(RGB_MATRIX_DRIVER)), snled27351) + I2C_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/led - SRC += ckled2001.c - QUANTUM_LIB_SRC += i2c_master.c + SRC += snled27351.c endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), ws2812) - OPT_DEFS += -DWS2812 WS2812_DRIVER_REQUIRED := yes endif ifeq ($(strip $(RGB_MATRIX_DRIVER)), apa102) - OPT_DEFS += -DAPA102 APA102_DRIVER_REQUIRED := yes endif @@ -567,6 +586,7 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) SRC += $(QUANTUM_DIR)/backlight/backlight.c SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c OPT_DEFS += -DBACKLIGHT_ENABLE + OPT_DEFS += -DBACKLIGHT_$(strip $(shell echo $(BACKLIGHT_DRIVER) | tr '[:lower:]' '[:upper:]')) ifneq ($(strip $(BACKLIGHT_DRIVER)), custom) SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c @@ -579,35 +599,6 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) endif endif -VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor - -WS2812_DRIVER ?= bitbang -ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes) - ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),) - $(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver) - endif - - OPT_DEFS += -DWS2812_DRIVER_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]')) - - SRC += ws2812_$(strip $(WS2812_DRIVER)).c - - ifeq ($(strip $(PLATFORM)), CHIBIOS) - ifeq ($(strip $(WS2812_DRIVER)), pwm) - OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE - endif - endif - - # add extra deps - ifeq ($(strip $(WS2812_DRIVER)), i2c) - QUANTUM_LIB_SRC += i2c_master.c - endif -endif - -ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes) - COMMON_VPATH += $(DRIVER_PATH)/led - SRC += apa102.c -endif - ifeq ($(strip $(CIE1931_CURVE)), yes) OPT_DEFS += -DUSE_CIE1931_CURVE LED_TABLES := yes @@ -622,8 +613,6 @@ ifeq ($(strip $(VIA_ENABLE)), yes) RAW_ENABLE := yes BOOTMAGIC_ENABLE := yes TRI_LAYER_ENABLE := yes - SRC += $(QUANTUM_DIR)/via.c - OPT_DEFS += -DVIA_ENABLE endif ifeq ($(strip $(VIAL_ENABLE)), yes) @@ -712,33 +701,35 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes) COMMON_VPATH += $(QUANTUM_PATH)/split_common endif -ifeq ($(strip $(CRC_ENABLE)), yes) - OPT_DEFS += -DCRC_ENABLE - SRC += crc.c -endif - ifeq ($(strip $(FNV_ENABLE)), yes) OPT_DEFS += -DFNV_ENABLE VPATH += $(LIB_PATH)/fnv SRC += qmk_fnv_type_validation.c hash_32a.c hash_64a.c endif +ifeq ($(strip $(LIB8TION_ENABLE)), yes) + ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162)) + # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines + OPT_DEFS += -DLIB8_ATTINY + endif + SRC += $(LIB_PATH)/lib8tion/lib8tion.c +endif + VALID_HAPTIC_DRIVER_TYPES := drv2605l solenoid ifeq ($(strip $(HAPTIC_ENABLE)),yes) ifeq ($(filter $(HAPTIC_DRIVER),$(VALID_HAPTIC_DRIVER_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid HAPTIC_DRIVER,HAPTIC_DRIVER="$(HAPTIC_DRIVER)" is not a valid Haptic driver) else + OPT_DEFS += -DHAPTIC_$(strip $(shell echo $(HAPTIC_DRIVER) | tr '[:lower:]' '[:upper:]')) COMMON_VPATH += $(DRIVER_PATH)/haptic ifeq ($(strip $(HAPTIC_DRIVER)), drv2605l) + I2C_DRIVER_REQUIRED = yes SRC += drv2605l.c - QUANTUM_LIB_SRC += i2c_master.c - OPT_DEFS += -DHAPTIC_DRV2605L endif ifeq ($(strip $(HAPTIC_DRIVER)), solenoid) SRC += solenoid.c - OPT_DEFS += -DHAPTIC_SOLENOID endif endif endif @@ -761,6 +752,7 @@ ifeq ($(strip $(OLED_ENABLE)), yes) $(call CATASTROPHIC_ERROR,Invalid OLED_TRANSPORT,OLED_TRANSPORT="$(OLED_TRANSPORT)" is not a valid OLED transport) else OPT_DEFS += -DOLED_ENABLE + OPT_DEFS += -DOLED_$(strip $(shell echo $(OLED_DRIVER) | tr '[:lower:]' '[:upper:]')) COMMON_VPATH += $(DRIVER_PATH)/oled ifneq ($(strip $(OLED_DRIVER)), custom) SRC += oled_driver.c @@ -768,10 +760,10 @@ ifeq ($(strip $(OLED_ENABLE)), yes) OPT_DEFS += -DOLED_TRANSPORT_$(strip $(shell echo $(OLED_TRANSPORT) | tr '[:lower:]' '[:upper:]')) ifeq ($(strip $(OLED_TRANSPORT)), i2c) - QUANTUM_LIB_SRC += i2c_master.c + I2C_DRIVER_REQUIRED = yes endif ifeq ($(strip $(OLED_TRANSPORT)), spi) - QUANTUM_LIB_SRC += spi_master.c + SPI_DRIVER_REQUIRED = yes endif endif endif @@ -779,9 +771,9 @@ endif ifeq ($(strip $(ST7565_ENABLE)), yes) OPT_DEFS += -DST7565_ENABLE + SPI_DRIVER_REQUIRED = yes COMMON_VPATH += $(DRIVER_PATH)/oled # For glcdfont.h COMMON_VPATH += $(DRIVER_PATH)/lcd - QUANTUM_LIB_SRC += spi_master.c SRC += st7565.c endif @@ -813,27 +805,6 @@ ifeq ($(strip $(UNICODE_COMMON)), yes) $(QUANTUM_DIR)/unicode/utf8.c endif -MAGIC_ENABLE ?= yes -ifeq ($(strip $(MAGIC_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/process_keycode/process_magic.c - OPT_DEFS += -DMAGIC_KEYCODE_ENABLE -endif - -SEND_STRING_ENABLE ?= yes -ifeq ($(strip $(SEND_STRING_ENABLE)), yes) - OPT_DEFS += -DSEND_STRING_ENABLE - COMMON_VPATH += $(QUANTUM_DIR)/send_string - SRC += $(QUANTUM_DIR)/send_string/send_string.c -endif - -ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c - OPT_DEFS += -DAUTO_SHIFT_ENABLE - ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes) - OPT_DEFS += -DAUTO_SHIFT_MODIFIERS - endif -endif - ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes) PS2_ENABLE := yes MOUSE_ENABLE := yes @@ -874,8 +845,8 @@ ifeq ($(strip $(JOYSTICK_ENABLE)), yes) SRC += $(QUANTUM_DIR)/joystick.c ifeq ($(strip $(JOYSTICK_DRIVER)), analog) + ANALOG_DRIVER_REQUIRED = yes OPT_DEFS += -DANALOG_JOYSTICK_ENABLE - SRC += analog.c endif ifeq ($(strip $(JOYSTICK_DRIVER)), digital) OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE @@ -913,23 +884,22 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) $(call CATASTROPHIC_ERROR,Invalid BLUETOOTH_DRIVER,BLUETOOTH_DRIVER="$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type) endif OPT_DEFS += -DBLUETOOTH_ENABLE + OPT_DEFS += -DBLUETOOTH_$(strip $(shell echo $(BLUETOOTH_DRIVER) | tr '[:lower:]' '[:upper:]')) NO_USB_STARTUP_CHECK := yes COMMON_VPATH += $(DRIVER_PATH)/bluetooth SRC += outputselect.c ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le) - OPT_DEFS += -DBLUETOOTH_BLUEFRUIT_LE -DHAL_USE_SPI=TRUE + SPI_DRIVER_REQUIRED = yes + ANALOG_DRIVER_REQUIRED = yes SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c SRC += $(DRIVER_PATH)/bluetooth/bluefruit_le.cpp - QUANTUM_LIB_SRC += analog.c - QUANTUM_LIB_SRC += spi_master.c endif ifeq ($(strip $(BLUETOOTH_DRIVER)), rn42) - OPT_DEFS += -DBLUETOOTH_RN42 -DHAL_USE_SERIAL=TRUE + UART_DRIVER_REQUIRED = yes SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c SRC += $(DRIVER_PATH)/bluetooth/rn42.c - QUANTUM_LIB_SRC += uart.c endif endif @@ -941,10 +911,51 @@ ifeq ($(strip $(ENCODER_ENABLE)), yes) endif endif -ifeq ($(strip $(OS_DETECTION_ENABLE)), yes) - SRC += $(QUANTUM_DIR)/os_detection.c - OPT_DEFS += -DOS_DETECTION_ENABLE - ifeq ($(strip $(OS_DETECTION_DEBUG_ENABLE)), yes) - OPT_DEFS += -DOS_DETECTION_DEBUG_ENABLE +VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor + +WS2812_DRIVER ?= bitbang +ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes) + ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),) + $(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver) endif + + OPT_DEFS += -DWS2812_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]')) + + SRC += ws2812_$(strip $(WS2812_DRIVER)).c + + ifeq ($(strip $(PLATFORM)), CHIBIOS) + ifeq ($(strip $(WS2812_DRIVER)), pwm) + OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE + endif + endif + + # add extra deps + ifeq ($(strip $(WS2812_DRIVER)), i2c) + I2C_DRIVER_REQUIRED = yes + endif +endif + +ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes) + COMMON_VPATH += $(DRIVER_PATH)/led + SRC += apa102.c +endif + +ifeq ($(strip $(ANALOG_DRIVER_REQUIRED)), yes) + OPT_DEFS += -DHAL_USE_ADC=TRUE + QUANTUM_LIB_SRC += analog.c +endif + +ifeq ($(strip $(I2C_DRIVER_REQUIRED)), yes) + OPT_DEFS += -DHAL_USE_I2C=TRUE + QUANTUM_LIB_SRC += i2c_master.c +endif + +ifeq ($(strip $(SPI_DRIVER_REQUIRED)), yes) + OPT_DEFS += -DHAL_USE_SPI=TRUE + QUANTUM_LIB_SRC += spi_master.c +endif + +ifeq ($(strip $(UART_DRIVER_REQUIRED)), yes) + OPT_DEFS += -DHAL_USE_SERIAL=TRUE + QUANTUM_LIB_SRC += uart.c endif diff --git a/builddefs/common_rules.mk b/builddefs/common_rules.mk index 41651a2cbf26..4f2a8e3f4dbc 100644 --- a/builddefs/common_rules.mk +++ b/builddefs/common_rules.mk @@ -12,6 +12,9 @@ vpath %.hpp $(VPATH_SRC) vpath %.S $(VPATH_SRC) VPATH := +# Helper to return the distinct elements of a list +uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1))) + # Convert all SRC to OBJ define OBJ_FROM_SRC $(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$(patsubst %.clib,$1/%.a,$($1_SRC)))))) @@ -188,7 +191,7 @@ DFU_SUFFIX_ARGS ?= elf: $(BUILD_DIR)/$(TARGET).elf hex: $(BUILD_DIR)/$(TARGET).hex uf2: $(BUILD_DIR)/$(TARGET).uf2 -cpfirmware: $(FIRMWARE_FORMAT) +cpfirmware_qmk: $(FIRMWARE_FORMAT) $(SILENT) || printf "Copying $(TARGET).$(FIRMWARE_FORMAT) to qmk_firmware folder" | $(AWK_CMD) $(COPY) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT) $(TARGET).$(FIRMWARE_FORMAT) && $(PRINT_OK) eep: $(BUILD_DIR)/$(TARGET).eep @@ -197,6 +200,15 @@ sym: $(BUILD_DIR)/$(TARGET).sym LIBNAME=lib$(TARGET).a lib: $(LIBNAME) +cpfirmware: cpfirmware_qmk + +ifneq ($(QMK_USERSPACE),) +cpfirmware: cpfirmware_userspace +cpfirmware_userspace: cpfirmware_qmk + $(SILENT) || printf "Copying $(TARGET).$(FIRMWARE_FORMAT) to userspace folder" | $(AWK_CMD) + $(COPY) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT) $(QMK_USERSPACE)/$(TARGET).$(FIRMWARE_FORMAT) && $(PRINT_OK) +endif + # Display size of file, modifying the output so people don't mistakenly grab the hex output BINARY_SIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(SED) -e 's/\.build\/.*$$/$(TARGET).$(FIRMWARE_FORMAT)/g' @@ -267,7 +279,7 @@ BEGIN = gccversion sizebefore # Note the obj.txt depeendency is there to force linking if a source file is deleted %.elf: $(OBJ) $(MASTER_OUTPUT)/cflags.txt $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/obj.txt | $(BEGIN) @$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) - $(eval CMD=MAKE=$(MAKE) $(CC) $(ALL_CFLAGS) $(filter-out %.txt,$^) --output $@ $(LDFLAGS)) + $(eval CMD=MAKE=$(MAKE) $(CC) $(ALL_CFLAGS) $(call uniq,$(OBJ)) --output $@ $(LDFLAGS)) @$(BUILD_CMD) @@ -383,31 +395,9 @@ dump_vars: objs-size: for i in $(OBJ); do echo $$i; done | sort | xargs $(SIZE) -ifeq ($(findstring avr-gcc,$(CC)),avr-gcc) -SIZE_MARGIN = 1024 +# size check optionally implemented in its platform.mk check-size: - $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) platforms/avr/bootloader_size.c 2> /dev/null | $(SED) -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) - $(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi)) - $(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE))) - $(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE))) - $(eval PERCENT_SIZE=$(shell expr $(CURRENT_SIZE) \* 100 / $(MAX_SIZE))) - if [ $(MAX_SIZE) -gt 0 ] && [ $(CURRENT_SIZE) -gt 0 ]; then \ - $(SILENT) || printf "$(MSG_CHECK_FILESIZE)" | $(AWK_CMD); \ - if [ $(CURRENT_SIZE) -gt $(MAX_SIZE) ]; then \ - printf "\n * $(MSG_FILE_TOO_BIG)"; $(PRINT_ERROR_PLAIN); \ - else \ - if [ $(FREE_SIZE) -lt $(SIZE_MARGIN) ]; then \ - $(PRINT_WARNING_PLAIN); printf " * $(MSG_FILE_NEAR_LIMIT)"; \ - else \ - $(PRINT_OK); $(SILENT) || printf " * $(MSG_FILE_JUST_RIGHT)"; \ - fi ; \ - fi ; \ - fi -else -check-size: - $(SILENT) || echo "$(MSG_CHECK_FILESIZE_SKIPPED)" -endif check-md5: $(MD5SUM) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT) diff --git a/builddefs/converters.mk b/builddefs/converters.mk index a3548afd609f..96c8656b253f 100644 --- a/builddefs/converters.mk +++ b/builddefs/converters.mk @@ -25,7 +25,9 @@ ifneq ($(CONVERT_TO),) -include $(CONVERTER)/pre_converter.mk PLATFORM_KEY = $(shell echo $(CONVERTER) | cut -d "/" -f2) - TARGET := $(TARGET)_$(CONVERT_TO) + + # force setting as value can be from environment + override TARGET := $(TARGET)_$(CONVERT_TO) # Configure any defaults OPT_DEFS += -DCONVERT_TO_$(shell echo $(CONVERT_TO) | tr '[:lower:]' '[:upper:]') diff --git a/builddefs/generic_features.mk b/builddefs/generic_features.mk index 4e058dcd2659..9c8695862554 100644 --- a/builddefs/generic_features.mk +++ b/builddefs/generic_features.mk @@ -13,39 +13,52 @@ # 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 +MAGIC_ENABLE ?= yes +SEND_STRING_ENABLE ?= yes +SPACE_CADET_ENABLE ?= yes GENERIC_FEATURES = \ + AUTO_SHIFT \ AUTOCORRECT \ CAPS_WORD \ COMBO \ COMMAND \ + CRC \ DEFERRED_EXEC \ DIGITIZER \ DIP_SWITCH \ DYNAMIC_KEYMAP \ DYNAMIC_MACRO \ + DYNAMIC_TAPPING_TERM \ GRAVE_ESC \ HAPTIC \ KEY_LOCK \ KEY_OVERRIDE \ LEADER \ + MAGIC \ + MOUSEKEY \ + MUSIC \ + OS_DETECTION \ PROGRAMMABLE_BUTTON \ REPEAT_KEY \ SECURE \ + SEND_STRING \ + SEQUENCER \ SPACE_CADET \ SWAP_HANDS \ TAP_DANCE \ - VELOCIKEY \ + TRI_LAYER \ + VIA \ + VIRTSER \ WPM \ - DYNAMIC_TAPPING_TERM \ - TRI_LAYER define HANDLE_GENERIC_FEATURE # $$(info "Processing: $1_ENABLE $2.c") SRC += $$(wildcard $$(QUANTUM_DIR)/process_keycode/process_$2.c) + SRC += $$(wildcard $$(QUANTUM_DIR)/$2/$2.c) SRC += $$(wildcard $$(QUANTUM_DIR)/$2.c) + VPATH += $$(wildcard $$(QUANTUM_DIR)/$2/) OPT_DEFS += -D$1_ENABLE endef diff --git a/builddefs/message.mk b/builddefs/message.mk index bf39554dab77..7c8f87f99006 100644 --- a/builddefs/message.mk +++ b/builddefs/message.mk @@ -91,7 +91,6 @@ MSG_AVAILABLE_KEYMAPS = $(eval $(call GENERATE_MSG_AVAILABLE_KEYMAPS))$(MSG_AVAI MSG_BOOTLOADER_NOT_FOUND_BASE = Bootloader not found. Make sure the board is in bootloader mode. See https://docs.qmk.fm/\#/newbs_flashing\n MSG_CHECK_FILESIZE = Checking file size of $(TARGET).$(FIRMWARE_FORMAT) -MSG_CHECK_FILESIZE_SKIPPED = (Firmware size check does not yet support $(MCU_ORIG); skipping) MSG_FILE_TOO_BIG = $(ERROR_COLOR)The firmware is too large!$(NO_COLOR) $(CURRENT_SIZE)/$(MAX_SIZE) ($(OVER_SIZE) bytes over)\n MSG_FILE_TOO_SMALL = The firmware is too small! $(CURRENT_SIZE)/$(MAX_SIZE)\n MSG_FILE_JUST_RIGHT = The firmware size is fine - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n @@ -104,6 +103,10 @@ MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) $(MSG_BOOTLOADER_NOT_ BOOTLOADER_RETRY_TIME ?= 0.5 MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = $(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel) +define WARNING_MESSAGE + $(shell printf "\n %-99s $(WARN_STRING)\n" "$1" >&2) +endef + define CATASTROPHIC_ERROR $(shell printf "\n * %-99s $(ERROR_STRING)\n" "$2" >&2) $(error $1) diff --git a/builddefs/show_options.mk b/builddefs/show_options.mk index 563d08988036..81d8400a8064 100644 --- a/builddefs/show_options.mk +++ b/builddefs/show_options.mk @@ -37,7 +37,6 @@ OTHER_OPTION_NAMES = \ UNICODEMAP_ENABLE \ UNICODE_COMMON \ AUTO_SHIFT_ENABLE \ - AUTO_SHIFT_MODIFIERS \ DYNAMIC_TAPPING_TERM_ENABLE \ COMBO_ENABLE \ KEY_LOCK_ENABLE \ @@ -60,7 +59,6 @@ OTHER_OPTION_NAMES = \ ENCODER_ENABLE_CUSTOM \ GERMAN_ENABLE \ HAPTIC_ENABLE \ - ISSI_ENABLE \ KEYLOGGER_ENABLE \ LCD_BACKLIGHT_ENABLE \ MACROS_ENABLED \ diff --git a/data/constants/keycodes/extras/keycodes_russian_typewriter_0.0.1.hjson b/data/constants/keycodes/extras/keycodes_russian_typewriter_0.0.1.hjson new file mode 100644 index 000000000000..6ad03c58e555 --- /dev/null +++ b/data/constants/keycodes/extras/keycodes_russian_typewriter_0.0.1.hjson @@ -0,0 +1,291 @@ +{ + "aliases": { +/* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ | │ № │ - │ / │ " │ : │ , │ . │ _ │ ? │ % │ ! │ ; │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ Й │ Ц │ У │ К │ Е │ Н │ Г │ Ш │ Щ │ З │ Х │ Ъ │ ) │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ Ф │ Ы │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Э │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ │ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б │ Ю │ Ё │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + "KC_GRV": { + "key": "RU_PIPE", + "label": "|", + } + "KC_1": { + "key": "RU_NUM", + "label": "№", + } + "KC_2": { + "key": "RU_MINS", + "label": "-", + } + "KC_3": { + "key": "RU_SLSH", + "label": "/", + } + "KC_4": { + "key": "RU_DQUO", + "label": "\"", + } + "KC_5": { + "key": "RU_COLN", + "label": ":", + } + "KC_6": { + "key": "RU_COMM", + "label": ",", + } + "KC_7": { + "key": "RU_DOT", + "label": ".", + } + "KC_8": { + "key": "RU_UNDS", + "label": "_", + } + "KC_9": { + "key": "RU_QUES", + "label": "?", + } + "KC_0": { + "key": "RU_PERC", + "label": "%", + } + "KC_MINS": { + "key": "RU_EXLM", + "label": "!", + } + "KC_EQL": { + "key": "RU_SCLN", + "label": ";", + } + "KC_Q": { + "key": "RU_SHTI", + "label": "Й", + } + "KC_W": { + "key": "RU_TSE", + "label": "Ц", + } + "KC_E": { + "key": "RU_U", + "label": "У", + } + "KC_R": { + "key": "RU_KA", + "label": "К", + } + "KC_T": { + "key": "RU_IE", + "label": "Е", + } + "KC_Y": { + "key": "RU_EN", + "label": "Н", + } + "KC_U": { + "key": "RU_GHE", + "label": "Г", + } + "KC_I": { + "key": "RU_SHA", + "label": "Ш", + } + "KC_O": { + "key": "RU_SHCH", + "label": "Щ", + } + "KC_P": { + "key": "RU_ZE", + "label": "З", + } + "KC_LBRC": { + "key": "RU_HA", + "label": "Х", + } + "KC_RBRC": { + "key": "RU_HARD", + "label": "Ъ", + } + "KC_BSLS": { + "key": "RU_RPRN", + "label": ")", + } + "KC_A": { + "key": "RU_EF", + "label": "Ф", + } + "KC_S": { + "key": "RU_YERU", + "label": "Ы", + } + "KC_D": { + "key": "RU_VE", + "label": "В", + } + "KC_F": { + "key": "RU_A", + "label": "А", + } + "KC_G": { + "key": "RU_PE", + "label": "П", + } + "KC_H": { + "key": "RU_ER", + "label": "Р", + } + "KC_J": { + "key": "RU_O", + "label": "О", + } + "KC_K": { + "key": "RU_EL", + "label": "Л", + } + "KC_L": { + "key": "RU_DE", + "label": "Д", + } + "KC_SCLN": { + "key": "RU_ZHE", + "label": "Ж", + } + "KC_QUOT": { + "key": "RU_E", + "label": "Э", + } + "KC_Z": { + "key": "RU_YA", + "label": "Я", + } + "KC_X": { + "key": "RU_CHE", + "label": "Ч", + } + "KC_C": { + "key": "RU_ES", + "label": "С", + } + "KC_V": { + "key": "RU_EM", + "label": "М", + } + "KC_B": { + "key": "RU_I", + "label": "И", + } + "KC_N": { + "key": "RU_TE", + "label": "Т", + } + "KC_M": { + "key": "RU_SOFT", + "label": "Ь", + } + "KC_COMM": { + "key": "RU_BE", + "label": "Б", + } + "KC_DOT": { + "key": "RU_YU", + "label": "Ю", + } + "KC_SLSH": { + "key": "RU_YO", + "label": "Ё", + } +/* Shifted symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ + │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ = │ \ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ( │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + "S(RU_PIPE)": { + "key": "RU_PLUS", + "label": "+", + } + "S(RU_NUM)": { + "key": "RU_1", + "label": "1", + } + "S(RU_MINS)": { + "key": "RU_2", + "label": "2", + } + "S(RU_SLSH)": { + "key": "RU_3", + "label": "3", + } + "S(RU_DQUO)": { + "key": "RU_4", + "label": "4", + } + "S(RU_COLN)": { + "key": "RU_5", + "label": "5", + } + "S(RU_COMM)": { + "key": "RU_6", + "label": "6", + } + "S(RU_DOT)": { + "key": "RU_7", + "label": "7", + } + "S(RU_UNDS)": { + "key": "RU_8", + "label": "8", + } + "S(RU_QUES)": { + "key": "RU_9", + "label": "9", + } + "S(RU_PERC)": { + "key": "RU_0", + "label": "0", + } + "S(RU_EXLM)": { + "key": "RU_EQL", + "label": "=", + } + "S(RU_SCLN)": { + "key": "RU_BSLS", + "label": "\\", + } + "S(RU_RPRN)": { + "key": "RU_LPRN", + "label": "(", + } +/* AltGr symbols + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ + * │ │ │ │ │ │ │ │ │ ₽ │ │ │ │ │ │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ + * │ │ │ │ │ │ │ │ │ │ │ │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ + * │ │ │ │ │ │ │ │ │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ + */ + "ALGR(RU_UNDS)": { + "key": "RU_RUBL", + "label": "₽", + } + } +} diff --git a/data/mappings/defaults.hjson b/data/mappings/defaults.hjson index 2bb00da22362..4a9f06c0da58 100644 --- a/data/mappings/defaults.hjson +++ b/data/mappings/defaults.hjson @@ -1,84 +1,84 @@ { "development_board": { - "promicro": { - "processor": "atmega32u4", - "bootloader": "caterina", - "pin_compatible": "promicro" + "bit_c_pro": { + "board": "QMK_PM2040", + "bootloader": "rp2040", + "processor": "RP2040" }, - "elite_c": { - "processor": "atmega32u4", - "bootloader": "atmel-dfu", - "pin_compatible": "promicro" + "blackpill_f401": { + "board": "BLACKPILL_STM32_F401", + "bootloader": "stm32-dfu", + "processor": "STM32F401" }, - "elite_pi": { - "processor": "RP2040", + "blackpill_f411": { + "board": "BLACKPILL_STM32_F411", + "bootloader": "stm32-dfu", + "processor": "STM32F411" + }, + "blok": { + "board": "QMK_BLOK", "bootloader": "rp2040", - "board": "QMK_PM2040" + "processor": "RP2040" }, - "proton_c": { - "processor": "STM32F303", + "bluepill": { + "board": "STM32_F103_STM32DUINO", + "bootloader": "stm32duino", + "processor": "STM32F103" + }, + "bonsai_c4": { + "board": "BONSAI_C4", "bootloader": "stm32-dfu", - "board": "QMK_PROTON_C" + "processor": "STM32F411" }, - "kb2040": { - "processor": "RP2040", + "elite_c": { + "bootloader": "atmel-dfu", + "pin_compatible": "promicro", + "processor": "atmega32u4" + }, + "elite_pi": { + "board": "QMK_PM2040", "bootloader": "rp2040", - "board": "QMK_PM2040" + "processor": "RP2040" }, - "promicro_rp2040": { - "processor": "RP2040", + "helios": { + "board": "QMK_PM2040", "bootloader": "rp2040", - "board": "QMK_PM2040" + "processor": "RP2040" }, - "blok": { - "processor": "RP2040", + "kb2040": { + "board": "QMK_PM2040", "bootloader": "rp2040", - "board": "QMK_BLOK" + "processor": "RP2040" }, - "michi": { - "processor": "RP2040", + "liatris": { + "board": "QMK_PM2040", "bootloader": "rp2040", - "board": "QMK_PM2040" + "processor": "RP2040" }, - "bit_c_pro": { - "processor": "RP2040", + "michi": { + "board": "QMK_PM2040", "bootloader": "rp2040", - "board": "QMK_PM2040" + "processor": "RP2040" }, - "bluepill": { - "processor": "STM32F103", - "bootloader": "stm32duino", - "board": "STM32_F103_STM32DUINO" + "promicro": { + "bootloader": "caterina", + "pin_compatible": "promicro", + "processor": "atmega32u4" }, - "blackpill_f401": { - "processor": "STM32F401", - "bootloader": "stm32-dfu", - "board": "BLACKPILL_STM32_F401" + "promicro_rp2040": { + "board": "QMK_PM2040", + "bootloader": "rp2040", + "processor": "RP2040" }, - "blackpill_f411": { - "processor": "STM32F411", + "proton_c": { + "board": "QMK_PROTON_C", "bootloader": "stm32-dfu", - "board": "BLACKPILL_STM32_F411" + "processor": "STM32F303" }, "stemcell": { - "processor": "STM32F411", + "board": "STEMCELL", "bootloader": "tinyuf2", - "board": "STEMCELL" - }, - "bonsai_c4": { - "processor": "STM32F411", - "bootloader": "stm32-dfu", - "board": "BONSAI_C4" - }, - "helios": { - "processor": "RP2040", - "bootloader": "rp2040", - "board": "QMK_PM2040" - }, - "liatris": { - "processor": "RP2040", - "bootloader": "rp2040", - "board": "QMK_PM2040" + "processor": "STM32F411" } } } diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index ab9a4a0e4527..26b437b51335 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -29,6 +29,9 @@ "BACKLIGHT_PIN": {"info_key": "backlight.pin"}, "BACKLIGHT_PINS": {"info_key": "backlight.pins", "value_type": "array"}, "BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"}, + "BACKLIGHT_DEFAULT_ON": {"info_key": "backlight.default.on", "value_type": "bool"}, + "BACKLIGHT_DEFAULT_BREATHING": {"info_key": "backlight.default.breathing", "value_type": "bool"}, + "BACKLIGHT_DEFAULT_LEVEL": {"info_key": "backlight.default.brightness", "value_type": "int"}, // Bootmagic "BOOTMAGIC_LITE_COLUMN": {"info_key": "bootmagic.matrix.1", "value_type": "int"}, @@ -45,10 +48,18 @@ // Combos "COMBO_TERM": {"info_key": "combo.term", "value_type": "int"}, + "DIP_SWITCH_MATRIX_GRID": {"info_key": "dip_switch.matrix_grid", "value_type": "array.array.int", "to_json": false}, + "DIP_SWITCH_PINS": {"info_key": "dip_switch.pins", "value_type": "array"}, + "DIP_SWITCH_PINS_RIGHT": {"info_key": "split.dip_switch.right.pins", "value_type": "array"}, + // Dynamic Keymap "DYNAMIC_KEYMAP_EEPROM_MAX_ADDR": {"info_key": "dynamic_keymap.eeprom_max_addr", "value_type": "int"}, "DYNAMIC_KEYMAP_LAYER_COUNT": {"info_key": "dynamic_keymap.layer_count", "value_type": "int"}, + // EEPROM + "WEAR_LEVELING_BACKING_SIZE": {"info_key": "eeprom.wear_leveling.backing_size", "value_type": "int", "to_json": false}, + "WEAR_LEVELING_LOGICAL_SIZE": {"info_key": "eeprom.wear_leveling.logical_size", "value_type": "int", "to_json": false}, + // Indicators "LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"}, "LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"}, @@ -63,13 +74,24 @@ "LEADER_TIMEOUT": {"info_key": "leader_key.timeout", "value_type": "int"}, // LED Matrix + "LED_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "led_matrix.sleep", "value_type": "bool"}, "LED_MATRIX_CENTER": {"info_key": "led_matrix.center_point", "value_type": "array.int"}, + "LED_MATRIX_KEYRELEASES": {"info_key": "led_matrix.react_on_keyup", "value_type": "bool"}, + "LED_MATRIX_LED_FLUSH_LIMIT": {"info_key": "led_matrix.led_flush_limit", "value_type": "int"}, + "LED_MATRIX_LED_PROCESS_LIMIT": {"info_key": "led_matrix.led_process_limit", "value_type": "int", "to_json": false}, "LED_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "led_matrix.max_brightness", "value_type": "int"}, "LED_MATRIX_SPD_STEP": {"info_key": "led_matrix.speed_steps", "value_type": "int"}, "LED_MATRIX_SPLIT": {"info_key": "led_matrix.split_count", "value_type": "array.int"}, "LED_MATRIX_TIMEOUT": {"info_key": "led_matrix.timeout", "value_type": "int"}, "LED_MATRIX_VAL_STEP": {"info_key": "led_matrix.val_steps", "value_type": "int"}, "LED_MATRIX_LED_COUNT": {"info_key": "led_matrix.led_count", "value_type": "int", "to_json": false}, + "LED_MATRIX_DEFAULT_ON": {"info_key": "led_matrix.default.on", "value_type": "bool"}, + "LED_MATRIX_DEFAULT_VAL": {"info_key": "led_matrix.default.val", "value_type": "int"}, + "LED_MATRIX_DEFAULT_SPD": {"info_key": "led_matrix.default.speed", "value_type": "int"}, + + // Locking Switch + "LOCKING_SUPPORT_ENABLE": {"info_key": "qmk.locking.enabled", "value_type": "bool"}, + "LOCKING_RESYNC_ENABLE": {"info_key": "qmk.locking.resync", "value_type": "bool"}, // LUFA Bootloader "QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"}, @@ -100,8 +122,12 @@ "PS2_DATA_PIN": {"info_key": "ps2.data_pin"}, // RGB Matrix + "RGB_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "rgb_matrix.sleep", "value_type": "bool"}, "RGB_MATRIX_CENTER": {"info_key": "rgb_matrix.center_point", "value_type": "array.int"}, "RGB_MATRIX_HUE_STEP": {"info_key": "rgb_matrix.hue_steps", "value_type": "int"}, + "RGB_MATRIX_KEYRELEASES": {"info_key": "rgb_matrix.react_on_keyup", "value_type": "bool"}, + "RGB_MATRIX_LED_FLUSH_LIMIT": {"info_key": "rgb_matrix.led_flush_limit", "value_type": "int"}, + "RGB_MATRIX_LED_PROCESS_LIMIT": {"info_key": "rgb_matrix.led_process_limit", "value_type": "int", "to_json": false}, "RGB_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "rgb_matrix.max_brightness", "value_type": "int"}, "RGB_MATRIX_SAT_STEP": {"info_key": "rgb_matrix.sat_steps", "value_type": "int"}, "RGB_MATRIX_SPD_STEP": {"info_key": "rgb_matrix.speed_steps", "value_type": "int"}, @@ -109,6 +135,11 @@ "RGB_MATRIX_TIMEOUT": {"info_key": "rgb_matrix.timeout", "value_type": "int"}, "RGB_MATRIX_VAL_STEP": {"info_key": "rgb_matrix.val_steps", "value_type": "int"}, "RGB_MATRIX_LED_COUNT": {"info_key": "rgb_matrix.led_count", "value_type": "int", "to_json": false}, + "RGB_MATRIX_DEFAULT_ON": {"info_key": "rgb_matrix.default.on", "value_type": "bool"}, + "RGB_MATRIX_DEFAULT_HUE": {"info_key": "rgb_matrix.default.hue", "value_type": "int"}, + "RGB_MATRIX_DEFAULT_SAT": {"info_key": "rgb_matrix.default.sat", "value_type": "int"}, + "RGB_MATRIX_DEFAULT_VAL": {"info_key": "rgb_matrix.default.val", "value_type": "int"}, + "RGB_MATRIX_DEFAULT_SPD": {"info_key": "rgb_matrix.default.speed", "value_type": "int"}, // RGBLight "RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"}, @@ -124,6 +155,11 @@ "RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "bool"}, "RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "bool"}, "RGBLIGHT_VAL_STEP": {"info_key": "rgblight.brightness_steps", "value_type": "int"}, + "RGBLIGHT_DEFAULT_ON": {"info_key": "rgblight.default.on", "value_type": "bool"}, + "RGBLIGHT_DEFAULT_HUE": {"info_key": "rgblight.default.hue", "value_type": "int"}, + "RGBLIGHT_DEFAULT_SAT": {"info_key": "rgblight.default.sat", "value_type": "int"}, + "RGBLIGHT_DEFAULT_VAL": {"info_key": "rgblight.default.val", "value_type": "int"}, + "RGBLIGHT_DEFAULT_SPD": {"info_key": "rgblight.default.speed", "value_type": "int"}, "RGBW": {"info_key": "rgblight.rgbw", "value_type": "bool"}, // Secure @@ -134,13 +170,23 @@ // Split Keyboard "SOFT_SERIAL_PIN": {"info_key": "split.soft_serial_pin"}, "SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"}, - "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_HAND_MATRIX_GRID": {"info_key": "split.handedness.matrix_grid", "value_type": "array", "to_c": false}, + "SPLIT_HAND_PIN": {"info_key": "split.handedness.pin"}, "SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"}, "SPLIT_USB_TIMEOUT": {"info_key": "split.usb_detect.timeout", "value_type": "int"}, "SPLIT_USB_TIMEOUT_POLL": {"info_key": "split.usb_detect.polling_interval", "value_type": "int"}, "SPLIT_WATCHDOG_ENABLE": {"info_key": "split.transport.watchdog", "value_type": "bool"}, "SPLIT_WATCHDOG_TIMEOUT": {"info_key": "split.transport.watchdog_timeout", "value_type": "int"}, + "SPLIT_ACTIVITY_ENABLE": {"info_key": "split.transport.sync.activity", "value_type": "bool"}, + "SPLIT_DETECTED_OS_ENABLE": {"info_key": "split.transport.sync.detected_os", "value_type": "bool"}, + "SPLIT_HAPTIC_ENABLE": {"info_key": "split.transport.sync.haptic", "value_type": "bool"}, + "SPLIT_LAYER_STATE_ENABLE": {"info_key": "split.transport.sync.layer_state", "value_type": "bool"}, + "SPLIT_LED_STATE_ENABLE": {"info_key": "split.transport.sync.indicators", "value_type": "bool"}, + "SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync.matrix_state", "value_type": "bool"}, + "SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync.modifiers", "value_type": "bool"}, + "SPLIT_OLED_ENABLE": {"info_key": "split.transport.sync.oled", "value_type": "bool"}, + "SPLIT_ST7565_ENABLE": {"info_key": "split.transport.sync.st7565", "value_type": "bool"}, + "SPLIT_WPM_ENABLE": {"info_key": "split.transport.sync.wpm", "value_type": "bool"}, // Tapping "HOLD_ON_OTHER_KEY_PRESS": {"info_key": "tapping.hold_on_other_key_press", "value_type": "bool"}, @@ -190,4 +236,9 @@ "PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"}, "PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.pid` in info.json"}, "VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.vid` in info.json"}, + + // Items we want flagged in lint + "VIAL_KEYBOARD_UID": {"info_key": "_invalid.vial_uid", "invalid": true}, + "VIAL_UNLOCK_COMBO_COLS": {"info_key": "_invalid.vial_unlock_cols", "invalid": true}, + "VIAL_UNLOCK_COMBO_ROWS": {"info_key": "_invalid.vial_unlock_rows", "invalid": true} } diff --git a/data/mappings/info_rules.hjson b/data/mappings/info_rules.hjson index 07191551da8f..02fc2bee9de6 100644 --- a/data/mappings/info_rules.hjson +++ b/data/mappings/info_rules.hjson @@ -17,6 +17,7 @@ "BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false}, "BOOTMAGIC_ENABLE": {"info_key": "bootmagic.enabled", "value_type": "bool"}, "CAPS_WORD_ENABLE": {"info_key": "caps_word.enabled", "value_type": "bool"}, + "DIP_SWITCH_ENABLE": {"info_key": "dip_switch.enabled", "value_type": "bool"}, "DEBOUNCE_TYPE": {"info_key": "build.debounce_type"}, "EEPROM_DRIVER": {"info_key": "eeprom.driver"}, "ENCODER_ENABLE": {"info_key": "encoder.enabled", "value_type": "bool"}, @@ -42,6 +43,7 @@ "STENO_ENABLE": {"info_key": "stenography.enabled", "value_type": "bool"}, "STENO_PROTOCOL": {"info_key": "stenography.protocol"}, "WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"}, + "WEAR_LEVELING_DRIVER": {"info_key": "eeprom.wear_leveling.driver"}, "WS2812_DRIVER": {"info_key": "ws2812.driver"}, // Items we want flagged in lint diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson index 60c5deaad5e0..90f32ee6acca 100644 --- a/data/mappings/keyboard_aliases.hjson +++ b/data/mappings/keyboard_aliases.hjson @@ -4,6 +4,13 @@ // "target": "" // } // + + /* This list of aliases is for testing purposes -- ensures "linked list" recursive traversal works correctly. */ + "_test_a": { "target": "_test_b" }, + "_test_b": { "target": "_test_c" }, + "_test_c": { "target": "planck/rev6" }, + + /* The main list of aliases for moved keyboards within QMK. */ "2_milk": { "target": "spaceman/2_milk" }, @@ -35,7 +42,7 @@ "target": "amjkeyboard/amjpad" }, "angel64": { - "target": "angel64/alpha" + "target": "kakunpc/angel64/alpha" }, "ashpil/modelm_usbc": { "target": "ibm/model_m/ashpil_usbc" @@ -47,10 +54,10 @@ "target": "viktus/at101_bh" }, "atom47/rev2": { - "target": "maartenwut/atom47/rev2" + "target": "evyd13/atom47/rev2" }, "atom47/rev3": { - "target": "maartenwut/atom47/rev3" + "target": "evyd13/atom47/rev3" }, "bakeneko60": { "target": "kkatano/bakeneko60" @@ -65,7 +72,7 @@ "target": "bear_face/v1" }, "bm16a": { - "target": "kprepublic/bm16a" + "target": "kprepublic/bm16a/v1" }, "bm16s": { "target": "kprepublic/bm16s" @@ -77,16 +84,16 @@ "target": "kprepublic/bm43a" }, "bm60poker": { - "target": "kprepublic/bm60poker" + "target": "kprepublic/bm60hsrgb_poker/rev1" }, "bm60rgb": { - "target": "kprepublic/bm60rgb" + "target": "kprepublic/bm60hsrgb/rev1" }, "bm60rgb_iso": { - "target": "kprepublic/bm60rgb_iso" + "target": "kprepublic/bm60hsrgb_iso/rev1" }, "bm68rgb": { - "target": "kprepublic/bm68rgb" + "target": "kprepublic/bm68hsrgb/rev1" }, "bpiphany/pegasushoof": { "target": "bpiphany/pegasushoof/2013" @@ -136,11 +143,17 @@ "daisy": { "target": "ktec/daisy" }, + "dp3000": { + "target": "dp3000/rev1" + }, "drakon": { "target": "jagdpietr/drakon" }, "durgod/k320": { - "target": "durgod/k3x0/k320" + "target": "durgod/k320/base" + }, + "durgod/k3x0/k320": { + "target": "durgod/k320/base" }, "durgod/hades": { "target": "durgod/dgk6x/hades_ansi" @@ -166,6 +179,9 @@ "dztech/volcano660": { "target": "ilumkb/volcano660" }, + "dztech/og60": { + "target": "dztech/tofu60" + }, "eek": { "target": "eek/silk_down" }, @@ -199,6 +215,9 @@ "handwired/dactyl_manuform/6x6_kinesis": { "target": "handwired/dactyl_kinesis" }, + "handwired/dactyl_manuform/dmote/62key": { + "target": "handwired/dmote" + }, "handwired/ferris": { "target": "ferris/0_1" }, @@ -269,7 +288,7 @@ "target": "idb/idb_60" }, "idobo": { - "target": "idobao/id75" + "target": "idobao/id75/v1" }, "jacky_studio/piggy60": { "target": "jacky_studio/piggy60/rev1" @@ -391,6 +410,9 @@ "maartenwut/wonderland": { "target": "evyd13/wonderland" }, + "matchstickworks/southpad": { + "target": "matchstickworks/southpad/rev2/" + }, "matrix/m12og": { "target": "matrix/m12og/rev1" }, @@ -401,7 +423,7 @@ "target": "mechlovin/adelais/rgb_led/rev1" }, "mechlovin/adelais/standard_led": { - "target": "mechlovin/adelais/standard_led/rev2" + "target": "mechlovin/adelais/standard_led/arm/rev2" }, "mechlovin/delphine": { "target": "mechlovin/delphine/mono_led" @@ -455,10 +477,10 @@ "target": "pabile/p20/ver1" }, "pancake/feather": { - "target": "spaceman/pancake/feather" + "target": "spaceman/pancake/rev1/feather" }, "pancake/promicro": { - "target": "spaceman/pancake/promicro" + "target": "spaceman/pancake/rev1/promicro" }, "peiorisboards/ixora": { "target": "coarse/ixora" @@ -467,7 +489,7 @@ "target": "dm9records/plaid" }, "plain60": { - "target": "maartenwut/plain60" + "target": "evyd13/plain60" }, "ploopyco/trackball": { "target": "ploopyco/trackball/rev1_005" @@ -503,10 +525,10 @@ "target": "wilba_tech/rama_works_u80_a" }, "ramonimbao/herringbone": { - "target": "ramonimbao/herringbone/v1" + "target": "rmi_kb/herringbone/v1" }, "ramonimbao/mona": { - "target": "ramonimbao/mona/v1" + "target": "rmi_kb/mona/v1" }, "rgbkb/pan": { "target": "rgbkb/pan/rev1/32a" @@ -542,10 +564,10 @@ "target": "tkw/stoutgat/v1" }, "suihankey": { - "target": "suihankey/split/alpha" + "target": "kakunpc/suihankey/split/alpha" }, "ta65": { - "target": "maartenwut/ta65" + "target": "evyd13/ta65" }, "tartan": { "target": "dm9records/tartan" @@ -563,13 +585,13 @@ "target": "matthewdias/txuu" }, "underscore33": { - "target": "underscore33/rev1" + "target": "tominabox1/underscore33/rev1" }, "vinta": { "target": "coarse/vinta" }, "wasdat": { - "target": "maartenwut/wasdat" + "target": "evyd13/wasdat" }, "westfoxtrot/cypher": { "target": "westfoxtrot/cypher/rev1" @@ -581,10 +603,10 @@ "target": "xiudi/xd002" }, "xd004": { - "target": "xiudi/xd004" + "target": "xiudi/xd004/v1" }, "xd60": { - "target": "xiudi/xd60" + "target": "xiudi/xd60/rev2" }, "xd68": { "target": "xiudi/xd68" @@ -831,7 +853,7 @@ "target": "kagizaraya/halberd" }, "handwired/hillside/0_1": { - "target": "handwired/hillside/48" + "target": "hillside/48/0_1" }, "hecomi/alpha": { "target": "takashiski/hecomi/alpha" @@ -843,10 +865,10 @@ "target": "bpiphany/hid_liber" }, "id67/default_rgb": { - "target": "idobao/id67/default_rgb" + "target": "idobao/id67" }, "id67/rgb": { - "target": "idobao/id67/rgb" + "target": "idobao/id67" }, "id80": { "target": "idobao/id80/v2/ansi" @@ -884,6 +906,18 @@ "kelowna/rgb64": { "target": "weirdo/kelowna/rgb64" }, + "keychron/q0": { + "target": "keychron/q0/base" + }, + "keychron/q1": { + "target": "keychron/q1v1/ansi" + } + "keychron/q4": { + "target": "keychron/q4/ansi/v1" + } + "kprepublic/bm40hsrgb": { + "target": "kprepublic/bm40hsrgb/rev1" + }, "kprepublic/bm65hsrgb_iso": { "target": "kprepublic/bm65hsrgb_iso/rev1" }, @@ -1184,6 +1218,12 @@ "setta21": { "target": "salicylic_acid3/setta21" }, + "soda/mango": { + "target": "magic_force/mf17" + }, + "soda/pocket": { + "target": "magic_force/mf34" + }, "space_space/rev1": { "target": "qpockets/space_space/rev1" }, @@ -1208,6 +1248,9 @@ "stella": { "target": "hnahkb/stella" }, + "studiokestra/line_tkl": { + "target": "studiokestra/line_friends_tkl" + }, "suihankey/alpha": { "target": "kakunpc/suihankey/alpha" }, @@ -1236,7 +1279,7 @@ "target": "marksard/treadstone48/rev2" }, "tronguylabs/m122_3270": { - "target": "ibm/model_m_122/m122_3270" + "target": "ibm/model_m_122/m122_3270/teensy" }, "ua62": { "target": "nacly/ua62" @@ -1290,7 +1333,7 @@ "target": "ydkb/yd68" }, "ymd75": { - "target": "ymdk/ymd75" + "target": "ymdk/ymd75/rev1" }, "ymd96": { "target": "ymdk/ymd96" @@ -1312,5 +1355,9 @@ }, "zinc/reva": { "target": "25keys/zinc/reva" + }, + // Moved during 2023 Q4 cycle + "ymdk/melody96": { + "target": "ymdk/melody96/soldered" } } diff --git a/data/schemas/definitions.jsonschema b/data/schemas/definitions.jsonschema index b9c64a55ec44..a1fdd2dcc680 100644 --- a/data/schemas/definitions.jsonschema +++ b/data/schemas/definitions.jsonschema @@ -3,10 +3,25 @@ "$id": "qmk.definitions.v1", "title": "Common definitions used across QMK's jsonschemas.", "type": "object", + "bcd_version": { + "type": "string", + "pattern": "^[0-9]{1,2}\\.[0-9]\\.[0-9]$" + }, + "bit": { + "type": "integer", + "minimum": 0, + "maximum": 1 + }, "boolean_array": { "type": "object", "additionalProperties": {"type": "boolean"} }, + "build_target": { + "oneOf": [ + {"$ref": "#/keyboard_keymap_tuple"}, + {"$ref": "#/json_file_path"} + ] + }, "filename": { "type": "string", "minLength": 1, @@ -20,14 +35,56 @@ "type": "string", "pattern": "^0x[0-9A-F]{4}$" }, - "bcd_version": { + "json_file_path": { "type": "string", - "pattern": "^[0-9]{1,2}\\.[0-9]\\.[0-9]$" + "pattern": "^[0-9a-z_/\\-]+\\.json$" }, - "text_identifier": { + "key_unit": { + "type": "number" + }, + "keyboard": { "type": "string", - "minLength": 1, - "maxLength": 250 + "pattern": "^[0-9a-z][0-9a-z_/]*$" + }, + "keyboard_keymap_tuple": { + "type": "array", + "prefixItems": [ + {"$ref": "#/keyboard"}, + {"$ref": "#/filename"} + ], + "unevaluatedItems": false + }, + "keycode": { + "type": "string", + "minLength": 2, + "maxLength": 50, + "pattern": "^[A-Z][A-Zs_0-9]*$" + }, + "keycode_decl": { + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": {"$ref": "#/keycode"}, + "label": {"$ref": "#/text_identifier"}, + "aliases": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/keycode_short"} + } + } + }, + "keycode_decl_array": { + "type": "array", + "minItems": 1, + "items": {"$ref": "#/keycode_decl"} + }, + "keycode_short": { + "type": "string", + "minLength": 2, + "maxLength": 7, + "pattern": "^[A-Z][A-Zs_0-9]*$" }, "layout_macro": { "oneOf": [ @@ -64,49 +121,6 @@ } ] }, - "key_unit": { - "type": "number" - }, - "keyboard": { - "type": "string", - "pattern": "^[0-9a-z][0-9a-z_/]*$" - }, - "keycode": { - "type": "string", - "minLength": 2, - "maxLength": 50, - "pattern": "^[A-Z][A-Zs_0-9]*$" - }, - "keycode_short": { - "type": "string", - "minLength": 2, - "maxLength": 7, - "pattern": "^[A-Z][A-Zs_0-9]*$" - }, - "keycode_decl": { - "type": "object", - "required": [ - "key" - ], - "properties": { - "key": {"$ref": "#/keycode"}, - "label": {"$ref": "#/text_identifier"}, - "aliases": { - "type": "array", - "minItems": 1, - "items": {"$ref": "#/keycode_short"} - } - } - }, - "keycode_decl_array": { - "type": "array", - "minItems": 1 - "items": {"$ref": "#/keycode_decl"} - }, - "mcu_pin_array": { - "type": "array", - "items": {"$ref": "#/mcu_pin"} - }, "mcu_pin": { "oneOf": [ { @@ -125,14 +139,14 @@ "type": "string", "pattern": "^GP\\d{1,2}$" }, - { - "type": "integer" - }, - { - "type": "null" - } + {"type": "integer"}, + {"type": "null"} ] }, + "mcu_pin_array": { + "type": "array", + "items": {"$ref": "#/mcu_pin"} + }, "signed_decimal": { "type": "number" }, @@ -144,17 +158,22 @@ "minimum": -127, "maximum": 127 }, + "snake_case": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*$" + }, "string_array": { "type": "array", - "items": { - "type": "string" - } + "items": {"type": "string"} }, "string_object": { "type": "object", - "additionalProperties": { - "type": "string" - } + "additionalProperties": {"type": "string"} + }, + "text_identifier": { + "type": "string", + "minLength": 1, + "maxLength": 250 }, "unsigned_decimal": { "type": "number", @@ -168,10 +187,5 @@ "type": "integer", "minimum": 0, "maximum": 255 - }, - "bit": { - "type": "integer", - "minimum": 0, - "maximum": 1 } } diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 3765bf25ba57..e04b8f62e6db 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -20,7 +20,15 @@ } } } - } + }, + "dip_switch_config": { + "type": "object", + "properties": { + "pins": { + "$ref": "qmk.definitions.v1#/mcu_pin_array" + } + } + }, }, "type": "object", "not": { "required": [ "vendorId", "productId" ] }, // reject via keys... @@ -128,6 +136,15 @@ "type": "string", "enum": ["pwm", "software", "timer", "custom"] }, + "default": { + "type": "object", + "additionalProperties": false, + "properties": { + "on": {"type": "boolean"}, + "breathing": {"type": "boolean"}, + "brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + } + }, "breathing": {"type": "boolean"}, "breathing_period": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, "levels": { @@ -246,9 +263,40 @@ "type": "array", "items": {"$ref": "qmk.definitions.v1#/filename"} }, + "dip_switch": { + "$ref": "#/definitions/dip_switch_config", + "properties": { + "enabled": {"type": "boolean"}, + "matrix_grid": { + "type": "array", + "minItems": 1, + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": { + "type": "integer", + "minimum": 0 + } + } + } + } + }, "eeprom": { "properties": { - "driver": {"type": "string"} + "driver": {"type": "string"}, + "wear_leveling": { + "type": "object", + "additionalProperties": false, + "properties": { + "driver": { + "type": "string", + "enum": ["custom", "embedded_flash", "legacy", "rp2040_flash", "spi_flash"] + }, + "backing_size": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "logical_size": {"$ref": "qmk.definitions.v1#/unsigned_int"} + } + } } }, "encoder": { @@ -257,7 +305,11 @@ "enabled": {"type": "boolean"} } }, - "features": {"$ref": "qmk.definitions.v1#/boolean_array"}, + "features": { + "$ref": "qmk.definitions.v1#/boolean_array", + "propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" } + + }, "indicators": { "type": "object", "properties": { @@ -297,6 +349,7 @@ "additionalProperties": false, "required": ["x", "y"], "properties": { + "encoder": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "label": { "type": "string", "pattern": "^[^\\n]*$" @@ -371,10 +424,21 @@ "properties": { "animations": { "type": "object", + "propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" } "additionalProperties": { "type": "boolean" } }, + "default": { + "type": "object", + "additionalProperties": false, + "properties": { + "on": {"type": "boolean"}, + "animation": {"type": "string"}, + "val": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + } + }, "driver": {"type": "string"}, "center_point": { "type": "array", @@ -386,6 +450,10 @@ "timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "val_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "speed_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_flush_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_process_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "react_on_keyup": {"type": "boolean"}, + "sleep": {"type": "boolean"}, "split_count": { "type": "array", "minItems": 2, @@ -420,10 +488,23 @@ "properties": { "animations": { "type": "object", + "propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" } "additionalProperties": { "type": "boolean" } }, + "default": { + "type": "object", + "additionalProperties": false, + "properties": { + "on": {"type": "boolean"}, + "animation": {"type": "string"}, + "hue": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "sat": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "val": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + } + }, "driver": {"type": "string"}, "center_point": { "type": "array", @@ -437,6 +518,10 @@ "sat_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "val_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "speed_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_flush_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_process_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "react_on_keyup": {"type": "boolean"}, + "sleep": {"type": "boolean"}, "split_count": { "type": "array", "minItems": 2, @@ -472,11 +557,24 @@ "properties": { "animations": { "type": "object", + "propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" } "additionalProperties": { "type": "boolean" } }, "brightness_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "default": { + "type": "object", + "additionalProperties": false, + "properties": { + "on": {"type": "boolean"}, + "animation": {"type": "string"}, + "hue": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "sat": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "val": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, + "speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"} + } + }, "driver": { "type": "string", "enum": ["apa102", "custom", "ws2812"] @@ -587,10 +685,6 @@ } } }, - "matrix_grid": { - "type": "array", - "items": {"$ref": "qmk.definitions.v1#/mcu_pin"} - }, "matrix_pins": { "type": "object", "additionalProperties": false, @@ -610,6 +704,15 @@ } } }, + "dip_switch": { + "type": "object", + "additionalProperties": false, + "properties": { + "right": { + "$ref": "#/definitions/dip_switch_config" + } + } + }, "encoder": { "type": "object", "additionalProperties": false, @@ -619,9 +722,17 @@ } } }, - "main": { - "type": "string", - "enum": ["eeprom", "left", "matrix_grid", "pin", "right"] + "handedness": { + "type": "object", + "additionalProperties": false, + "properties": { + "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "matrix_grid": { + "$ref": "qmk.definitions.v1#/mcu_pin_array", + "minItems": 2, + "maxItems": 2 + } + } }, "soft_serial_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}, "soft_serial_speed": { @@ -637,10 +748,32 @@ "type": "string", "enum": ["custom", "i2c", "serial", "serial_usart"] }, - "sync_matrix_state": {"type": "boolean"}, - "sync_modifiers": {"type": "boolean"}, + "sync": { + "type": "object", + "additionalProperties": false, + "properties": { + "activity": {"type": "boolean"}, + "detected_os": {"type": "boolean"}, + "haptic": {"type": "boolean"}, + "layer_state": {"type": "boolean"}, + "indicators": {"type": "boolean"}, + "matrix_state": {"type": "boolean"}, + "modifiers": {"type": "boolean"}, + "oled": {"type": "boolean"}, + "st7565": {"type": "boolean"}, + "wpm": {"type": "boolean"} + } + } "watchdog": {"type": "boolean"}, - "watchdog_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"} + "watchdog_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "sync_matrix_state": { + "type": "boolean", + "$comment": "Deprecated: use sync.matrix_state instead" + }, + "sync_modifiers": { + "type": "boolean", + "$comment": "Deprecated: use sync.modifiers instead" + } } }, "usb_detect": { @@ -651,6 +784,16 @@ "polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"} } + }, + "main": { + "type": "string", + "enum": ["eeprom", "left", "matrix_grid", "pin", "right"], + "$comment": "Deprecated: use config.h options for now" + }, + "matrix_grid": { + "type": "array", + "items": {"$ref": "qmk.definitions.v1#/mcu_pin"}, + "$comment": "Deprecated: use split.handedness.matrix_grid instead" } } }, @@ -708,7 +851,15 @@ "properties": { "keys_per_scan": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, "tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"}, - "tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"} + "tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "locking": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": {"type": "boolean"}, + "resync": {"type": "boolean"} + } + } } }, "qmk_lufa_bootloader": { diff --git a/data/schemas/user_repo_v0.jsonschema b/data/schemas/user_repo_v0.jsonschema new file mode 100644 index 000000000000..b18ac504284b --- /dev/null +++ b/data/schemas/user_repo_v0.jsonschema @@ -0,0 +1,14 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema#", + "$id": "qmk.user_repo.v0", + "title": "User Repository Information", + "type": "object", + "required": [ + "userspace_version" + ], + "properties": { + "userspace_version": { + "type": "string", + }, + } +} diff --git a/data/schemas/user_repo_v1.jsonschema b/data/schemas/user_repo_v1.jsonschema new file mode 100644 index 000000000000..6cdf758685c5 --- /dev/null +++ b/data/schemas/user_repo_v1.jsonschema @@ -0,0 +1,22 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema#", + "$id": "qmk.user_repo.v1", + "title": "User Repository Information", + "type": "object", + "required": [ + "userspace_version", + "build_targets" + ], + "properties": { + "userspace_version": { + "type": "string", + "enum": ["1.0"] + }, + "build_targets": { + "type": "array", + "items": { + "$ref": "qmk.definitions.v1#/build_target" + } + } + } +} diff --git a/docs/ChangeLog/20231126.md b/docs/ChangeLog/20231126.md new file mode 100644 index 000000000000..61cff520c805 --- /dev/null +++ b/docs/ChangeLog/20231126.md @@ -0,0 +1,336 @@ +# QMK Breaking Changes - 2023 November 26 Changelog + +## Notable Features :id=notable-features + +As per last few breaking changes cycles, there have been _a lot_ of behind-the-scenes changes, mainly around consolidation of config into `info.json` files, cleanup of `info.json` files, cleaning up driver naming, as well as addressing technical debt. + +As a followup to last cycle's [notable changes](20230827.md#notable-changes), as `qmk/qmk_firmware` is no longer accepting PRs for keymaps we're pleased to announce that storing and building keymaps externally from the normal QMK Firmware repository is now possible. This is done through the new [External Userspace](newbs_external_userspace.md) feature, more details below! + +## Changes Requiring User Action :id=changes-requiring-user-action + +### Updated Keyboard Codebases :id=updated-keyboard-codebases + +| Old Keyboard Name | New Keyboard Name | +|---------------------------------------|-------------------------------| +| adm42 | adm42/rev4 | +| dp3000 | dp3000/rev1 | +| handwired/dactyl_manuform/dmote/62key | handwired/dmote | +| keychron/q0/rev_0130 | keychron/q0/base | +| keychron/q0/rev_0131 | keychron/q0/plus | +| keychron/q1/ansi | keychron/q1v1/ansi | +| keychron/q1/ansi_encoder | keychron/q1v1/ansi_encoder | +| keychron/q1/iso | keychron/q1v1/iso | +| keychron/q1/iso_encoder | keychron/q1v1/iso_encoder | +| keychron/q4/ansi_v1 | keychron/q4/ansi | +| kprepublic/bm40hsrgb | kprepublic/bm40hsrgb/rev1 | +| matchstickworks/southpad | matchstickworks/southpad/rev2 | +| soda/mango | magic_force/mf17 | +| soda/pocket | magic_force/mf34 | +| studiokestra/line_tkl | studiokestra/line_friends_tkl | +| ymdk/melody96 | ymdk/melody96/soldered | + +## Notable core changes :id=notable-core + +### External Userspace ([#22222](https://github.com/qmk/qmk_firmware/pull/22222)) + +As mentioned above, the new External Userspace feature allows for keymaps to be stored and built externally from the main QMK Firmware repository. This allows for keymaps to be stored separately -- usually in their own repository -- and for users to be able to maintain and build their keymaps without needing to fork the main QMK Firmware repository. + +See the [External Userspace documentation](newbs_external_userspace.md) for more details. + +A significant portion of user keymaps have already been removed from `qmk/qmk_firmware` and more will follow in coming weeks. You can still recover your keymap from the tag [user-keymaps-still-present](https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present) if required -- a perfect time to migrate to the new External Userspace! + +!> This feature is still in beta, and we're looking for feedback on it. Please try it out and let us know what you think -- a new `#help-userspace` channel has been set up on Discord. + +### Improve and Cleanup Shutdown callbacks ([#21060](https://github.com/qmk/qmk_firmware/pull/20160)) :id=improve-and-cleanup-shutdown-callbacks + +Shutdown callbacks at the keyboard level were never present, preventing safe shutdown sequencing for peripherals such as OLEDs, RGB LEDs, and other devices. This PR adds a new `shutdown_kb` function, as well as amending `shutdown_user`, allowing for safe shutdown of peripherals at both keyboard and keymap level. + +See the [Keyboard Shutdown/Reboot Code](custom_quantum_functions.md#keyboard-shutdown-reboot-code) documentation for more details. + +### OLED Force Flush ([#20953](https://github.com/qmk/qmk_firmware/pull/20953)) :id=oled-force-flush + +Along with the new `shutdown_kb` function, a new API `oled_render_dirty(bool)` function has been added. This allows OLED contents to be written deterministically when supplied with `true` -- that is, the OLED will be updated immediately, rather than waiting for the next OLED update cycle. This allows for OLEDs to show things such as "BOOTLOADER MODE" and the like if resetting to bootloader from QMK. + +### Switch statement helpers for keycode ranges ([#20059](https://github.com/qmk/qmk_firmware/pull/20059)) :id=switch-statement-helpers-for-keycode-ranges + +Predefined ranges usable within switch statements have been added for groups of similar keycodes, where people who wish to handle entire blocks at once can do so. This allows keymaps to be immune to changes in keycode values, and also allows for more efficient code generation. + +The ranges are as follows: + +| Name | Mapping | +|-------------------------------------|------------------------------------------------------------------------| +| `INTERNAL_KEYCODE_RANGE` | `KC_NO ... KC_TRANSPARENT` | +| `BASIC_KEYCODE_RANGE` | `KC_A ... KC_EXSEL` | +| `SYSTEM_KEYCODE_RANGE` | `KC_SYSTEM_POWER ... KC_SYSTEM_WAKE` | +| `CONSUMER_KEYCODE_RANGE` | `KC_AUDIO_MUTE ... KC_LAUNCHPAD` | +| `MOUSE_KEYCODE_RANGE` | `KC_MS_UP ... KC_MS_ACCEL2` | +| `MODIFIER_KEYCODE_RANGE` | `KC_LEFT_CTRL ... KC_RIGHT_GUI` | +| `SWAP_HANDS_KEYCODE_RANGE` | `QK_SWAP_HANDS_TOGGLE ... QK_SWAP_HANDS_ONE_SHOT` | +| `MAGIC_KEYCODE_RANGE` | `QK_MAGIC_SWAP_CONTROL_CAPS_LOCK ... QK_MAGIC_TOGGLE_ESCAPE_CAPS_LOCK` | +| `MIDI_KEYCODE_RANGE` | `QK_MIDI_ON ... QK_MIDI_PITCH_BEND_UP` | +| `SEQUENCER_KEYCODE_RANGE` | `QK_SEQUENCER_ON ... QK_SEQUENCER_STEPS_CLEAR` | +| `JOYSTICK_KEYCODE_RANGE` | `QK_JOYSTICK_BUTTON_0 ... QK_JOYSTICK_BUTTON_31` | +| `PROGRAMMABLE_BUTTON_KEYCODE_RANGE` | `QK_PROGRAMMABLE_BUTTON_1 ... QK_PROGRAMMABLE_BUTTON_32` | +| `AUDIO_KEYCODE_RANGE` | `QK_AUDIO_ON ... QK_AUDIO_VOICE_PREVIOUS` | +| `STENO_KEYCODE_RANGE` | `QK_STENO_BOLT ... QK_STENO_COMB_MAX` | +| `MACRO_KEYCODE_RANGE` | `QK_MACRO_0 ... QK_MACRO_31` | +| `BACKLIGHT_KEYCODE_RANGE` | `QK_BACKLIGHT_ON ... QK_BACKLIGHT_TOGGLE_BREATHING` | +| `RGB_KEYCODE_RANGE` | `RGB_TOG ... RGB_MODE_TWINKLE` | +| `QUANTUM_KEYCODE_RANGE` | `QK_BOOTLOADER ... QK_ALT_REPEAT_KEY` | +| `KB_KEYCODE_RANGE` | `QK_KB_0 ... QK_KB_31` | +| `USER_KEYCODE_RANGE` | `QK_USER_0 ... QK_USER_31` | + +Usage: + +```c + switch (keycode) { + case KC_A ... KC_EXSEL: + case KC_LEFT_CTRL ... KC_RIGHT_GUI: + /* do stuff with basic and modifier keycodes */ +``` + +Becomes: + +```c + switch (keycode) { + case BASIC_KEYCODE_RANGE: + case MODIFIER_KEYCODE_RANGE: + /* do stuff with basic and modifier keycodes */ +``` + +### Quantum Painter OLED support ([#19997](https://github.com/qmk/qmk_firmware/pull/19997)) :id=quantum-painter-oled-support + +Quantum Painter has picked up support for SH1106 displays -- commonly seen as 128x64 OLEDs. Support for both I2C and SPI displays is available. + +If you're already using OLED through `OLED_DRIVER_ENABLE = yes` or equivalent in `info.json` and wish to use Quantum Painter instead, you'll need to disable the old OLED system, instead enabling Quantum Painter as well as enabling the appropriate SH1106 driver. See the [Quantum Painter driver documentation](quantum_painter.md#quantum-painter-drivers) for more details. The old OLED driver is still available, and keymaps do not require migrating to Quantum Painter if you don't want to do so. + +### RGB/LED lighting driver naming and cleanup ([#21890](https://github.com/qmk/qmk_firmware/pull/21890), [#21891](https://github.com/qmk/qmk_firmware/pull/21891), [#21892](https://github.com/qmk/qmk_firmware/pull/21892), [#21903](https://github.com/qmk/qmk_firmware/pull/21903), [#21904](https://github.com/qmk/qmk_firmware/pull/21904), [#21905](https://github.com/qmk/qmk_firmware/pull/21905), [#21918](https://github.com/qmk/qmk_firmware/pull/21918), [#21929](https://github.com/qmk/qmk_firmware/pull/21929), [#21938](https://github.com/qmk/qmk_firmware/pull/21938), [#22004](https://github.com/qmk/qmk_firmware/pull/22004), [#22008](https://github.com/qmk/qmk_firmware/pull/22008), [#22009](https://github.com/qmk/qmk_firmware/pull/22009), [#22071](https://github.com/qmk/qmk_firmware/pull/22071), [#22090](https://github.com/qmk/qmk_firmware/pull/22090), [#22099](https://github.com/qmk/qmk_firmware/pull/22099), [#22126](https://github.com/qmk/qmk_firmware/pull/22126), [#22133](https://github.com/qmk/qmk_firmware/pull/22133), [#22163](https://github.com/qmk/qmk_firmware/pull/22163), [#22200](https://github.com/qmk/qmk_firmware/pull/22200), [#22308](https://github.com/qmk/qmk_firmware/pull/22308), [#22309](https://github.com/qmk/qmk_firmware/pull/22309), [#22311](https://github.com/qmk/qmk_firmware/pull/22311), [#22325](https://github.com/qmk/qmk_firmware/pull/22325), [#22365](https://github.com/qmk/qmk_firmware/pull/22365), [#22379](https://github.com/qmk/qmk_firmware/pull/22379), [#22380](https://github.com/qmk/qmk_firmware/pull/22380), [#22381](https://github.com/qmk/qmk_firmware/pull/22381), [#22383](https://github.com/qmk/qmk_firmware/pull/22383), [#22436](https://github.com/qmk/qmk_firmware/pull/22436)) + +As you can probably tell by the list of PRs just above, there has been a lot of cleanup and consolidation this cycle when it comes to RGB/LED lighting drivers. The number of changes is too large to list here, but the general theme has been focusing on consistency of naming, both of drivers themselves and their respective implementation and configuration. Most changes only affect keyboard designers -- if you find that your in-development keyboard is no longer building due to naming of defines changing, your best bet is to refer to another board already in the repository which has had the changes applied. + +### Peripheral subsystem enabling ([#22253](https://github.com/qmk/qmk_firmware/pull/22253), [#22448](https://github.com/qmk/qmk_firmware/pull/22448), [#22106](https://github.com/qmk/qmk_firmware/pull/22106)) :id=peripheral-subsystem-enabling + +When enabling peripherals such as I2C, SPI, or Analog/ADC, some required manual inclusion of source files in order to provide driver support, and in some cases, when multiple drivers were using the same underlying peripheral, files were being added to the build multiple times. + +Most systems requiring other peripherals now mark their respective dependencies as "required", allowing the build system to check whether peripherals are necessary before including them in the build rather than having each location enable them manually. + +For a concrete example, users or keyboard designers who previously added `SRC += analog.c` in order to allow for analog readings via an ADC now should specify `ANALOG_DRIVER_REQUIRED = yes` instead. The full list of added options is as follows: + +| New option | Old Equivalent | +|--------------------------------|------------------------------------------------------------| +| `ANALOG_DRIVER_REQUIRED = yes` | `SRC += analog.c` | +| `APA102_DRIVER_REQUIRED = yes` | `SRC += apa102.c` | +| `I2C_DRIVER_REQUIRED = yes` | `SRC += i2c_master.c` or `QUANTUM_LIB_SRC += i2c_master.c` | +| `SPI_DRIVER_REQUIRED = yes` | `SRC += spi_master.c` or `QUANTUM_LIB_SRC += spi_master.c` | +| `UART_DRIVER_REQUIRED = yes` | `SRC += uart.c` | +| `WS2812_DRIVER_REQUIRED = yes` | `SRC += ws2812.c` | + +### NKRO on V-USB boards ([#22398](https://github.com/qmk/qmk_firmware/pull/22398)) :id=vusb-nkro + +NKRO is now available for ATmega32A and 328P-based keyboards (including PS2AVRGB/Bootmapper boards), thanks to some internal refactoring and cleanup. To enable it, the process is the same as always - add `NKRO_ENABLE = yes` to your `rules.mk`, then assign and press the `NK_TOGG` keycode to switch modes. + +## Full changelist :id=full-changelist + +Core: +* Compilation warning if both `keymap.json` and `keymap.c` exist ([#19939](https://github.com/qmk/qmk_firmware/pull/19939)) +* [QP] Add support for OLED, variable framebuffer bpp ([#19997](https://github.com/qmk/qmk_firmware/pull/19997)) +* Generate switch statement helpers for keycode ranges ([#20059](https://github.com/qmk/qmk_firmware/pull/20059)) +* Chibios SPI driver: allow some SPI pins to be left unassigned ([#20315](https://github.com/qmk/qmk_firmware/pull/20315)) +* Take care of scroll divisor remainders for PS/2 drag scroll ([#20732](https://github.com/qmk/qmk_firmware/pull/20732)) +* Add `RGBLIGHT_DEFAULT_ON` macro configuration option ([#20857](https://github.com/qmk/qmk_firmware/pull/20857)) +* Allow force flush of oled display. ([#20953](https://github.com/qmk/qmk_firmware/pull/20953)) +* Improve and Cleanup Shutdown callbacks ([#21060](https://github.com/qmk/qmk_firmware/pull/21060)) +* [Enhancement] QP Getters ([#21171](https://github.com/qmk/qmk_firmware/pull/21171)) +* Russian typewriter keymap file for popular legacy layout. ([#21174](https://github.com/qmk/qmk_firmware/pull/21174)) +* Improve directional transition of overlapping mouse keys ([#21494](https://github.com/qmk/qmk_firmware/pull/21494)) +* Add full solenoid support on split keyboards ([#21583](https://github.com/qmk/qmk_firmware/pull/21583)) +* Reduce popping during audio initialization using the additive DAC ([#21642](https://github.com/qmk/qmk_firmware/pull/21642)) +* [Maintenance] USB HID control packet as struct ([#21688](https://github.com/qmk/qmk_firmware/pull/21688)) +* Bump mouse endpoint packet size to 16 bytes ([#21711](https://github.com/qmk/qmk_firmware/pull/21711)) +* Allow customizing PWM frequency ([#21717](https://github.com/qmk/qmk_firmware/pull/21717)) +* Add simpler method for relocating functions to RAM. ([#21804](https://github.com/qmk/qmk_firmware/pull/21804)) +* Clean up RGB LED type ([#21859](https://github.com/qmk/qmk_firmware/pull/21859)) +* is31fl3741: Allow changing config register ([#21861](https://github.com/qmk/qmk_firmware/pull/21861)) +* Add _DEFAULT_ON lighting configuration options ([#21865](https://github.com/qmk/qmk_firmware/pull/21865)) +* Modify split config is_keyboard_master/left checks. ([#21875](https://github.com/qmk/qmk_firmware/pull/21875)) +* Remove old `IS_LED_ON/OFF()` macros ([#21878](https://github.com/qmk/qmk_firmware/pull/21878)) +* ckled2001: driver naming cleanups ([#21890](https://github.com/qmk/qmk_firmware/pull/21890)) +* aw20216: driver naming cleanups ([#21891](https://github.com/qmk/qmk_firmware/pull/21891)) +* is31fl3218: driver naming cleanups ([#21892](https://github.com/qmk/qmk_firmware/pull/21892)) +* is31fl3736: driver naming cleanups ([#21903](https://github.com/qmk/qmk_firmware/pull/21903)) +* is31fl3737: driver naming cleanups ([#21904](https://github.com/qmk/qmk_firmware/pull/21904)) +* is31fl3733: driver naming cleanups ([#21905](https://github.com/qmk/qmk_firmware/pull/21905)) +* Enable RP2040 support for apa102 RGB LED driver ([#21908](https://github.com/qmk/qmk_firmware/pull/21908)) +* is31fl3731: driver naming cleanups ([#21918](https://github.com/qmk/qmk_firmware/pull/21918)) +* is31fl3741: driver naming cleanups ([#21929](https://github.com/qmk/qmk_firmware/pull/21929)) +* refactor: move default RGB/LED matrix #defines ([#21938](https://github.com/qmk/qmk_firmware/pull/21938)) +* Added flower blooming on RGB Matrix effect ([#21948](https://github.com/qmk/qmk_firmware/pull/21948)) +* Remove 'Firmware size check does not yet support' message ([#21977](https://github.com/qmk/qmk_firmware/pull/21977)) +* chibios: mark boot2 bootlader data readonly ([#21986](https://github.com/qmk/qmk_firmware/pull/21986)) +* Complete RGB Matrix support for IS31FL3218 ([#22004](https://github.com/qmk/qmk_firmware/pull/22004)) +* Default wear leveling logical size to half backing ([#22006](https://github.com/qmk/qmk_firmware/pull/22006)) +* chibios: disable RWX segment warning on newer GNU lds ([#22007](https://github.com/qmk/qmk_firmware/pull/22007)) +* Add and use I2C address defines for ISSI LED drivers ([#22008](https://github.com/qmk/qmk_firmware/pull/22008)) +* Add and use PWM frequency defines for ISSI LED drivers ([#22009](https://github.com/qmk/qmk_firmware/pull/22009)) +* directly use object files when linking ELF ([#22025](https://github.com/qmk/qmk_firmware/pull/22025)) +* Lvgl rate control ([#22049](https://github.com/qmk/qmk_firmware/pull/22049)) +* Rename CKLED2001 driver to SNLED27351 ([#22071](https://github.com/qmk/qmk_firmware/pull/22071)) +* Move `PACKED` define to util.h ([#22074](https://github.com/qmk/qmk_firmware/pull/22074)) +* Simplify more feature driver defines ([#22090](https://github.com/qmk/qmk_firmware/pull/22090)) +* Update ISSI LED types ([#22099](https://github.com/qmk/qmk_firmware/pull/22099)) +* Move velocikey to within rgblight ([#22123](https://github.com/qmk/qmk_firmware/pull/22123)) +* is31fl3218: Add LED Matrix support ([#22126](https://github.com/qmk/qmk_firmware/pull/22126)) +* Set default board files for uf2boot bootloader ([#22129](https://github.com/qmk/qmk_firmware/pull/22129)) +* is31fl3736: extract single-color API ([#22133](https://github.com/qmk/qmk_firmware/pull/22133)) +* is31fl3737/3741: add LED Matrix support ([#22163](https://github.com/qmk/qmk_firmware/pull/22163)) +* Rename `DRIVER_ADDR_n` defines ([#22200](https://github.com/qmk/qmk_firmware/pull/22200)) +* New RGB Animations - 4 "Starlight" Animation Variations ([#22212](https://github.com/qmk/qmk_firmware/pull/22212)) +* QMK Userspace ([#22222](https://github.com/qmk/qmk_firmware/pull/22222)) +* Dedupe I2C, SPI, UART driver inclusions ([#22253](https://github.com/qmk/qmk_firmware/pull/22253)) +* Add "AC Next Keyboard Layout Select" consumer usage entry (macOS Globe key) ([#22256](https://github.com/qmk/qmk_firmware/pull/22256)) +* Separate 6KRO and NKRO report structs ([#22267](https://github.com/qmk/qmk_firmware/pull/22267)) +* Azoteq IQS5xx support ([#22280](https://github.com/qmk/qmk_firmware/pull/22280)) +* Add `_flush()` functions to LED drivers ([#22308](https://github.com/qmk/qmk_firmware/pull/22308)) +* Add `_LED_COUNT` defines to LED drivers ([#22309](https://github.com/qmk/qmk_firmware/pull/22309)) +* Infer LED DRIVER_COUNT from configured addresses ([#22311](https://github.com/qmk/qmk_firmware/pull/22311)) +* Added gamma values for ST7735 displays ([#22313](https://github.com/qmk/qmk_firmware/pull/22313)) +* Consolidate some EEPROM Driver configuration ([#22321](https://github.com/qmk/qmk_firmware/pull/22321)) +* V-USB: Add generic `send_report()` function ([#22323](https://github.com/qmk/qmk_firmware/pull/22323)) +* V-USB: Implement `GET_PROTOCOL` and `SET_PROTOCOL` handling ([#22324](https://github.com/qmk/qmk_firmware/pull/22324)) +* RGB/LED matrix use limits size optimisation ([#22325](https://github.com/qmk/qmk_firmware/pull/22325)) +* Relocate LED driver init code ([#22365](https://github.com/qmk/qmk_firmware/pull/22365)) +* WT RGB cleanups ([#22379](https://github.com/qmk/qmk_firmware/pull/22379)) +* LED drivers: use `PACKED` define from util.h ([#22380](https://github.com/qmk/qmk_firmware/pull/22380)) +* LED drivers: clean up `SWx`/`CSy` pullup/down resistor config ([#22381](https://github.com/qmk/qmk_firmware/pull/22381)) +* LED drivers: add defines for PWM and LED control register counts ([#22383](https://github.com/qmk/qmk_firmware/pull/22383)) +* V-USB: implement NKRO ([#22398](https://github.com/qmk/qmk_firmware/pull/22398)) +* Allow generic_features to handle subdirectories ([#22400](https://github.com/qmk/qmk_firmware/pull/22400)) +* Migrate some common features to generic ([#22403](https://github.com/qmk/qmk_firmware/pull/22403)) +* Remove requirement for `keymap_steno.h` include in keymaps ([#22423](https://github.com/qmk/qmk_firmware/pull/22423)) +* LED drivers: register naming cleanups ([#22436](https://github.com/qmk/qmk_firmware/pull/22436)) +* Slight refactor of joystick axis type into typedef ([#22445](https://github.com/qmk/qmk_firmware/pull/22445)) +* Generalise analog SRC inclusion ([#22448](https://github.com/qmk/qmk_firmware/pull/22448)) +* Revert "chibios: disable RWX segment warning on newer GNU lds" ([#22469](https://github.com/qmk/qmk_firmware/pull/22469)) +* chibios: disable RWX segment warning on newer GNU lds ([#22471](https://github.com/qmk/qmk_firmware/pull/22471)) + +CLI: +* Implement data driven lighting defaults ([#21825](https://github.com/qmk/qmk_firmware/pull/21825)) +* Generate keymap.json config options more forcefully ([#21960](https://github.com/qmk/qmk_firmware/pull/21960)) +* Implement data driven dip switches ([#22017](https://github.com/qmk/qmk_firmware/pull/22017)) +* Improve argument handling of c2json ([#22170](https://github.com/qmk/qmk_firmware/pull/22170)) +* Support additional split sync items for info.json ([#22193](https://github.com/qmk/qmk_firmware/pull/22193)) +* CLI refactoring for common build target APIs ([#22221](https://github.com/qmk/qmk_firmware/pull/22221)) +* Add dd mapping for hardware based split handedness ([#22369](https://github.com/qmk/qmk_firmware/pull/22369)) +* CLI parallel search updates ([#22525](https://github.com/qmk/qmk_firmware/pull/22525)) +* Remove duplicates from search results ([#22528](https://github.com/qmk/qmk_firmware/pull/22528)) + +Keyboards: +* Add KPRepublic/BM40hsrgb rev2 ([#16689](https://github.com/qmk/qmk_firmware/pull/16689)) +* update to data driven - superseeds part of https://github.com/qmk/qmk… ([#20220](https://github.com/qmk/qmk_firmware/pull/20220)) +* Modernize `dactyl_manuform/dmote` keyboard ([#20427](https://github.com/qmk/qmk_firmware/pull/20427)) +* add Skyloong/GK61_V1 keyboard ([#21364](https://github.com/qmk/qmk_firmware/pull/21364)) +* [Refactor] Make changes to some pins ([#21380](https://github.com/qmk/qmk_firmware/pull/21380)) +* Add missing fullsize extended default layouts ([#21402](https://github.com/qmk/qmk_firmware/pull/21402)) +* Add Skyloong/Gk61 PRO keyboard ([#21450](https://github.com/qmk/qmk_firmware/pull/21450)) +* Added skyloong/Qk21 v1 Number Pad ([#21467](https://github.com/qmk/qmk_firmware/pull/21467)) +* matchstickworks/southpad - Move files to rev1, add rev2 ([#21574](https://github.com/qmk/qmk_firmware/pull/21574)) +* partially modernize `dactyl_minidox` ([#21576](https://github.com/qmk/qmk_firmware/pull/21576)) +* tominabox1/le_chiffre oled rework ([#21611](https://github.com/qmk/qmk_firmware/pull/21611)) +* Add Skyloong/Gk61_pro_48 keyboard ([#21654](https://github.com/qmk/qmk_firmware/pull/21654)) +* Adding support for new Waffling60 revision ([#21664](https://github.com/qmk/qmk_firmware/pull/21664)) +* Leeloo revision 2 updates. ([#21671](https://github.com/qmk/qmk_firmware/pull/21671)) +* rename og60 to tofu60 ([#21684](https://github.com/qmk/qmk_firmware/pull/21684)) +* add tofujr v2 keyboard ([#21740](https://github.com/qmk/qmk_firmware/pull/21740)) +* Rotary numpad ([#21744](https://github.com/qmk/qmk_firmware/pull/21744)) +* Update era/divine ([#21767](https://github.com/qmk/qmk_firmware/pull/21767)) +* 1UpKeyboards Pi60 Layout Additions ([#21874](https://github.com/qmk/qmk_firmware/pull/21874)) +* BIOI keyboards: use core UART driver ([#21879](https://github.com/qmk/qmk_firmware/pull/21879)) +* Resolve some "Layout should not contain name of keyboard" lint warnings ([#21898](https://github.com/qmk/qmk_firmware/pull/21898)) +* fc660c/fc980c: clean up actuation point adjustment code ([#21964](https://github.com/qmk/qmk_firmware/pull/21964)) +* Chromatonemini info json revised to support qmk 0.22.2 ([#21966](https://github.com/qmk/qmk_firmware/pull/21966)) +* Migrate spi_flash WEAR_LEVELING_DRIVER to info.json ([#21978](https://github.com/qmk/qmk_firmware/pull/21978)) +* Remove duplication of RP2040 EEPROM defaults ([#21979](https://github.com/qmk/qmk_firmware/pull/21979)) +* Remove duplication of STM32L432 EEPROM defaults ([#21981](https://github.com/qmk/qmk_firmware/pull/21981)) +* Migrate spi EEPROM_DRIVER to info.json ([#21991](https://github.com/qmk/qmk_firmware/pull/21991)) +* Update Keychron Q1v1 ([#21993](https://github.com/qmk/qmk_firmware/pull/21993)) +* Update Keychron Q2 ([#21994](https://github.com/qmk/qmk_firmware/pull/21994)) +* Update Keychron Q3 ([#21995](https://github.com/qmk/qmk_firmware/pull/21995)) +* Update Keychron Q4 ([#21996](https://github.com/qmk/qmk_firmware/pull/21996)) +* Migrate WEAR_LEVELING_*_SIZE to info.json ([#22010](https://github.com/qmk/qmk_firmware/pull/22010)) +* Remove duplication of EEPROM defaults ([#22011](https://github.com/qmk/qmk_firmware/pull/22011)) +* Migrate i2c EEPROM_DRIVER to info.json ([#22013](https://github.com/qmk/qmk_firmware/pull/22013)) +* Remove config.h which only set DYNAMIC_KEYMAP_LAYER_COUNT ([#22034](https://github.com/qmk/qmk_firmware/pull/22034)) +* Add community layout support to tofu60 ([#22041](https://github.com/qmk/qmk_firmware/pull/22041)) +* Update Keychron Q0 ([#22068](https://github.com/qmk/qmk_firmware/pull/22068)) +* Remove custom ISSI lighting code ([#22073](https://github.com/qmk/qmk_firmware/pull/22073)) +* add dp3000 rev2 featuring rgblight ([#22084](https://github.com/qmk/qmk_firmware/pull/22084)) +* Remove ALLOW_WARNINGS and PICO_INTRINSICS_ENABLED ([#22085](https://github.com/qmk/qmk_firmware/pull/22085)) +* Partially migrate `DYNAMIC_KEYMAP_LAYER_COUNT` ([#22087](https://github.com/qmk/qmk_firmware/pull/22087)) +* feat(eyeohdesigns/babyv): rgb matrix ([#22105](https://github.com/qmk/qmk_firmware/pull/22105)) +* input_club/infinity60: remove custom 3731 code, convert to LED Matrix ([#22117](https://github.com/qmk/qmk_firmware/pull/22117)) +* YMDK Melody96 Break-Up ([#22121](https://github.com/qmk/qmk_firmware/pull/22121)) +* Remove duplicated rgblight implementation from mxss ([#22122](https://github.com/qmk/qmk_firmware/pull/22122)) +* KC60 Layout Standardization and Cleanup ([#22125](https://github.com/qmk/qmk_firmware/pull/22125)) +* Convert adm42 to data driven ([#22144](https://github.com/qmk/qmk_firmware/pull/22144)) +* Update Drop keyboards for develop ([#22145](https://github.com/qmk/qmk_firmware/pull/22145)) +* move soda/mango and soda/pocket to magic_force/mf17 and magic_force/mf34 ([#22151](https://github.com/qmk/qmk_firmware/pull/22151)) +* GMMK2 65% ISO Community Layout Support ([#22152](https://github.com/qmk/qmk_firmware/pull/22152)) +* Leeloo v2.1 revision 3 updates. ([#22236](https://github.com/qmk/qmk_firmware/pull/22236)) +* jian/rev1: convert to DIP Switch ([#22248](https://github.com/qmk/qmk_firmware/pull/22248)) +* Enable linking of encoders to switch within layout macros ([#22264](https://github.com/qmk/qmk_firmware/pull/22264)) +* Migrate recently introduced sync items ([#22305](https://github.com/qmk/qmk_firmware/pull/22305)) +* Rename LINE FRIENDS TKL keyboard ([#22310](https://github.com/qmk/qmk_firmware/pull/22310)) +* feat(mechwild/clunker): new layouts ([#22342](https://github.com/qmk/qmk_firmware/pull/22342)) +* Remove use of broken split.main ([#22363](https://github.com/qmk/qmk_firmware/pull/22363)) +* whitefox: remove pointless file ([#22366](https://github.com/qmk/qmk_firmware/pull/22366)) +* Migrate some EEPROM config to info.json ([#22434](https://github.com/qmk/qmk_firmware/pull/22434)) +* Remove unnecessary driver counts ([#22435](https://github.com/qmk/qmk_firmware/pull/22435)) +* Migrate some dip switch config to info.json ([#22437](https://github.com/qmk/qmk_firmware/pull/22437)) +* Remove userspace keymaps ([#22544](https://github.com/qmk/qmk_firmware/pull/22544)) +* Stub out community layout directory structure ([#22545](https://github.com/qmk/qmk_firmware/pull/22545)) +* Remove symbolic linked userspace folder ([#22548](https://github.com/qmk/qmk_firmware/pull/22548)) + +Keyboard fixes: +* fix unxmaal for 60_iso ([#21975](https://github.com/qmk/qmk_firmware/pull/21975)) +* Fix input_club/k_type when RGB Matrix disabled ([#22021](https://github.com/qmk/qmk_firmware/pull/22021)) +* Fixup snes_macropad on develop ([#22444](https://github.com/qmk/qmk_firmware/pull/22444)) +* Fix missed shutdown callbacks ([#22549](https://github.com/qmk/qmk_firmware/pull/22549)) + +Others: +* Implement data driven wear leveling ([#21906](https://github.com/qmk/qmk_firmware/pull/21906)) +* More data driven RGB/LED Matrix config ([#21939](https://github.com/qmk/qmk_firmware/pull/21939)) +* Update WS2812 docs and add APA102 docs ([#22106](https://github.com/qmk/qmk_firmware/pull/22106)) +* Add DD mappings for locking switch ([#22242](https://github.com/qmk/qmk_firmware/pull/22242)) + +Bugs: +* Improve test invocation, fix Retro Shift bugs, and add Auto+Retro Shift test cases ([#15889](https://github.com/qmk/qmk_firmware/pull/15889)) +* [Bugfix] `qp_ellipse` overflow ([#19005](https://github.com/qmk/qmk_firmware/pull/19005)) +* Cater for ECC failures in EFL wear-leveling. ([#19749](https://github.com/qmk/qmk_firmware/pull/19749)) +* Fix OSM on a OSL activated layer ([#20410](https://github.com/qmk/qmk_firmware/pull/20410)) +* Fixed WB32 MCU remote wakeup issue ([#20863](https://github.com/qmk/qmk_firmware/pull/20863)) +* Optimize the additive DAC code, fixing performance-related hangs ([#21662](https://github.com/qmk/qmk_firmware/pull/21662)) +* [Enhancement] Improvements for debounce test coverage + bug fixes for sym_defer_g and sym_eager_pr ([#21667](https://github.com/qmk/qmk_firmware/pull/21667)) +* fix: make clicky delay silent ([#21866](https://github.com/qmk/qmk_firmware/pull/21866)) +* Add `mousekey.h` include to `quantum.h` ([#21897](https://github.com/qmk/qmk_firmware/pull/21897)) +* Fix default layer value in eeconfig_init ([#21909](https://github.com/qmk/qmk_firmware/pull/21909)) +* Add RTC IRQ Priority to RP2040 board files ([#21926](https://github.com/qmk/qmk_firmware/pull/21926)) +* Update AW20216S LED type ([#22072](https://github.com/qmk/qmk_firmware/pull/22072)) +* LED/RGB Matrix: prefix driver defines ([#22088](https://github.com/qmk/qmk_firmware/pull/22088)) +* RGBLight/Backlight: add prefixed driver defines ([#22089](https://github.com/qmk/qmk_firmware/pull/22089)) +* Fix lower cpi bound on PMW33XX ([#22108](https://github.com/qmk/qmk_firmware/pull/22108)) +* Fix parsing/validation for 21939 ([#22148](https://github.com/qmk/qmk_firmware/pull/22148)) +* is31fl3733: complete LED Matrix support ([#22149](https://github.com/qmk/qmk_firmware/pull/22149)) +* Fix memory leak in realloc failure handling ([#22188](https://github.com/qmk/qmk_firmware/pull/22188)) +* avrdude: Version 7.2 changes the text output ([#22235](https://github.com/qmk/qmk_firmware/pull/22235)) +* Resolve invalid keyboard alias targets ([#22239](https://github.com/qmk/qmk_firmware/pull/22239)) +* Prep work for NKRO report separation ([#22268](https://github.com/qmk/qmk_firmware/pull/22268)) +* ChibiOS pin defs: use only vendor if present ([#22297](https://github.com/qmk/qmk_firmware/pull/22297)) +* Fix invalid LED driver config ([#22312](https://github.com/qmk/qmk_firmware/pull/22312)) +* Fix compilation error when led/rgb process limit is zero. ([#22328](https://github.com/qmk/qmk_firmware/pull/22328)) +* V-USB: Fix `GET_IDLE/SET_IDLE` ([#22332](https://github.com/qmk/qmk_firmware/pull/22332)) +* QP getters correction ([#22357](https://github.com/qmk/qmk_firmware/pull/22357)) +* Fix 'to_c' for config.h mappings ([#22364](https://github.com/qmk/qmk_firmware/pull/22364)) +* snled27351: fix missing `i2c_init()` ([#22446](https://github.com/qmk/qmk_firmware/pull/22446)) +* Move BACKLIGHT_PWM_PERIOD to correct docs section ([#22480](https://github.com/qmk/qmk_firmware/pull/22480)) +* `qmk find`: Fix failure with multiple filters ([#22497](https://github.com/qmk/qmk_firmware/pull/22497)) +* Fix `qmk find` failure due to circular imports ([#22523](https://github.com/qmk/qmk_firmware/pull/22523)) diff --git a/docs/_summary.md b/docs/_summary.md index d7dbd38c9882..bae93da5b6c2 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -4,7 +4,7 @@ * [Building Your First Firmware](newbs_building_firmware.md) * [Flashing Firmware](newbs_flashing.md) * [Getting Help/Support](support.md) - * [Building With GitHub Userspace](newbs_building_firmware_workflow.md) + * [External Userspace](newbs_external_userspace.md) * [Other Resources](newbs_learn_more_resources.md) * [Syllabus](syllabus.md) @@ -80,6 +80,7 @@ * [Caps Word](feature_caps_word.md) * [Combos](feature_combo.md) * [Debounce API](feature_debounce_type.md) + * [Digitizer](feature_digitizer.md) * [EEPROM](feature_eeprom.md) * [Key Lock](feature_key_lock.md) * [Key Overrides](feature_key_overrides.md) @@ -115,7 +116,6 @@ * [Bootmagic Lite](feature_bootmagic.md) * [Converters](feature_converters.md) * [Custom Matrix](custom_matrix.md) - * [Digitizer](feature_digitizer.md) * [DIP Switch](feature_dip_switch.md) * [Encoders](feature_encoders.md) * [Haptic Feedback](feature_haptic_feedback.md) @@ -126,7 +126,6 @@ * [PS/2 Mouse](feature_ps2_mouse.md) * [Split Keyboard](feature_split_keyboard.md) * [Stenography](feature_stenography.md) - * [Velocikey](feature_velocikey.md) * Keyboard Building * [Easy Maker for One Offs](easy_maker.md) @@ -139,7 +138,7 @@ * Breaking Changes * [Overview](breaking_changes.md) * [My Pull Request Was Flagged](breaking_changes_instructions.md) - * [Most Recent ChangeLog](ChangeLog/20230827.md "QMK v0.22.0 - 2023 Aug 27") + * [Most Recent ChangeLog](ChangeLog/20231126.md "QMK v0.23.0 - 2023 Nov 26") * [Past Breaking Changes](breaking_changes_history.md) * C Development @@ -148,6 +147,7 @@ * [Compatible Microcontrollers](compatible_microcontrollers.md) * [Drivers](hardware_drivers.md) * [ADC Driver](adc_driver.md) + * [APA102 Driver](apa102_driver.md) * [Audio Driver](audio_driver.md) * [I2C Driver](i2c_driver.md) * [SPI Driver](spi_driver.md) diff --git a/docs/adc_driver.md b/docs/adc_driver.md index 494d90c94fa8..dd928e1e7f0a 100644 --- a/docs/adc_driver.md +++ b/docs/adc_driver.md @@ -9,7 +9,7 @@ This driver currently supports both AVR and a limited selection of ARM devices. To use this driver, add the following to your `rules.mk`: ```make -SRC += analog.c +ANALOG_DRIVER_REQUIRED = yes ``` Then place this include at the top of your code: diff --git a/docs/apa102_driver.md b/docs/apa102_driver.md new file mode 100644 index 000000000000..1da2de6ca357 --- /dev/null +++ b/docs/apa102_driver.md @@ -0,0 +1,49 @@ +# APA102 Driver :id=apa102-driver + +This driver provides support for APA102 addressable RGB LEDs. They are similar to the [WS2812](ws2812_driver.md) LEDs, but have increased data and refresh rates. + +## Usage :id=usage + +In most cases, the APA102 driver code is automatically included if you are using either the [RGBLight](feature_rgblight.md) or [RGB Matrix](feature_rgb_matrix.md) feature with the `apa102` driver set, and you would use those APIs instead. + +However, if you need to use the driver standalone, add the following to your `rules.mk`: + +```make +APA102_DRIVER_REQUIRED = yes +``` + +You can then call the APA102 API by including `apa102.h` in your code. + +## Basic Configuration :id=basic-configuration + +Add the following to your `config.h`: + +|Define |Default |Description | +|---------------------------|-------------|------------------------------------------------------------------| +|`APA102_DI_PIN` |*Not defined*|The GPIO pin connected to the DI pin of the first LED in the chain| +|`APA102_CI_PIN` |*Not defined*|The GPIO pin connected to the CI pin of the first LED in the chain| +|`APA102_DEFAULT_BRIGHTNESS`|`31` |The default global brightness level of the LEDs, from 0 to 31 | + +## API :id=api + +### `void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds)` + +Send RGB data to the APA102 LED chain. + +#### Arguments :id=api-apa102-setleds-arguments + + - `rgb_led_t *start_led` + A pointer to the LED array. + - `uint16_t num_leds` + The length of the LED array. + +--- + +### `void apa102_set_brightness(uint8_t brightness)` + +Set the global brightness. + +#### Arguments :id=api-apa102-set-brightness-arguments + + - `uint8_t brightness` + The brightness level to set, from 0 to 31. diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md index fdf6ccef9c79..70a9044c8c0e 100644 --- a/docs/breaking_changes.md +++ b/docs/breaking_changes.md @@ -10,9 +10,9 @@ Practically, this means QMK merges the `develop` branch into the `master` branch ## What has been included in past Breaking Changes? +* [2023 Nov 26](ChangeLog/20231126.md) * [2023 Aug 27](ChangeLog/20230827.md) * [2023 May 28](ChangeLog/20230528.md) -* [2023 Feb 26](ChangeLog/20230226.md) * [Older Breaking Changes](breaking_changes_history.md) ## When is the next Breaking Change? @@ -21,14 +21,14 @@ The next Breaking Change is scheduled for November 26, 2023. ### Important Dates -* 2023 Aug 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. -* 2023 Oct 29 - `develop` closed to new PRs. -* 2023 Oct 29 - Call for testers. -* 2023 Nov 5 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes -* 2023 Nov 19 - `develop` is locked, only critical bugfix PRs merged. -* 2023 Nov 23 - `master` is locked, no PRs merged. -* 2023 Nov 26 - Merge `develop` to `master`. -* 2023 Nov 26 - `master` is unlocked. PRs can be merged again. +* 2023 Nov 26 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions. +* 2024 Jan 28 - `develop` closed to new PRs. +* 2024 Jan 28 - Call for testers. +* 2024 Feb 4 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes +* 2024 Feb 18 - `develop` is locked, only critical bugfix PRs merged. +* 2024 Feb 22 - `master` is locked, no PRs merged. +* 2024 Feb 25 - Merge `develop` to `master`. +* 2024 Feb 25 - `master` is unlocked. PRs can be merged again. ## What changes will be included? @@ -48,7 +48,7 @@ Criteria for acceptance: Strongly suggested: -* The PR has a ChangeLog file describing the changes under `/docs/Changelog/20231126`. +* The PR has a ChangeLog file describing the changes under `/docs/Changelog/20240225`. * This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PRs ID. * One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability. diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md index deb3dfb99008..4ab890294bba 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. +* [2023 Nov 26](ChangeLog/20231126.md) - version 0.23.0 * [2023 Aug 27](ChangeLog/20230827.md) - version 0.22.0 * [2023 May 28](ChangeLog/20230528.md) - version 0.21.0 * [2023 Feb 26](ChangeLog/20230226.md) - version 0.20.0 diff --git a/docs/cli.md b/docs/cli.md index 8684479d0c1d..0fa068dc7b0c 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -2,11 +2,11 @@ ## Overview :id=overview -The QMK CLI makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more. +The QMK CLI (command line interface) makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more. ### Requirements :id=requirements -QMK requires Python 3.6 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI. +QMK requires Python 3.7 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI. ### Install Using Homebrew (macOS, some Linux) :id=install-using-homebrew @@ -20,7 +20,7 @@ qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build ### Install Using pip :id=install-using-easy_install-or-pip -If your system is not listed above you can install QMK manually. First ensure that you have Python 3.6 (or later) installed and have installed pip. Then install QMK with this command: +If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command: ``` python3 -m pip install qmk diff --git a/docs/cli_commands.md b/docs/cli_commands.md index 79fd9de57576..cf174949afb1 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -362,6 +362,16 @@ This command is directory aware. It will automatically fill in KEYBOARD if you a qmk list-keymaps -kb planck/ez ``` +## `qmk migrate` + +This command searches for legacy code that can be converted to the new `info.json` format and adds it to the specified keyboard's `info.json`. + +**Usage**: + +``` +qmk migrate [-h] -kb KEYBOARD [-f FILTER] +``` + ## `qmk new-keyboard` This command creates a new keyboard based on available templates. @@ -482,6 +492,131 @@ $ qmk import-kbfirmware ~/Downloads/gh62.json --- +# External Userspace Commands + +## `qmk userspace-add` + +This command adds a keyboard/keymap to the External Userspace build targets. + +**Usage**: + +``` +qmk userspace-add [-h] [-km KEYMAP] [-kb KEYBOARD] [builds ...] + +positional arguments: + builds List of builds in form :, or path to a keymap JSON file. + +options: + -h, --help show this help message and exit + -km KEYMAP, --keymap KEYMAP + The keymap to build a firmware for. Ignored when a configurator export is supplied. + -kb KEYBOARD, --keyboard KEYBOARD + The keyboard to build a firmware for. Ignored when a configurator export is supplied. +``` + +**Example**: + +``` +$ qmk userspace-add -kb planck/rev6 -km default +Ψ Added planck/rev6:default to userspace build targets +Ψ Saved userspace file to /home/you/qmk_userspace/qmk.json +``` + +## `qmk userspace-remove` + +This command removes a keyboard/keymap from the External Userspace build targets. + +**Usage**: + +``` +qmk userspace-remove [-h] [-km KEYMAP] [-kb KEYBOARD] [builds ...] + +positional arguments: + builds List of builds in form :, or path to a keymap JSON file. + +options: + -h, --help show this help message and exit + -km KEYMAP, --keymap KEYMAP + The keymap to build a firmware for. Ignored when a configurator export is supplied. + -kb KEYBOARD, --keyboard KEYBOARD + The keyboard to build a firmware for. Ignored when a configurator export is supplied. +``` + +**Example**: + +``` +$ qmk userspace-remove -kb planck/rev6 -km default +Ψ Removed planck/rev6:default from userspace build targets +Ψ Saved userspace file to /home/you/qmk_userspace/qmk.json +``` + +## `qmk userspace-list` + +This command lists the External Userspace build targets. + +**Usage**: + +``` +qmk userspace-list [-h] [-e] + +options: + -h, --help show this help message and exit + -e, --expand Expands any use of `all` for either keyboard or keymap. +``` + +**Example**: + +``` +$ qmk userspace-list +Ψ Current userspace build targets: +Ψ Keyboard: planck/rev6, keymap: you +Ψ Keyboard: clueboard/66/rev3, keymap: you +``` + +## `qmk userspace-compile` + +This command compiles all the External Userspace build targets. + +**Usage**: + +``` +qmk userspace-compile [-h] [-e ENV] [-n] [-c] [-j PARALLEL] [-t] + +options: + -h, --help show this help message and exit + -e ENV, --env ENV Set a variable to be passed to make. May be passed multiple times. + -n, --dry-run Don't actually build, just show the commands to be run. + -c, --clean Remove object files before compiling. + -j PARALLEL, --parallel PARALLEL + Set the number of parallel make jobs; 0 means unlimited. + -t, --no-temp Remove temporary files during build. +``` + +**Example**: + +``` +$ qmk userspace-compile +Ψ Preparing target list... +Build planck/rev6:you [OK] +Build clueboard/66/rev3:you [OK] +``` + +## `qmk userspace-doctor` + +This command examines your environment and alerts you to potential problems related to External Userspace. + +**Example**: + +``` +% qmk userspace-doctor +Ψ QMK home: /home/you/qmk_userspace/qmk_firmware +Ψ Testing userspace candidate: /home/you/qmk_userspace -- Valid `qmk.json` +Ψ QMK userspace: /home/you/qmk_userspace +Ψ Userspace enabled: True +``` + +--- + # Developer Commands ## `qmk format-text` diff --git a/docs/cli_development.md b/docs/cli_development.md index d878deff17c4..8d4ee625352f 100644 --- a/docs/cli_development.md +++ b/docs/cli_development.md @@ -44,7 +44,7 @@ def hello(cli): First we import the `cli` object from `milc`. This is how we interact with the user and control the script's behavior. We use `@cli.argument()` to define a command line flag, `--name`. This also creates a configuration variable named `hello.name` (and the corresponding `user.name`) which the user can set so they don't have to specify the argument. The `cli.subcommand()` decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function. -Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator. +Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.7/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator. # User Interaction @@ -56,13 +56,13 @@ There are two main methods for outputting text in a subcommand- `cli.log` and `c You can use special tokens to colorize your text, to make it easier to understand the output of your program. See [Colorizing Text](#colorizing-text) below. -Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.6/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example. +Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.7/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example. You should never use the format operator (`%`) directly, always pass values as arguments. ### Logging (`cli.log`) -The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong. +The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.7/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong. The default log level is `INFO`. If the user runs `qmk -v ` the default log level will be set to `DEBUG`. diff --git a/docs/coding_conventions_python.md b/docs/coding_conventions_python.md index 2b6870344873..1ed27ee46abb 100644 --- a/docs/coding_conventions_python.md +++ b/docs/coding_conventions_python.md @@ -317,7 +317,7 @@ At the time of this writing our tests are not very comprehensive. Looking at the ## Integration Tests -Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.6/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened. +Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.7/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened. ## Unit Tests diff --git a/docs/contributing.md b/docs/contributing.md index e94a63760982..8d993e3389d5 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -70,6 +70,7 @@ We have a few different types of changes in QMK, each requiring a different leve * Keymaps: Make sure that `make keyboard:keymap` does not return any errors. * Keyboards: Make sure that `make keyboard:all` does not return any errors. * Core: Make sure that `make all` does not return any errors. +* Note that user-keymap and userspace contributions are no longer accepted. * Make sure commit messages are understandable on their own. You should put a short description (no more than 70 characters) on the first line, the second line should be empty, and on the 3rd and later lines you should describe your commit in detail, if required. Example: ``` @@ -80,8 +81,6 @@ The kerpleplork was intermittently failing with error code 23. The root cause wa Limited experimentation on the devices I have available shows that 7 is high enough to avoid confusing the kerpleplork, but I'd like to get some feedback from people with ARM devices to be sure. ``` -!> **IMPORTANT:** If you would like to contribute a bugfix or improvement to user code, such as non-default keymaps, userspace and layouts, be sure to tag the original submitter of the code in your PR. Many users, regardless of skill level with Git and GitHub, may be confused or frustrated at their code being modified without their knowledge. - ## Documentation Documentation is one of the easiest ways to get started contributing to QMK. Finding places where the documentation is wrong or incomplete and fixing those is easy! We also very badly need someone to edit our documentation, so if you have editing skills but aren't sure where or how to jump in please [reach out for help](#where-can-i-go-for-help)! diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md index 5d63f3cfb7d0..957633837c42 100644 --- a/docs/custom_quantum_functions.md +++ b/docs/custom_quantum_functions.md @@ -283,6 +283,65 @@ void suspend_wakeup_init_user(void) { * Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)` * Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)` + +# Keyboard Shutdown/Reboot Code :id=keyboard-shutdown-reboot-code + +This function gets called whenever the firmware is reset, whether it's a soft reset or reset to the bootloader. This is the spot to use for any sort of cleanup, as this happens right before the actual reset. And it can be useful for turning off different systems (such as RGB, onboard screens, etc). + +Additionally, it differentiates between the soft reset (eg, rebooting back into the firmware) or jumping to the bootloader. + +Certain tasks are performed during shutdown too. The keyboard is cleared, music and midi is stopped (if enabled), the shutdown chime is triggered (if audio is enabled), and haptic is stopped. + +If `jump_to_bootloader` is set to `true`, this indicates that the board will be entering the bootloader for a new firmware flash, whereas `false` indicates that this is happening for a soft reset and will load the firmware agaim immediately (such as when using `QK_REBOOT` or `QK_CLEAR_EEPROM`). + +As there is a keyboard and user level function, returning `false` for the user function will disable the keyboard level function, allowing for customization. + +?> Bootmagic does not trigger `shutdown_*()` as it happens before most of the initialization process. + +### Example `shutdown_kb()` Implementation + +```c +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } + + if (jump_to_bootloader) { + // red for bootloader + rgb_matrix_set_color_all(RGB_OFF); + } else { + // off for soft reset + rgb_matrix_set_color_all(RGB_GREEN); + } + // force flushing -- otherwise will never happen + rgb_matrix_update_pwm_buffers(); + return true; +} +``` + +### Example `shutdown_user()` Implementation + +```c +bool shutdown_user(bool jump_to_bootloader) { + if (jump_to_bootloader) { + // red for bootloader + rgb_matrix_set_color_all(RGB_RED); + } else { + // off for soft reset + rgb_matrix_set_color_all(RGB_OFF); + } + // force flushing -- otherwise will never happen + rgb_matrix_update_pwm_buffers(); + // false to not process kb level + return false; +} +``` + +### Keyboard shutdown/reboot Function Documentation + +* Keyboard/Revision: `bool shutdown_kb(bool jump_to_bootloader)` +* Keymap: `bool shutdown_user(bool jump_to_bootloader)` + # 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. To enable this functionality, set `DEFERRED_EXEC_ENABLE = yes` in rules.mk. diff --git a/docs/eeprom_driver.md b/docs/eeprom_driver.md index 50d8bcb7b328..c77d18c68df5 100644 --- a/docs/eeprom_driver.md +++ b/docs/eeprom_driver.md @@ -66,6 +66,14 @@ Currently QMK supports 25xx-series chips over SPI. As such, requires a working s `#define EXTERNAL_EEPROM_PAGE_SIZE` | `32` | Page size of the EEPROM in bytes, as specified in the datasheet `#define EXTERNAL_EEPROM_ADDRESS_SIZE` | `2` | The number of bytes to transmit for the memory location within the EEPROM +Default values and extended descriptions can be found in `drivers/eeprom/eeprom_spi.h`. + +Alternatively, there are pre-defined hardware configurations for available chips/modules: + +Module | Equivalent `#define` | Source +-----------------|---------------------------------|------------------------------------------ +MB85RS64V FRAM | `define EEPROM_SPI_MB85RS64V` | + !> There's no way to determine if there is an SPI EEPROM actually responding. Generally, this will result in reads of nothing but zero. ## Transient Driver configuration :id=transient-eeprom-driver-configuration @@ -105,11 +113,11 @@ Configurable options in your keyboard's `config.h`: `config.h` override | Default | Description -----------------------------------------|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration. -`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting. -`#define WEAR_LEVELING_LOGICAL_SIZE` | `1024` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. -`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size. -`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly. +`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration. +`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting. +`#define WEAR_LEVELING_LOGICAL_SIZE` | `(backing_size/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. +`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size. +`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly. !> If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding. @@ -139,7 +147,7 @@ Configurable options in your keyboard's `config.h`: ------------------------------------------|----------------------------|-------------------------------------------------------------------------------------------------------------------------------- `#define WEAR_LEVELING_RP2040_FLASH_SIZE` | `PICO_FLASH_SIZE_BYTES` | Number of bytes of flash on the board. `#define WEAR_LEVELING_RP2040_FLASH_BASE` | `(flash_size-sector_size)` | The byte-wise location that the backing storage should be located. -`#define WEAR_LEVELING_LOGICAL_SIZE` | `4096` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. +`#define WEAR_LEVELING_LOGICAL_SIZE` | `(backing_size/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. `#define WEAR_LEVELING_BACKING_SIZE` | `8192` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size as well as the sector size. `#define BACKING_STORE_WRITE_SIZE` | `2` | The write width used whenever a write is performed on the external flash peripheral. diff --git a/docs/feature_auto_shift.md b/docs/feature_auto_shift.md index 6241cbaeb158..74be33cdd47b 100644 --- a/docs/feature_auto_shift.md +++ b/docs/feature_auto_shift.md @@ -180,18 +180,18 @@ For more granular control, there is `get_auto_shifted_key`. The default function bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { switch (keycode) { # ifndef NO_AUTO_SHIFT_ALPHA - case KC_A ... KC_Z: + case AUTO_SHIFT_ALPHA: # endif # ifndef NO_AUTO_SHIFT_NUMERIC - case KC_1 ... KC_0: + case AUTO_SHIFT_NUMERIC: # endif # ifndef NO_AUTO_SHIFT_SPECIAL -# ifndef NO_AUTO_SHIFT_TAB +# ifndef NO_AUTO_SHIFT_TAB case KC_TAB: -# endif -# ifndef NO_AUTO_SHIFT_SYMBOLS +# endif +# ifndef NO_AUTO_SHIFT_SYMBOLS case AUTO_SHIFT_SYMBOLS: -# endif +# endif # endif # ifdef AUTO_SHIFT_ENTER case KC_ENT: @@ -310,10 +310,16 @@ generating taps on release. For example: #define RETRO_SHIFT 500 ``` +Without a value set, holds of any length without an interrupting key will produce the shifted value. + 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. +[Per-key tapping terms](tap_hold.md#tapping-term) can be used as a workaround. There is no such limitation in regards to `AUTO_SHIFT_TIMEOUT` for normal keys. +**Note:** Tap Holds must be added to Auto Shift, see [here.](feature_auto_shift.md#auto-shift-per-key) +`IS_RETRO` may be helpful if one wants all Tap Holds retro shifted. + ### Retro Shift and Tap Hold Configurations Tap Hold Configurations work a little differently when using Retro Shift. diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md index d032c33f18a1..69391fcefe99 100644 --- a/docs/feature_backlight.md +++ b/docs/feature_backlight.md @@ -37,8 +37,9 @@ Add the following to your `config.h`: |`BREATHING_PERIOD` |`6` |The length of one backlight "breath" in seconds | |`BACKLIGHT_ON_STATE` |`1` |The state of the backlight pin when the backlight is "on" - `1` for high, `0` for low | |`BACKLIGHT_LIMIT_VAL` |`255` |The maximum duty cycle of the backlight -- `255` allows for full brightness, any lower will decrease the maximum.| +|`BACKLIGHT_DEFAULT_ON` |`true` |Enable backlight upon clearing the EEPROM | +|`BACKLIGHT_DEFAULT_BREATHING`|`false` |Whether to enable backlight breathing upon clearing the EEPROM | |`BACKLIGHT_DEFAULT_LEVEL` |`BACKLIGHT_LEVELS`|The default backlight level to use upon clearing the EEPROM | -|`BACKLIGHT_DEFAULT_BREATHING`|*Not defined* |Whether to enable backlight breathing upon clearing the EEPROM | Unless you are designing your own keyboard, you generally should not need to change the `BACKLIGHT_PIN` or `BACKLIGHT_ON_STATE`. @@ -172,11 +173,13 @@ Depending on the ChibiOS board configuration, you may need to enable PWM at the The following `#define`s apply only to the `pwm` driver: -|Define |Default |Description | -|-----------------------|--------|-----------------------------------| -|`BACKLIGHT_PWM_DRIVER` |`PWMD4` |The PWM driver to use | -|`BACKLIGHT_PWM_CHANNEL`|`3` |The PWM channel to use | -|`BACKLIGHT_PAL_MODE` |`2` |The pin alternative function to use| +|Define |Default |Description | +|-----------------------|-------------|---------------------------------------------------------------| +|`BACKLIGHT_PWM_DRIVER` |`PWMD4` |The PWM driver to use | +|`BACKLIGHT_PWM_CHANNEL`|`3` |The PWM channel to use | +|`BACKLIGHT_PAL_MODE` |`2` |The pin alternative function to use | +|`BACKLIGHT_PWM_PERIOD` |*Not defined*|The PWM period in counter ticks - Default is platform dependent| + Refer to the ST datasheet for your particular MCU to determine these values. For example, these defaults are set up for pin `B8` on a Proton-C (STM32F303) using `TIM4_CH3` on AF2. Unless you are designing your own keyboard, you generally should not need to change them. diff --git a/docs/feature_combo.md b/docs/feature_combo.md index fd241061fbf4..2e802446b6b4 100644 --- a/docs/feature_combo.md +++ b/docs/feature_combo.md @@ -345,10 +345,9 @@ is not set, all other layers will reference themselves. } return layer; // important if default is not in case. } - ``` - - The equivalent definition using the combo macros is this: + +The equivalent definition using the combo macros is this: ```c COMBO_REF_LAYER(_DVORAK, _QWERTY) diff --git a/docs/feature_converters.md b/docs/feature_converters.md index b1abfa373ad8..11bdbed576b5 100644 --- a/docs/feature_converters.md +++ b/docs/feature_converters.md @@ -1,12 +1,10 @@ # Converters -Since many drop-in replacement controllers now exist, we've done our best to make them easy to use in existing designs. +This page documents the automated process for converting keyboards to use drop-in replacement controllers. This process is designed to be easy to use and can be completed in a few simple steps. -This page documents the handy automated process for converting keyboards. +## Supported Converters -### Supported Converters - -Currently the following converters are available: +The following converters are available at this time: | From | To | |------------|-------------------| @@ -28,14 +26,10 @@ Currently the following converters are available: | `elite_c` | `helios` | | `elite_c` | `liatris` | -See below for more in depth information on each converter. ## Overview -Each converter category is broken down by its declared `pin compatibility`. -This ensures that only valid combinations are attempted. - -You can generate the firmware by appending `-e CONVERT_TO=` to your compile/flash command. For example: +Each converter category is broken down by its declared `pin compatibility`. This ensures that only valid combinations are attempted. You can generate the firmware by appending `-e CONVERT_TO=` to your compile/flash command. For example: ```sh qmk flash -c -kb keebio/bdn9/rev1 -km default -e CONVERT_TO=proton_c @@ -59,14 +53,12 @@ Once a converter is enabled, it exposes the `CONVERT_TO_` flag ### Pin Compatibility -To ensure compatibility, provide validation, and power future workflows, a keyboard should declare its `pin compatibility`. For legacy reasons, this is currently assumed to be `promicro`. - -Currently the following pin compatibility interfaces are defined: +To ensure compatibility, provide validation, and enable future workflows, a keyboard should declare its `pin compatibility`. For legacy reasons, this is currently assumed to be `promicro`. The following pin compatibility interfaces are currently defined: -| Pinout | Notes | -|------------|-----------------------------------| -| `promicro` | Includes RX/TX LEDs | -| `elite_c` | Includes bottom row pins, no LEDs | +| Pin Compatibility | Notes | +|-------------------|-----------------------------------| +| `promicro` | Includes RX/TX LEDs | +| `elite_c` | Includes bottom row pins, no LEDs | To declare the base for conversions, add this line to your keyboard's `rules.mk`: @@ -140,7 +132,7 @@ The following defaults are based on what has been implemented for [RP2040](platf ### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi :id=promicro_rp2040 -Currently identical to [Adafruit KB2040](#kb2040). +Feature set is identical to [Adafruit KB2040](#kb2040). ### STeMCell :id=stemcell @@ -150,9 +142,7 @@ There are two versions of STeMCell available, with different pinouts: - v2.0.0 (pre-release v1.0.1, v1.0.2) Default official firmware only supports v2.0.0 STeMCell. -STeMCell has support to swap UART and I2C pins, to enable single-wire uart communication in STM chips. - -The following additional flags has to be used while compiling, based on the pin used for split communication. +STeMCell has support to swap UART and I2C pins to enable single-wire uart communication in STM chips. The following additional flags has to be used while compiling, based on the pin used for split communication: | Split Pin | Compile flags | |-----------|---------------| @@ -173,11 +163,8 @@ The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro ### RP2040 Community Edition - Elite-Pi, Helios, and Liatris :id=rp2040_ce -Feature set currently identical to [Adafruit KB2040](#kb2040). - -Enables VBUS detection by default for superior split keyboard support. +Feature set is identical to [Adafruit KB2040](#kb2040). VBUS detection is enabled by default for superior split keyboard support. For more information, refer to the [Community Edition pinout](platformdev_rp2040.md#rp2040_ce) docs. -For more information, refer to the [RP2040 Community Edition](platformdev_rp2040.md#rp2040_ce) docs. ## Elite-C @@ -202,8 +189,8 @@ Converter summary: ### STeMCell :id=stemcell_elite -Currently identical to [STeMCell](#stemcell) with support for the additional bottom row of pins. +Identical to [Pro Micro - STeMCell](#stemcell) with support for the additional bottom row of pins. ### RP2040 Community Edition :id=rp2040_ce_elite -Currently identical to [RP2040 Community Edition](#rp2040_ce), with support for the additional bottom row of pins. +Identical to [Pro Micro - RP2040 Community Edition](#rp2040_ce) with support for the additional bottom row of pins. diff --git a/docs/feature_key_overrides.md b/docs/feature_key_overrides.md index ec7efd4c017e..59eced95c364 100644 --- a/docs/feature_key_overrides.md +++ b/docs/feature_key_overrides.md @@ -21,7 +21,7 @@ Then, in your `keymap.c` file, you'll need to define the array `key_overrides`, The `key_override_t` struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a `key_override_t` value, it is recommended to use these dedicated initializers: #### `ko_make_basic(modifiers, key, replacement)` -Returns a `key_override_t`, which sends `replacement` (can be a key-modifer combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior. +Returns a `key_override_t`, which sends `replacement` (can be a key-modifier combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior. #### `ko_make_with_layers(modifiers, key, replacement, layers)` Additionally takes a bitmask `layers` that defines on which layers the override is used. @@ -224,7 +224,7 @@ The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT ## Difference to Combos :id=difference-to-combos -Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interacton with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable. +Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interaction with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable. ## Solution to the problem of flashing modifiers :id=neutralize-flashing-modifiers diff --git a/docs/feature_led_matrix.md b/docs/feature_led_matrix.md index fd56a457258a..b1ce09d34946 100644 --- a/docs/feature_led_matrix.md +++ b/docs/feature_led_matrix.md @@ -19,14 +19,13 @@ You can use between 1 and 4 IS31FL3731 IC's. Do not specify `LED_DRIVER_ADDR_ | Variable | Description | Default | |----------|-------------|---------| -| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | -| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | -| `LED_DRIVER_COUNT` | (Required) How many LED driver IC's are present | | +| `IS31FL3731_I2C_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | +| `IS31FL3731_I2C_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | | `LED_MATRIX_LED_COUNT` | (Required) How many LED lights are present across all drivers | | -| `LED_DRIVER_ADDR_1` | (Required) Address for the first LED driver | | -| `LED_DRIVER_ADDR_2` | (Optional) Address for the second LED driver | | -| `LED_DRIVER_ADDR_3` | (Optional) Address for the third LED driver | | -| `LED_DRIVER_ADDR_4` | (Optional) Address for the fourth LED driver | | +| `IS31FL3731_I2C_ADDRESS_1` | (Required) Address for the first LED driver | | +| `IS31FL3731_I2C_ADDRESS_2` | (Optional) Address for the second LED driver | | +| `IS31FL3731_I2C_ADDRESS_3` | (Optional) Address for the third LED driver | | +| `IS31FL3731_I2C_ADDRESS_4` | (Optional) Address for the fourth LED driver | | Here is an example using 2 drivers. @@ -34,14 +33,15 @@ Here is an example using 2 drivers. // This is a 7-bit address, that gets left-shifted and bit 0 // set to 0 for write, 1 for read (as per I2C protocol) // The address will vary depending on your wiring: -// 0b1110100 AD <-> GND -// 0b1110111 AD <-> VCC -// 0b1110101 AD <-> SCL -// 0b1110110 AD <-> SDA -#define LED_DRIVER_ADDR_1 0b1110100 -#define LED_DRIVER_ADDR_2 0b1110110 - -#define LED_DRIVER_COUNT 2 +// 00 AD <-> GND +// 01 AD <-> SCL +// 10 AD <-> SDA +// 11 AD <-> VCC +// ADDR represents A1:A0 of the 7-bit address. +// The result is: 0b11101(ADDR) +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA + #define LED_DRIVER_1_LED_TOTAL 25 #define LED_DRIVER_2_LED_TOTAL 24 #define LED_MATRIX_LED_COUNT (LED_DRIVER_1_LED_TOTAL + LED_DRIVER_2_LED_TOTAL) @@ -49,12 +49,12 @@ Here is an example using 2 drivers. !> Note the parentheses, this is so when `LED_MATRIX_LED_COUNT` 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`. +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 `IS31FL3731_I2C_ADDRESS_1` for one and `IS31FL3731_I2C_ADDRESS_2` for the other one. Then, in `g_is31fl3731_leds`, fill out the correct driver index (0 or 1). If using one address, use `IS31FL3731_I2C_ADDRESS_1` for both, and use index 0 for `g_is31fl3731_leds`. Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | LED address @@ -94,7 +94,6 @@ 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 | -| `DRIVER_COUNT` | (Required) How many LED driver IC's are present | | | `LED_MATRIX_LED_COUNT` | (Required) How many LED lights are present across all drivers | | | `DRIVER_ADDR_1` | (Optional) Address for the first LED driver | | | `DRIVER_ADDR_` | (Required) Address for the additional LED drivers | | @@ -127,7 +126,6 @@ Here is an example using 2 drivers. ```c #define DRIVER_ADDR_2 0b0100001 -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 66 #define DRIVER_2_LED_TOTAL 42 #define LED_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -159,7 +157,7 @@ Then Define the array listing all the LEDs you want to override in your ` If using one of the above defines you can skip to gesture settings. + +| Setting | Description | Default | +| -------------------------------- | ---------------------------------------------------------- | ------------- | +| `AZOTEQ_IQS5XX_WIDTH_MM` | (Required) Width of the trackpad sensor in millimeters. | _not defined_ | +| `AZOTEQ_IQS5XX_HEIGHT_MM` | (Required) Height of the trackpad sensor in millimeters. | _not defined_ | +| `AZOTEQ_IQS5XX_RESOLUTION_X` | (Optional) Specify X resolution for CPI calculation. | _not defined_ | +| `AZOTEQ_IQS5XX_RESOLUTION_Y` | (Optional) Specify Y resolution for CPI calculation. | _not defined_ | + +**`AZOTEQ_IQS5XX_RESOLUTION_X/Y`** fall back resolutions are provided within the driver based on controller model. + +| I2C Setting | Description | Default | +| ------------------------- | ------------------------------------------------------------------------------- | ------- | +| `AZOTEQ_IQS5XX_ADDRESS` | (Optional) Sets the I2C Address for the Azoteq trackpad | `0xE8` | +| `AZOTEQ_IQS5XX_TIMEOUT_MS`| (Optional) The timeout for i2c communication with in milliseconds. | `10` | + +#### Gesture settings + +| Setting | Description | Default | +| ----------------------------------------- | ------------------------------------------------------------------------------------ | ----------- | +| `AZOTEQ_IQS5XX_TAP_ENABLE` | (Optional) Enable single finger tap. (Left click) | `true` | +| `AZOTEQ_IQS5XX_TWO_FINGER_TAP_ENABLE` | (Optional) Enable two finger tap. (Right click) | `true` | +| `AZOTEQ_IQS5XX_PRESS_AND_HOLD_ENABLE` | (Optional) Emulates holding left click to select text. | `false` | +| `AZOTEQ_IQS5XX_SWIPE_X_ENABLE` | (Optional) Enable swipe gestures X+ (Mouse Button 5) / X- (Mouse Button 4) | `false` | +| `AZOTEQ_IQS5XX_SWIPE_Y_ENABLE` | (Optional) Enable swipe gestures Y+ (Mouse Button 3) / Y- (Mouse Button 6) | `false` | +| `AZOTEQ_IQS5XX_ZOOM_ENABLE` | (Optional) Enable zoom gestures Zoom Out (Mouse Button 7) / Zoom In (Mouse Button 8) | `false` | +| `AZOTEQ_IQS5XX_SCROLL_ENABLE` | (Optional) Enable scrolling using two fingers. | `true` | +| `AZOTEQ_IQS5XX_TAP_TIME` | (Optional) Maximum time in ms for tap to be registered. | `150` | +| `AZOTEQ_IQS5XX_TAP_DISTANCE` | (Optional) Maximum deviation in pixels before single tap is no longer valid. | `25` | +| `AZOTEQ_IQS5XX_HOLD_TIME` | (Optional) Minimum time in ms for press and hold. | `300` | +| `AZOTEQ_IQS5XX_SWIPE_INITIAL_TIME` | (Optional) Maximum time to travel initial distance before swipe is registered. | `150` | +| `AZOTEQ_IQS5XX_SWIPE_INITIAL_DISTANCE` | (Optional) Minimum travel in pixels before swipe is registered. | `300` | +| `AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_TIME` | (Optional) Maximum time to travel consecutive distance before swipe is registered. | `0` | +| `AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_DISTANCE`| (Optional) Minimum travel in pixels before a consecutive swipe is registered. | `2000` | +| `AZOTEQ_IQS5XX_SCROLL_INITIAL_DISTANCE` | (Optional) Minimum travel in pixels before scroll is registered. | `50` | +| `AZOTEQ_IQS5XX_ZOOM_INITIAL_DISTANCE` | (Optional) Minimum travel in pixels before zoom is registered. | `50` | +| `AZOTEQ_IQS5XX_ZOOM_CONSECUTIVE_DISTANCE` | (Optional) Maximum time to travel zoom distance before zoom is registered. | `25` | + +#### Rotation settings + +| Setting | Description | Default | +| ---------------------------- | ---------------------------------------------------------- | ------------- | +| `AZOTEQ_IQS5XX_ROTATION_90` | (Optional) Configures hardware for 90 degree rotation. | _not defined_ | +| `AZOTEQ_IQS5XX_ROTATION_180` | (Optional) Configures hardware for 180 degree rotation. | _not defined_ | +| `AZOTEQ_IQS5XX_ROTATION_270` | (Optional) Configures hardware for 270 degree rotation. | _not defined_ | + ### Cirque Trackpad To use the Cirque Trackpad sensor, add this to your `rules.mk`: @@ -735,9 +800,11 @@ layer_state_t layer_state_set_user(layer_state_t state) { #### Set different target layer when a particular layer is active: -The below code will change the auto mouse layer target to `_MOUSE_LAYER_2` when `_DEFAULT_LAYER_2` is highest default layer state. -*NOTE: that `auto_mouse_layer_off` is used here instead of `remove_auto_mouse_layer` as `default_layer_state_set_*` stack is separate from the `layer_state_set_*` stack* if something similar was to be done in `layer_state_set_user `state = remove_auto_mouse_layer(state, false)` should be used instead -*ADDITIONAL NOTE: `AUTO_MOUSE_TARGET_LAYER` is checked if already set to avoid deactivating the target layer unless needed* +The below code will change the auto mouse layer target to `_MOUSE_LAYER_2` when `_DEFAULT_LAYER_2` is highest default layer state. + +*NOTE: that `auto_mouse_layer_off` is used here instead of `remove_auto_mouse_layer` as `default_layer_state_set_*` stack is separate from the `layer_state_set_*` stack*, if something similar was to be done in `layer_state_set_user`, `state = remove_auto_mouse_layer(state, false)` should be used instead. + +*ADDITIONAL NOTE: `AUTO_MOUSE_TARGET_LAYER` is checked if already set to avoid deactivating the target layer unless needed*. ```c // in keymap.c diff --git a/docs/feature_programmable_button.md b/docs/feature_programmable_button.md index 43a9e7fc1602..091464e19c03 100644 --- a/docs/feature_programmable_button.md +++ b/docs/feature_programmable_button.md @@ -2,7 +2,7 @@ Programmable Buttons are keys that have no predefined meaning. This means they can be processed on the host side by custom software without the operating system trying to interpret them. -The keycodes are emitted according to the HID 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`). +The keycodes are emitted according to the HID Telephony Device page (`0x0B`), Programmable Button usage (`0x09`). On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#` keycodes (up to `KEY_MACRO30`). ?> Currently there is no known support in Windows or macOS. It may be possible to write a custom HID driver to receive these usages, but this is out of the scope of the QMK documentation. diff --git a/docs/feature_ps2_mouse.md b/docs/feature_ps2_mouse.md index e714d9b86763..766fd6fe78f5 100644 --- a/docs/feature_ps2_mouse.md +++ b/docs/feature_ps2_mouse.md @@ -155,6 +155,29 @@ In your keyboard config.h: #endif ``` +### RP2040 PIO Version :id=rp2040-pio-version + +The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU. + +There are strict requirements for pin ordering but any pair of GPIO pins can be used. The GPIO used for clock must be directly after data, see the included info.json snippet for an example of correct order. + +You may optionally switch the PIO peripheral used with the following define in config.h: +```c +#define PS2_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the PS2 implementation uses the PIO0 peripheral +``` + +Example info.json content: + +```json + "ps2": { + "clock_pin": "GP1", + "data_pin": "GP0", + "driver": "vendor", + "enabled": true, + "mouse_enabled": true + } +``` + ## Additional Settings :id=additional-settings ### PS/2 Mouse Features :id=ps2-mouse-features diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index 44899d70d9d2..824ff50648a2 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -19,15 +19,14 @@ You can use between 1 and 4 IS31FL3731 IC's. Do not specify `DRIVER_ADDR_` de | Variable | Description | Default | |----------|-------------|---------| -| `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 | | +| `IS31FL3731_I2C_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | +| `IS31FL3731_I2C_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | +| `IS31FL3731_DEGHOST` | (Optional) Set this define to enable de-ghosting by halving Vcc during blanking time | | | `RGB_MATRIX_LED_COUNT` | (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 | | -| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | | -| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | | +| `IS31FL3731_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | +| `IS31FL3731_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | +| `IS31FL3731_I2C_ADDRESS_3` | (Optional) Address for the third RGB driver | | +| `IS31FL3731_I2C_ADDRESS_4` | (Optional) Address for the fourth RGB driver | | Here is an example using 2 drivers. @@ -35,14 +34,15 @@ Here is an example using 2 drivers. // This is a 7-bit address, that gets left-shifted and bit 0 // set to 0 for write, 1 for read (as per I2C protocol) // The address will vary depending on your wiring: -// 0b1110100 AD <-> GND -// 0b1110111 AD <-> VCC -// 0b1110101 AD <-> SCL -// 0b1110110 AD <-> SDA -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110110 - -#define DRIVER_COUNT 2 +// 00 AD <-> GND +// 01 AD <-> SCL +// 10 AD <-> SDA +// 11 AD <-> VCC +// ADDR represents A1:A0 of the 7-bit address. +// The result is: 0b11101(ADDR) +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA + #define DRIVER_1_LED_TOTAL 25 #define DRIVER_2_LED_TOTAL 24 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -50,12 +50,12 @@ Here is an example using 2 drivers. !> Note the parentheses, this is so when `RGB_MATRIX_LED_COUNT` 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`. +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 `IS31FL3731_I2C_ADDRESS_1` for one and `IS31FL3731_I2C_ADDRESS_2` for the other one. Then, in `g_is31fl3731_leds`, fill out the correct driver index (0 or 1). If using one address, use `IS31FL3731_I2C_ADDRESS_1` for both, and use index 0 for `g_is31fl3731_leds`. Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -83,34 +83,33 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_` de | Variable | Description | Default | |----------|-------------|---------| -| `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_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | -| `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 | | +| `IS31FL3733_I2C_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | +| `IS31FL3733_I2C_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | +| `IS31FL3733_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3733B only | 0 | +| `IS31FL3733_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | +| `IS31FL3733_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | +| `IS31FL3733_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | | `RGB_MATRIX_LED_COUNT` | (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 | | -| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | | -| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | | -| `DRIVER_SYNC_1` | (Optional) Sync configuration for the first RGB driver | 0 | -| `DRIVER_SYNC_2` | (Optional) Sync configuration for the second RGB driver | 0 | -| `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 | +| `IS31FL3733_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | +| `IS31FL3733_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | +| `IS31FL3733_I2C_ADDRESS_3` | (Optional) Address for the third RGB driver | | +| `IS31FL3733_I2C_ADDRESS_4` | (Optional) Address for the fourth RGB driver | | +| `IS31FL3733_SYNC_1` | (Optional) Sync configuration for the first RGB driver | 0 | +| `IS31FL3733_SYNC_2` | (Optional) Sync configuration for the second RGB driver | 0 | +| `IS31FL3733_SYNC_3` | (Optional) Sync configuration for the third RGB driver | 0 | +| `IS31FL3733_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 (`IS31FL3733_SWPULLUP`/`IS31FL3733_CSPULLUP` are given the value of `IS31FL3733_PUR_0R`), the values that can be set to enable de-ghosting are as follows: + +| `IS31FL3733_SWPULLUP/IS31FL3733_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) | +| `IS31FL3733_PUR_0R` | (default) Do not use the on-chip resistors/enable de-ghosting | +| `IS31FL3733_PUR_05KR` | The 0.5k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3733_PUR_3KR` | The 3k Ohm resistor used at all times | +| `IS31FL3733_PUR_4KR` | The 4k Ohm resistor used at all times | +| `IS31FL3733_PUR_8KR` | The 8k Ohm resistor used at all times | +| `IS31FL3733_PUR_16KR` | The 16k Ohm resistor used at all times | +| `IS31FL3733_PUR_32KR` | The 32k Ohm resistor used during blanking period (t_NOL) | Here is an example using 2 drivers. @@ -118,17 +117,16 @@ Here is an example using 2 drivers. // This is a 7-bit address, that gets left-shifted and bit 0 // set to 0 for write, 1 for read (as per I2C protocol) // The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC +// 00 ADDRn <-> GND +// 01 ADDRn <-> SCL +// 10 ADDRn <-> SDA +// 11 ADDRn <-> VCC // ADDR1 represents A1:A0 of the 7-bit address. // ADDR2 represents A3:A2 of the 7-bit address. // The result is: 0b101(ADDR2)(ADDR1) -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1010011 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 58 #define DRIVER_2_LED_TOTAL 10 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -141,7 +139,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 PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -170,31 +168,30 @@ Configure the hardware via your `config.h`: | Variable | Description | Default | |----------|-------------|---------| -| `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 - IS31FL3736B only | 0 | -| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | -| `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 | | +| `IS31FL3736_I2C_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | +| `IS31FL3736_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | +| `IS31FL3736_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3736B only | 0 | +| `IS31FL3736_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | +| `IS31FL3736_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | +| `IS31FL3736_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | | `RGB_MATRIX_LED_COUNT` | (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 | | -| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | | -| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | | +| `IS31FL3736_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | +| `IS31FL3736_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | +| `IS31FL3736_I2C_ADDRESS_3` | (Optional) Address for the third RGB driver | | +| `IS31FL3736_I2C_ADDRESS_4` | (Optional) Address for the fourth RGB driver | | -The IS31FL3736 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: +The IS31FL3736 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 (`IS31FL3736_SWPULLUP`/`IS31FL3736_CSPULLUP` are given the value of `IS31FL3736_PUR_0R`), the values that can be set to enable de-ghosting are as follows: -| `ISSI_SWPULLUP/ISSI_CSPULLUP` | Description | +| `IS31FL3736_SWPULLUP/IS31FL3736_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) | +| `IS31FL3736_PUR_0R` | (default) Do not use the on-chip resistors/enable de-ghosting | +| `IS31FL3736_PUR_05KR` | The 0.5k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3736_PUR_1KR` | The 1k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3736_PUR_2KR` | The 2k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3736_PUR_4KR` | The 4k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3736_PUR_8KR` | The 8k Ohm resistor during blanking period (t_NOL) | +| `IS31FL3736_PUR_16KR` | The 16k Ohm resistor during blanking period (t_NOL) | +| `IS31FL3736_PUR_32KR` | The 32k Ohm resistor used during blanking period (t_NOL) | Here is an example using 2 drivers. @@ -202,16 +199,16 @@ Here is an example using 2 drivers. // This is a 7-bit address, that gets left-shifted and bit 0 // set to 0 for write, 1 for read (as per I2C protocol) // The address will vary depending on your wiring: -// 0000 <-> GND -// 0101 <-> SCL -// 1010 <-> SDA -// 1111 <-> VCC -// ADDR represents A3:A0 of the 7-bit address. -// The result is: 0b101(ADDR) -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1010001 +// 00 ADDRn <-> GND +// 01 ADDRn <-> SCL +// 10 ADDRn <-> SDA +// 11 ADDRn <-> VCC +// ADDR1 represents A1:A0 of the 7-bit address. +// ADDR2 represents A3:A2 of the 7-bit address. +// The result is: 0b101(ADDR2)(ADDR1) +#define IS31FL3736_I2C_ADDRESS_1 IS31FL3736_I2C_ADDRESS_GND_GND +#define IS31FL3736_I2C_ADDRESS_2 IS31FL3736_I2C_ADDRESS_GND_SCL -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 30 #define DRIVER_2_LED_TOTAL 32 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -221,7 +218,7 @@ Here is an example using 2 drivers. Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3736_led_t PROGMEM g_is31fl3736_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -246,31 +243,30 @@ Configure the hardware via your `config.h`: | Variable | Description | Default | |----------|-------------|---------| -| `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 - IS31FL3737B only | 0 | -| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | -| `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 | | +| `IS31FL3737_I2C_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 | +| `IS31FL3737_I2C_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 | +| `IS31FL3737_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3737B only | 0 | +| `IS31FL3737_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF | +| `IS31FL3737_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | +| `IS31FL3737_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) | | `RGB_MATRIX_LED_COUNT` | (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 | | -| `DRIVER_ADDR_3` | (Optional) Address for the third RGB driver | | -| `DRIVER_ADDR_4` | (Optional) Address for the fourth RGB driver | | +| `IS31FL3737_I2C_ADDRESS_1` | (Required) Address for the first RGB driver | | +| `IS31FL3737_I2C_ADDRESS_2` | (Optional) Address for the second RGB driver | | +| `IS31FL3737_I2C_ADDRESS_3` | (Optional) Address for the third RGB driver | | +| `IS31FL3737_I2C_ADDRESS_4` | (Optional) Address for the fourth 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: +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 (`IS31FL3737_SWPULLUP`/`IS31FL3737_CSPULLUP` are given the value of `IS31FL3737_PUR_0R`), the values that can be set to enable de-ghosting are as follows: -| `ISSI_SWPULLUP/ISSI_CSPULLUP` | Description | +| `IS31FL3737_SWPULLUP/IS31FL3737_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) | +| `IS31FL3737_PUR_0R` | (default) Do not use the on-chip resistors/enable de-ghosting | +| `IS31FL3737_PUR_05KR` | The 0.5k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3737_PUR_1KR` | The 1k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3737_PUR_2KR` | The 2k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3737_PUR_4KR` | The 4k Ohm resistor used during blanking period (t_NOL) | +| `IS31FL3737_PUR_8KR` | The 8k Ohm resistor during blanking period (t_NOL) | +| `IS31FL3737_PUR_16KR` | The 16k Ohm resistor during blanking period (t_NOL) | +| `IS31FL3737_PUR_32KR` | The 32k Ohm resistor used during blanking period (t_NOL) | Here is an example using 2 drivers. @@ -278,16 +274,15 @@ Here is an example using 2 drivers. // This is a 7-bit address, that gets left-shifted and bit 0 // set to 0 for write, 1 for read (as per I2C protocol) // The address will vary depending on your wiring: -// 0000 <-> GND -// 0101 <-> SCL -// 1010 <-> SDA -// 1111 <-> VCC +// 0000 ADDR <-> GND +// 0101 ADDR <-> SCL +// 1010 ADDR <-> SDA +// 1111 ADDR <-> VCC // ADDR represents A3:A0 of the 7-bit address. // The result is: 0b101(ADDR) -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1010001 +#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND +#define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_SCL -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 30 #define DRIVER_2_LED_TOTAL 36 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -297,7 +292,7 @@ Here is an example using 2 drivers. Define these arrays listing all the LEDs in your `.c`: ```c -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -338,7 +333,6 @@ 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 | -| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | | `DRIVER_ADDR_1` | (Optional) Address for the first RGB driver | | | `DRIVER_ADDR_` | (Required) Address for the additional RGB drivers | | @@ -373,7 +367,6 @@ Here is an example using 2 drivers. ```c #define DRIVER_ADDR_2 0b0100001 -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 66 #define DRIVER_2_LED_TOTAL 42 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -407,7 +400,7 @@ Then Define the array listing all the LEDs you want to override in your `_xxx` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`: +You can use up to 2 AW20216S IC's. Do not specify `DRIVER__xxx` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`: | Variable | Description | Default | |----------|-------------|---------| -| `DRIVER_1_CS` | (Required) MCU pin connected to first RGB driver chip select line | B13 | -| `DRIVER_2_CS` | (Optional) MCU pin connected to second RGB driver chip select line | | -| `DRIVER_1_EN` | (Required) MCU pin connected to first RGB driver hardware enable line | C13 | -| `DRIVER_2_EN` | (Optional) MCU pin connected to second RGB driver hardware enable line | | +| `AW20216S_CS_PIN_1` | (Required) MCU pin connected to first RGB driver chip select line | B13 | +| `AW20216S_CS_PIN_2` | (Optional) MCU pin connected to second RGB driver chip select line | | +| `AW20216S_EN_PIN_1` | (Required) MCU pin connected to first RGB driver hardware enable line | C13 | +| `AW20216S_EN_PIN_2` | (Optional) MCU pin connected to second RGB driver hardware enable line | | | `DRIVER_1_LED_TOTAL` | (Required) How many RGB lights are connected to first RGB driver | | | `DRIVER_2_LED_TOTAL` | (Optional) How many RGB lights are connected to second RGB driver | | -| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | | | `RGB_MATRIX_LED_COUNT` | (Required) How many RGB lights are present across all drivers | | -| `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 | -| `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 | -| `AW_SPI_MODE` | (Optional) Mode for SPI communication (0-3, defines polarity and phase of the clock) | 3 | -| `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 | +| `AW20216S_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 | +| `AW20216S_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 | +| `AW20216S_SPI_MODE` | (Optional) Mode for SPI communication (0-3, defines polarity and phase of the clock) | 3 | +| `AW20216S_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 | Here is an example using 2 drivers. ```c -#define DRIVER_1_CS B13 -#define DRIVER_2_CS B14 +#define AW20216S_CS_PIN_1 B13 +#define AW20216S_CS_PIN_2 B14 // Hardware enable lines may be connected to the same pin -#define DRIVER_1_EN C13 -#define DRIVER_2_EN C13 +#define AW20216S_EN_PIN_1 C13 +#define AW20216S_EN_PIN_2 C13 -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 66 #define DRIVER_2_LED_TOTAL 32 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -510,10 +501,10 @@ Here is an example using 2 drivers. Define these arrays listing all the LEDs in your `.c`: ```c -const aw_led PROGMEM g_aw_leds[RGB_MATRIX_LED_COUNT] = { -/* Each AW20216 channel is controlled by a register at some offset between 0x00 +const aw20216s_led_t PROGMEM g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { +/* Each AW20216S 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 + * See drivers/led/aw20216s.h for the mapping between register offsets and * driver pin locations. * driver * | R location @@ -642,6 +633,7 @@ enum rgb_matrix_effects { RGB_MATRIX_DUAL_BEACON, // Full gradient spinning around center of keyboard RGB_MATRIX_RAINBOW_BEACON, // Full tighter gradient spinning around center of keyboard RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard + RGB_MATRIX_FLOWER_BLOOMING, // Full tighter gradient of first half scrolling left to right and second half scrolling right to left RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue 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 @@ -654,16 +646,20 @@ enum rgb_matrix_effects { RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation RGB_MATRIX_SOLID_REACTIVE_SIMPLE, // Pulses keys hit to hue & value then fades value out RGB_MATRIX_SOLID_REACTIVE, // Static single hue, pulses keys hit to shifted hue then fades to current hue - RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out - RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out - RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out - RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out - RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out - RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out + RGB_MATRIX_SOLID_REACTIVE_WIDE, // Hue & value pulse near a single key hit then fades value out + RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE, // Hue & value pulse near multiple key hits then fades value out + RGB_MATRIX_SOLID_REACTIVE_CROSS, // Hue & value pulse the same column and row of a single key hit then fades value out + RGB_MATRIX_SOLID_REACTIVE_MULTICROSS, // Hue & value pulse the same column and row of multiple key hits then fades value out + RGB_MATRIX_SOLID_REACTIVE_NEXUS, // Hue & value pulse away on the same column and row of a single key hit then fades value out + RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS, // Hue & value pulse away on the same column and row of multiple key hits then fades value out RGB_MATRIX_SPLASH, // Full gradient & value pulse away from a single key hit then fades value out RGB_MATRIX_MULTISPLASH, // Full gradient & value pulse away from multiple key hits then fades value out RGB_MATRIX_SOLID_SPLASH, // Hue & value pulse away from a single key hit then fades value out RGB_MATRIX_SOLID_MULTISPLASH, // Hue & value pulse away from multiple key hits then fades value out + RGB_MATRIX_STARLIGHT, // LEDs turn on and off at random at varying brightness, maintaining user set color + RGB_MATRIX_STARLIGHT_DUAL_HUE, // LEDs turn on and off at random at varying brightness, modifies user set hue by +- 30 + RGB_MATRIX_STARLIGHT_DUAL_SAT, // LEDs turn on and off at random at varying brightness, modifies user set saturation by +- 30 + RGB_MATRIX_RIVERFLOW, // Modification to breathing animation, offset's animation depending on key location to simulate a river flowing RGB_MATRIX_EFFECT_MAX }; ``` @@ -694,6 +690,7 @@ You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `confi |`#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_FLOWER_BLOOMING` |Enables `RGB_MATRIX_FLOWER_BLOOMING` | |`#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` | @@ -702,6 +699,10 @@ You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `confi |`#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL` |Enables `RGB_MATRIX_PIXEL_FRACTAL` | |`#define ENABLE_RGB_MATRIX_PIXEL_FLOW` |Enables `RGB_MATRIX_PIXEL_FLOW` | |`#define ENABLE_RGB_MATRIX_PIXEL_RAIN` |Enables `RGB_MATRIX_PIXEL_RAIN` | +|`#define ENABLE_RGB_MATRIX_STARLIGHT` |Enables `RGB_MATRIX_STARLIGHT` | +|`#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_HUE` |Enables `RGB_MATRIX_STARLIGHT_DUAL_HUE` | +|`#define ENABLE_RGB_MATRIX_STARLIGHT_DUAL_SAT` |Enables `RGB_MATRIX_STARLIGHT_DUAL_SAT` | +|`#define ENABLE_RGB_MATRIX_RIVERFLOW` |Enables `RGB_MATRIX_RIVERFLOW` | |Framebuffer Defines |Description | |------------------------------------------------------|----------------------------------------------| @@ -875,6 +876,7 @@ These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set #define RGB_MATRIX_DEFAULT_HUE 0 // Sets the default hue value, if none has been set #define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set +#define RGB_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set #define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set #define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature) diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index 39b7e6a6f1e1..8a64454b0db5 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -102,6 +102,7 @@ Your RGB lighting can be configured by placing these `#define`s in your `config. |`RGBLIGHT_DEFAULT_SAT` |`UINT8_MAX` (255) |The default saturation to use upon clearing the EEPROM | |`RGBLIGHT_DEFAULT_VAL` |`RGBLIGHT_LIMIT_VAL` |The default value (brightness) to use upon clearing the EEPROM | |`RGBLIGHT_DEFAULT_SPD` |`0` |The default speed to use upon clearing the EEPROM | +|`RGBLIGHT_DEFAULT_ON` |`true` |Enable RGB lighting upon clearing the EEPROM | ## Effects and Animations @@ -370,9 +371,9 @@ If you need to change your RGB lighting in code, for example in a macro to chang Example: ```c -sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); // led 0 -sethsv(HSV_RED, (LED_TYPE *)&led[1]); // led 1 -sethsv(HSV_GREEN, (LED_TYPE *)&led[2]); // led 2 +sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); // led 0 +sethsv(HSV_RED, (rgb_led_t *)&led[1]); // led 1 +sethsv(HSV_GREEN, (rgb_led_t *)&led[2]); // led 2 rgblight_set(); // Utility functions do not call rgblight_set() automatically, so they need to be called explicitly. ``` @@ -524,7 +525,6 @@ By defining `RGBLIGHT_LED_MAP` as in the example below, you can specify the LED ``` simple mapped -``` ## Clipping Range Using the `rgblight_set_clipping_range()` function, you can prepare more buffers than the actual number of LEDs, and output some of the buffers to the LEDs. This is useful if you want the split keyboard to treat left and right LEDs as logically contiguous. @@ -544,11 +544,41 @@ In addition to setting the Clipping Range, you can use `RGBLIGHT_LED_MAP` togeth #define RGBLED_NUM 8 #define RGBLIGHT_LED_MAP { 7, 6, 5, 4, 3, 2, 1, 0 } -// some soruce - rgblight_set_clipping_range(3, 4); +// some source +rgblight_set_clipping_range(3, 4); ``` clip mapped ## Hardware Modification If your keyboard lacks onboard underglow LEDs, you may often be able to solder on an RGB LED strip yourself. You will need to find an unused pin to wire to the data pin of your LED strip. Some keyboards may break out unused pins from the MCU to make soldering easier. The other two pins, VCC and GND, must also be connected to the appropriate power pins. + +## Velocikey + +Velocikey is a feature that lets you control the speed of lighting effects (like the Rainbow Swirl effect) with the speed of your typing. The faster you type, the faster the lights will go! + +### Usage +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.: + +``` +MOUSEKEY_ENABLE = no +STENO_ENABLE = no +EXTRAKEY_ENABLE = yes +VELOCIKEY_ENABLE = yes +``` + +Then, while using your keyboard, you need to also turn it on with the `VK_TOGG` keycode, which toggles the feature on and off. + +The following light effects will all be controlled by Velocikey when it is enabled: + - RGB Breathing + - RGB Rainbow Mood + - RGB Rainbow Swirl + - RGB Snake + - RGB Knight + +Support for LED breathing effects is planned but not available yet. + + As long as Velocikey is enabled, it will control the speed regardless of any other speed setting that your RGB lights are currently on. + + ### Configuration + Velocikey doesn't currently support any configuration via keyboard settings. If you want to adjust something like the speed increase or decay rate, you would need to edit `velocikey.c` and adjust the values there to achieve the kinds of speeds that you like. diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index 1705ea922217..8f695a2b7c7d 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -205,7 +205,7 @@ This sets the pin to be used for serial communication. If you're not using seria However, if you are using serial and I2C on the board, you will need to set this, and to something other than D0 and D1 (as these are used for I2C communication). ```c -#define SELECT_SOFT_SERIAL_SPEED {#}` +#define SELECT_SOFT_SERIAL_SPEED {#} ``` If you're having issues with serial communication, you can change this value, as it controls the communication speed for serial. The default is 1, and the possible values are: @@ -298,7 +298,7 @@ This enables transmitting the pointing device status to the master side of the s #define SPLIT_HAPTIC_ENABLE ``` -This enables triggering of haptic feedback on the slave side of the split keyboard. For DRV2605L this will send the mode, but for solenoids it is expected that the desired mode is already set up on the slave. +This enables the triggering of haptic feedback on the slave side of the split keyboard. This will send information to the slave side such as the mode, dwell, and whether buzz is enabled. ```c #define SPLIT_ACTIVITY_ENABLE diff --git a/docs/feature_stenography.md b/docs/feature_stenography.md index df4c9c6ad353..5ca3ea945fc1 100644 --- a/docs/feature_stenography.md +++ b/docs/feature_stenography.md @@ -104,7 +104,7 @@ After enabling stenography and optionally selecting a protocol, you may also nee !> If you had *explicitly* set `VIRSTER_ENABLE = no`, none of the serial stenography protocols (GeminiPR, TX Bolt) will work properly. You are expected to either set it to `yes`, remove the line from your `rules.mk` or send the steno chords yourself in an alternative way using the [provided interceptable hooks](#interfacing-with-the-code). -In your keymap, create a new layer for Plover, that you can fill in with the [steno keycodes](#keycode-reference) (you will need to include `keymap_steno.h`, see `planck/keymaps/steno/keymap.c` for an example). Remember to create a key to switch to the layer as well as a key for exiting the layer. +In your keymap, create a new layer for Plover, that you can fill in with the [steno keycodes](#keycode-reference). Remember to create a key to switch to the layer as well as a key for exiting the layer. Once you have your keyboard flashed, launch Plover. Click the 'Configure...' button. In the 'Machine' tab, select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control). @@ -149,8 +149,6 @@ At the end of this scenario given as an example, `chord` would have five bits se ## Keycode Reference :id=keycode-reference -You must include `keymap_steno.h` to your `keymap.c` with `#include "keymap_steno.h"` before you can use these keycodes - > Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both. |GeminiPR|TX Bolt|Steno Key| @@ -198,7 +196,7 @@ You must include `keymap_steno.h` to your `keymap.c` with `#include "keymap_sten |`STN_RES2`||(Reset 2)| |`STN_PWR`||(Power)| -If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file. +If you do not want to hit two keys with one finger combined keycodes can be used. These cause both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file. |Combined key | Key1 | Key 2 | |---------------|--------|----------| diff --git a/docs/feature_tri_layer.md b/docs/feature_tri_layer.md index aa6c87719ca6..ade0040cc7b1 100644 --- a/docs/feature_tri_layer.md +++ b/docs/feature_tri_layer.md @@ -40,7 +40,7 @@ Eg, if you wanted to set the "Adjust" layer to be layer 5, you'd add this to you | `set_tri_layer_lower_layer(layer)` | Changes the "lower" layer*. | | `set_tri_layer_upper_layer(layer)` | Changes the "upper" layer*. | | `set_tri_layer_adjust_layer(layer)` | Changes the "adjust" layer*. | -| `set_tri_layer_layers(lower, upper, adjust)` | Stes the "lower", "upper" and "adjust" layers*. | +| `set_tri_layer_layers(lower, upper, adjust)` | Sets the "lower", "upper" and "adjust" layers*. | | `get_tri_layer_lower_layer()` | Gets the current "lower" layer. | | `get_tri_layer_upper_layer()` | Gets the current "upper" layer. | | `get_tri_layer_adjust_layer()` | Gets the current "adjust" layer. | diff --git a/docs/feature_unicode.md b/docs/feature_unicode.md index 341084f9260a..2c6d2ef002e5 100644 --- a/docs/feature_unicode.md +++ b/docs/feature_unicode.md @@ -140,7 +140,7 @@ To set the list of enabled input modes, add the `UNICODE_SELECTED_MODES` define ```c #define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX // or -#define UNICODE_SELECTED_MODES UNICODE_MODE_MAC, UNICODE_MODE_WINCOMPOSE +#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE ``` These modes can then be cycled through using the `UC_NEXT` and `UC_PREV` keycodes. You can also switch to any input mode, even if it is not specified in `UNICODE_SELECTED_MODES`, using their respective keycodes. @@ -151,7 +151,7 @@ If your keyboard has working EEPROM, it will remember the last used input mode a ### ** macOS ** -**Mode Name:** `UNICODE_MODE_MAC` +**Mode Name:** `UNICODE_MODE_MACOS` macOS has built-in support for Unicode input as its own input source. It supports all possible code points by way of surrogate pairs for code points above `U+FFFF`. diff --git a/docs/feature_userspace.md b/docs/feature_userspace.md index 8c617fe33a06..aabf18e393ee 100644 --- a/docs/feature_userspace.md +++ b/docs/feature_userspace.md @@ -1,5 +1,7 @@ # Userspace: Sharing Code Between Keymaps +!> Please note, userspace submissions to the upstream `qmk/qmk_firmware` repository are no longer being accepted. The userspace feature itself remains functional and can be configured locally. + If you use more than one keyboard with a similar keymap, you might see the benefit in being able to share code between them. Create your own folder in `users/` named the same as your keymap (ideally your GitHub username, ``) with the following structure: * `/users//` (added to the path automatically) diff --git a/docs/feature_velocikey.md b/docs/feature_velocikey.md deleted file mode 100644 index aeb1865e8aff..000000000000 --- a/docs/feature_velocikey.md +++ /dev/null @@ -1,29 +0,0 @@ -# Velocikey - -Velocikey is a feature that lets you control the speed of lighting effects (like the Rainbow Swirl effect) with the speed of your typing. The faster you type, the faster the lights will go! - -## Usage -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.: - -``` -MOUSEKEY_ENABLE = no -STENO_ENABLE = no -EXTRAKEY_ENABLE = yes -VELOCIKEY_ENABLE = yes -``` - -Then, while using your keyboard, you need to also turn it on with the `VK_TOGG` keycode, which toggles the feature on and off. - -The following light effects will all be controlled by Velocikey when it is enabled: - - RGB Breathing - - RGB Rainbow Mood - - RGB Rainbow Swirl - - RGB Snake - - RGB Knight - -Support for LED breathing effects is planned but not available yet. - - As long as Velocikey is enabled, it will control the speed regardless of any other speed setting that your RGB lights are currently on. - - ## Configuration - Velocikey doesn't currently support any configuration via keyboard settings. If you want to adjust something like the speed increase or decay rate, you would need to edit `velocikey.c` and adjust the values there to achieve the kinds of speeds that you like. diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md index 92b666b5e34a..faff0a1d7bfa 100644 --- a/docs/i2c_driver.md +++ b/docs/i2c_driver.md @@ -2,6 +2,18 @@ The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs. +## Usage :id=usage + +In most cases, the I2C Master driver code is automatically included if you are using a feature or driver which requires it, such as [OLED](feature_oled_driver.md). + +However, if you need to use the driver standalone, add the following to your `rules.mk`: + +```make +I2C_DRIVER_REQUIRED = yes +``` + +You can then call the I2C API by including `i2c_master.h` in your code. + ## I2C Addressing :id=note-on-i2c-addresses All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md index 4d6f2348d5cf..f26665e61431 100644 --- a/docs/ja/_summary.md +++ b/docs/ja/_summary.md @@ -112,7 +112,6 @@ * [分割キーボード](ja/feature_split_keyboard.md) * [速記](ja/feature_stenography.md) * [感熱式プリンタ](ja/feature_thermal_printer.md) - * [Velocikey](ja/feature_velocikey.md) * QMK の開発 * [PR チェックリスト](ja/pr_checklist.md) diff --git a/docs/ja/contributing.md b/docs/ja/contributing.md index 56cc4d312daa..ef1271ad160b 100644 --- a/docs/ja/contributing.md +++ b/docs/ja/contributing.md @@ -110,11 +110,11 @@ enum my_keycodes { 開発環境をセットアップした場合は、プルリクエストを開く前に以下のコマンドを `qmk_firmware/` フォルダから実行することで、あなたの変更をプレビューすることができます: - ./bin/qmk docs + qmk docs または、Python 3 のみがインストールされている場合: - python3 -m http.server 8936 + python3 -m http.server 8936 --directory docs その後、ウェブブラウザで、`http://localhost:8936/` を表示します。 diff --git a/docs/ja/feature_velocikey.md b/docs/ja/feature_velocikey.md deleted file mode 100644 index b13969a195e7..000000000000 --- a/docs/ja/feature_velocikey.md +++ /dev/null @@ -1,34 +0,0 @@ -# Velocikey - - - -Velocikey は入力の速度を使って(レインボー渦巻効果のような)ライト効果の速度を制御できる機能です。速く入力すればするほどライトが速くなります! - -## 使用法 -Velocikey を使うためには、2つのステップがあります。最初に、キーボードをコンパイルする時に、`rules.mk` に `VELOCIKEY_ENABLE=yes` を設定する必要があります。例えば: - -``` -MOUSEKEY_ENABLE = no -STENO_ENABLE = no -EXTRAKEY_ENABLE = yes -VELOCIKEY_ENABLE = yes -``` - -次に、キーボードの使用中に、VLK_TOG キーコードを使って Velocikey を有効にする必要もあります。これは機能をオンおよびオフにします。 - -以下の全てのライト効果が、Velocikey を有効にすることで制御されます: -- RGB 明滅動作 -- RGB レインボームード -- RGB レインボー渦巻 -- RGB スネーク -- RGB ナイト - -LED 明滅動作の効果のサポートは計画されていますがまだ利用できません。 - -Velocikey が有効になっている限り、現在オンになっている RGB ライトの他の全ての速度設定に関係なく、速度が制御されます。 - -## 設定 -Velocikey は現在のところキーボード設定を介したどのような設定もサポートしません。速度の増加あるいは減少率などを調整したい場合は、`velocikey.c` を編集し、そこで値を調整して、好みの速度を実現する必要があります。 diff --git a/docs/ja/tap_hold.md b/docs/ja/tap_hold.md index 00b80c8b22ca..c9d94d07ce2e 100644 --- a/docs/ja/tap_hold.md +++ b/docs/ja/tap_hold.md @@ -160,7 +160,7 @@ bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) { 「キー別」の関数全てにキーレコードを含んでいることに気付いたかもしれません。そしてなぜそうしたのか不思議に思っているかもしれません。 -まぁ、それは単純に本当にカスタマイズのためです。ただし、具体的には、それはキーボードの配線方法によって異なります。例えば、各行が実際にキーボードのマトリックスの1行を使っている場合、キーコード全体をチェックする代わりに、`if (record->event.row == 3)` を使うほうが簡単かもしれません。これは、ホームキー行でタップホールドタイプのキーを使っている人にとって特に便利です。そのため、通常のタイピングを妨げないように微調整することができるのではないでしょうか。 +まぁ、それは単純に本当にカスタマイズのためです。ただし、具体的には、それはキーボードの配線方法によって異なります。例えば、各行が実際にキーボードのマトリックスの1行を使っている場合、キーコード全体をチェックする代わりに、`if (record->event.key.row == 3)` を使うほうが簡単かもしれません。これは、ホームキー行でタップホールドタイプのキーを使っている人にとって特に便利です。そのため、通常のタイピングを妨げないように微調整することができるのではないでしょうか。 ## `*_kb` や `*_user` 関数が無いのはなぜですか? diff --git a/docs/newbs_building_firmware_workflow.md b/docs/newbs_building_firmware_workflow.md index e0cfdc77dfae..a3cc53ad8653 100644 --- a/docs/newbs_building_firmware_workflow.md +++ b/docs/newbs_building_firmware_workflow.md @@ -143,13 +143,13 @@ Replace `username.json` with the JSON file name that was downloaded from [QMK Co If you have completed all steps correctly, the folder `qmk_keymap/` will contain the following files: ``` -|-- .github -| `-- workflows -| `-- build.yml -|-- rules.mk -|-- config.h -|-- source.c -|-- username.json +├── .github +│   └── workflows +│   └── build.yml +├── rules.mk +├── config.h +├── source.c +└── username.json ``` To commit and push them into GitHub, run the following commands (replacing `gh-username` with your GitHub user name): diff --git a/docs/newbs_external_userspace.md b/docs/newbs_external_userspace.md new file mode 100644 index 000000000000..9bdf4b0b185c --- /dev/null +++ b/docs/newbs_external_userspace.md @@ -0,0 +1,96 @@ +# External QMK Userspace + +QMK Firmware now officially supports storing user keymaps outside of the normal QMK Firmware repository, allowing users to maintain their own keymaps without having to fork, modify, and maintain a copy of QMK Firmware themselves. + +External Userspace mirrors the structure of the main QMK Firmware repository, but only contains the keymaps that you wish to build. You can still use `keyboards//keymaps/` to store your keymaps, or you can use the `layouts//` system as before -- they're just stored external to QMK Firmware. + +The build system will still honor the use of `users/` if you rely on the traditional QMK Firmware [userspace feature](feature_userspace.md) -- it's now supported externally too, using the same location inside the External Userspace directory. + +Additionally, there is first-class support for using GitHub Actions to build your keymaps, allowing you to automatically compile your keymaps whenever you push changes to your External Userspace repository. + +!> External Userspace is new functionality and may have issues. Tighter integration with the `qmk` command will occur over time. + +?> Historical keymap.json and GitHub-based firmware build instructions can be found [here](newbs_building_firmware_workflow.md). This document supersedes those instructions, but they should still function correctly. + +## Setting up QMK Locally + +If you wish to build on your local machine, you will need to set up QMK locally. This is a one-time process, and is documented in the [newbs setup guide](https://docs.qmk.fm/#/newbs). + +!> If you wish to use any QMK CLI commands related to manipulating External Userspace definitions, you will currently need a copy of QMK Firmware as well. + +!> Building locally has a much shorter turnaround time than waiting for GitHub Actions to complete. + +## External Userspace Repository Setup (forked on GitHub) + +A basic skeleton External Userspace repository can be found [here](https://github.com/qmk/qmk_userspace). If you wish to keep your keymaps on GitHub (strongly recommended!), you can fork the repository and use it as a base: + +![Userspace Fork](https://i.imgur.com/hcegguh.png) + +Going ahead with your fork will copy it to your account, at which point you can clone it to your local machine and begin adding your keymaps: + +![Userspace Clone](https://i.imgur.com/CWYmsk8.png) + +```sh +cd $HOME +git clone https://github.com/{myusername}/qmk_userspace.git +qmk config user.overlay_dir="$(realpath qmk_userspace)" +``` + +## External Userspace Setup (locally stored only) + +If you don't want to use GitHub and prefer to keep everything local, you can clone a copy of the default External Userspace locally instead: + +```sh +cd $HOME +git clone https://github.com/qmk/qmk_userspace.git +qmk config user.overlay_dir="$(realpath qmk_userspace)" +``` + +## Adding a Keymap + +_These instructions assume you have already set up QMK locally, and have a copy of the QMK Firmware repository on your machine._ + +Keymaps within External Userspace are defined in the same way as they are in the main QMK repository. You can either use the `qmk new-keymap` command to create a new keymap, or manually create a new directory in the `keyboards` directory. + +Alternatively, you can use the `layouts` directory to store your keymaps, using the same layout system as the main QMK repository -- if you choose to do so you'll want to use the path `layouts///keymap.*` to store your keymap files, where `layout name` matches an existing layout in QMK, such as `tkl_ansi`. + +After creating your new keymap, building the keymap matches normal QMK usage: + +```sh +qmk compile -kb -km +``` + +!> The `qmk config user.overlay_dir=...` command must have been run when cloning the External Userspace repository for this to work correctly. + +## Adding the keymap to External Userspace build targets + +Once you have created your keymap, if you want to use GitHub Actions to build your firmware, you will need to add it to the External Userspace build targets. This is done using the `qmk userspace-add` command: + +```sh +# for a keyboard/keymap combo: +qmk userspace-add -kb -km +# or, for a json-based keymap (if kept "loose"): +qmk userspace-add +``` + +This updates the `qmk.json` file in the root of your External Userspace directory. If you're using a git repository to store your keymaps, now is a great time to commit and push to your own fork. + +## Compiling External Userspace build targets + +Once you have added your keymaps to the External Userspace build targets, you can compile all of them at once using the `qmk userspace-compile` command: + +```sh +qmk userspace-compile +``` + +All firmware builds you've added to the External Userspace build targets will be built, and the resulting firmware files will be placed in the root of your External Userspace directory. + +## Using GitHub Actions + +GitHub Actions can be used to automatically build your keymaps whenever you push changes to your External Userspace repository. If you have set up your list of build targets, this is as simple as enabling workflows in the GitHub repository settings: + +![Repo Settings](https://i.imgur.com/EVkxOt1.png) + +Any push will result in compilation of all configured builds, and once completed a new release containing the newly-minted firmware files will be created on GitHub, which you can subsequently download and flash to your keyboard: + +![Releases](https://i.imgur.com/zmwOL5P.png) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index a16207f267b1..68e37679b80b 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -56,7 +56,7 @@ QMK maintains a Homebrew tap and formula which will automatically install the CL You will need to install Homebrew. Follow the instructions on https://brew.sh. -!> **NOTE:** If you are using Apple Silicon, such as the M1, you will need to install a rosetta compatible version of Homebrew. This version does not override the base Homebrew. This can be done by running `arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`. See here: [Rosetta-compatible Homebrew](https://stackoverflow.com/questions/64882584/how-to-run-the-homebrew-installer-under-rosetta-2-on-m1-macbook) +?> If you are using an Apple Silicon machine, the installation process will take significantly longer because GitHub actions do not have native runners to build binary packages for the ARM and AVR toolchains. #### Installation @@ -64,10 +64,6 @@ Install the QMK CLI by running: brew install qmk/qmk/qmk -Install the QMK CLI on an Apple Silicon Mac by running: - - arch -x86_64 brew install qmk/qmk/qmk - ### ** Linux/WSL ** ?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197). diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md index c98504c8c0c5..0ca47933b5bb 100644 --- a/docs/pr_checklist.md +++ b/docs/pr_checklist.md @@ -39,7 +39,7 @@ If there are any inconsistencies with these recommendations, you're best off [cr ## Keymap PRs -Note that personal keymap submissions will no longer be accepted. This section applies to manufacturer-supported keymaps. +!> Note that personal keymap submissions will no longer be accepted. This section applies to manufacturer-supported keymaps. - `#include QMK_KEYBOARD_H` preferred to including specific board files - prefer layer `enum`s to `#define`s @@ -80,6 +80,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - Encoder Configuration - Bootmagic Configuration - LED Indicator Configuration + - Run `qmk format-json` on this file before submitting your PR. Be sure to append the `-i` flag to directly modify the file, or paste the outputted code into the file. - `readme.md` - must follow the [template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md) - flash command is present, and has `:flash` at end @@ -102,7 +103,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - keyboard `config.h` - no `#define DESCRIPTION` - no Magic Key Options, MIDI Options or HD44780 configuration - - user preference configurable `#define`s need to be moved to keymap `config.h` + - user preference configurable `#define`s should not be placed at the keyboard level - default values should not be redefined, such as `DEBOUNCE`, RGB related settings, etc. - feature specific documentation contains most default values - `grep` or alternative tool can be used to search for default values in core directories (e.g. `grep -r "define DEBOUNCE" quantum`) @@ -116,8 +117,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps - Vial-related files or changes will not be accepted, as they are not used by QMK firmware (no Vial-specific core code has been submitted or merged) - `.c` - - empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed - - empty `xxxx_xxxx_user()` or other user-level functions are disallowed at the keyboard level and must be moved to keymaps + - empty `xxxx_xxxx_kb()`, `xxxx_xxxx_user()`, or other weak-defined default implemented functions removed - commented-out functions removed too - `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](custom_quantum_functions.md?id=keyboard_pre_init_-function-documentation) - prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](custom_matrix.md?id=lite) @@ -137,7 +137,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard - standard layouts preferred in these keymaps, if possible - should use [encoder map feature](https://docs.qmk.fm/#/feature_encoders?id=encoder-map), rather than `encoder_update_user()` - default keymap should not enable VIA -- the VIA integration documentation requires a keymap called `via` -- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap +- submitters can add an example (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap - submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board - Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards) - Do not include KLE json files in the PR. These have no use within QMK. diff --git a/docs/quantum_painter.md b/docs/quantum_painter.md index 5e399183f8b2..181abf8bb37b 100644 --- a/docs/quantum_painter.md +++ b/docs/quantum_painter.md @@ -13,22 +13,24 @@ QUANTUM_PAINTER_DRIVERS += ...... You will also likely need to select an appropriate driver in `rules.mk`, which is listed below. -!> Quantum Painter is not currently integrated with system-level operations such as disabling displays after a configurable timeout, or when the keyboard goes into suspend. Users will need to handle this manually at the current time. +!> Quantum Painter is not currently integrated with system-level operations such as when the keyboard goes into suspend. Users will need to handle this manually at the current time. The QMK CLI can be used to convert from normal images such as PNG files or animated GIFs, as well as fonts from TTF files. Supported devices: -| Display Panel | Panel Type | Size | Comms Transport | Driver | -|----------------|--------------------|------------------|-----------------|---------------------------------------------| -| GC9A01 | RGB LCD (circular) | 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += gc9a01_spi` | -| ILI9163 | RGB LCD | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9163_spi` | -| ILI9341 | RGB LCD | 240x320 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9341_spi` | -| ILI9488 | RGB LCD | 320x480 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9488_spi` | -| SSD1351 | RGB OLED | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ssd1351_spi` | -| ST7735 | RGB LCD | 132x162, 80x160 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7735_spi` | -| ST7789 | RGB LCD | 240x320, 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7789_spi` | -| RGB565 Surface | Virtual | User-defined | None | `QUANTUM_PAINTER_DRIVERS += rgb565_surface` | +| Display Panel | Panel Type | Size | Comms Transport | Driver | +|---------------|--------------------|------------------|-----------------|------------------------------------------| +| GC9A01 | RGB LCD (circular) | 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += gc9a01_spi` | +| ILI9163 | RGB LCD | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9163_spi` | +| ILI9341 | RGB LCD | 240x320 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9341_spi` | +| ILI9488 | RGB LCD | 320x480 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ili9488_spi` | +| SSD1351 | RGB OLED | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += ssd1351_spi` | +| ST7735 | RGB LCD | 132x162, 80x160 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7735_spi` | +| ST7789 | RGB LCD | 240x320, 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += st7789_spi` | +| SH1106 (SPI) | Monochrome OLED | 128x64 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS += sh1106_spi` | +| SH1106 (I2C) | Monochrome OLED | 128x64 | I2C | `QUANTUM_PAINTER_DRIVERS += sh1106_i2c` | +| Surface | Virtual | User-defined | None | `QUANTUM_PAINTER_DRIVERS += surface` | ## Quantum Painter Configuration :id=quantum-painter-config @@ -188,7 +190,8 @@ Writing /home/qmk/qmk_firmware/keyboards/my_keeb/generated/noto11.qff.c... -### ** Common: Standard TFT (SPI + D/C + RST) ** + +### ** LCD ** Most TFT display panels use a 5-pin interface -- SPI SCK, SPI MOSI, SPI CS, D/C, and RST pins. @@ -302,32 +305,6 @@ The maximum number of displays can be configured by changing the following in yo Native color format rgb888 is compatible with ILI9488 -#### ** SSD1351 ** - -Enabling support for the SSD1351 in Quantum Painter is done by adding the following to `rules.mk`: - -```make -QUANTUM_PAINTER_ENABLE = yes -QUANTUM_PAINTER_DRIVERS += ssd1351_spi -``` - -Creating a SSD1351 device in firmware can then be done with the following API: - -```c -painter_device_t qp_ssd1351_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode); -``` - -The device handle returned from the `qp_ssd1351_make_spi_device` function can be used to perform all other drawing operations. - -The maximum number of displays can be configured by changing the following in your `config.h` (default is 1): - -```c -// 3 displays: -#define SSD1351_NUM_DEVICES 3 -``` - -Native color format rgb565 is compatible with SSD1351 - #### ** ST7735 ** Enabling support for the ST7735 in Quantum Painter is done by adding the following to `rules.mk`: @@ -386,62 +363,139 @@ Native color format rgb565 is compatible with ST7789 -### ** Common: Surfaces ** +### ** OLED ** -Quantum Painter has surface drivers which are able to target a buffer in RAM. In general, surfaces keep track of the "dirty" region -- the area that has been drawn to since the last flush -- so that when transferring to the display they can transfer the minimal amount of data to achieve the end result. +OLED displays tend to use 5-pin SPI when at larger resolutions, or when using color -- SPI SCK, SPI MOSI, SPI CS, D/C, and RST pins. Smaller OLEDs may use I2C instead. -!> These generally require significant amounts of RAM, so at large sizes and/or higher bit depths, they may not be usable on all MCUs. +When using these displays, either `spi_master` or `i2c_master` must already be correctly configured for both the platform and panel you're building for. + +For SPI, the pin assignments for SPI CS, D/C, and RST are specified during device construction -- for I2C the panel's address is specified instead. -#### ** RGB565 Surface ** +#### ** SSD1351 ** + +Enabling support for the SSD1351 in Quantum Painter is done by adding the following to `rules.mk`: + +```make +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += ssd1351_spi +``` + +Creating a SSD1351 device in firmware can then be done with the following API: + +```c +painter_device_t qp_ssd1351_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode); +``` + +The device handle returned from the `qp_ssd1351_make_spi_device` function can be used to perform all other drawing operations. + +The maximum number of displays can be configured by changing the following in your `config.h` (default is 1): + +```c +// 3 displays: +#define SSD1351_NUM_DEVICES 3 +``` + +Native color format rgb565 is compatible with SSD1351 + +#### ** SH1106 ** -Enabling support for RGB565 surfaces in Quantum Painter is done by adding the following to `rules.mk`: +Enabling support for the SH1106 in Quantum Painter is done by adding the following to `rules.mk`: ```make QUANTUM_PAINTER_ENABLE = yes -QUANTUM_PAINTER_DRIVERS += rgb565_surface +# For SPI: +QUANTUM_PAINTER_DRIVERS += sh1106_spi +# For I2C: +QUANTUM_PAINTER_DRIVERS += sh1106_i2c ``` -Creating a RGB565 surface in firmware can then be done with the following API: +Creating a SH1106 device in firmware can then be done with the following APIs: ```c -painter_device_t qp_rgb565_make_surface(uint16_t panel_width, uint16_t panel_height, void *buffer); +// SPI-based SH1106: +painter_device_t qp_sh1106_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode); +// I2C-based SH1106: +painter_device_t qp_sh1106_make_i2c_device(uint16_t panel_width, uint16_t panel_height, uint8_t i2c_address); ``` -The `buffer` is a user-supplied area of memory, and is assumed to be of the size `sizeof(uint16_t) * panel_width * panel_height`. +The device handle returned from the `qp_sh1106_make_???_device` function can be used to perform all other drawing operations. + +The maximum number of displays of each type can be configured by changing the following in your `config.h` (default is 1): + +```c +// 3 SPI displays: +#define SH1106_NUM_SPI_DEVICES 3 +// 3 I2C displays: +#define SH1106_NUM_I2C_DEVICES 3 +``` + +Native color format mono2 is compatible with SH1106 + + + +### ** Surface ** -The device handle returned from the `qp_rgb565_make_surface` function can be used to perform all other drawing operations. +Quantum Painter has a surface driver which is able to target a buffer in RAM. In general, surfaces keep track of the "dirty" region -- the area that has been drawn to since the last flush -- so that when transferring to the display they can transfer the minimal amount of data to achieve the end result. + +!> These generally require significant amounts of RAM, so at large sizes and/or higher bit depths, they may not be usable on all MCUs. + +Enabling support for surfaces in Quantum Painter is done by adding the following to `rules.mk`: + +```make +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += surface +``` + +Creating a surface in firmware can then be done with the following APIs: + +```c +// 16bpp RGB565 surface: +painter_device_t qp_make_rgb565_surface(uint16_t panel_width, uint16_t panel_height, void *buffer); +// 1bpp monochrome surface: +painter_device_t qp_make_mono1bpp_surface(uint16_t panel_width, uint16_t panel_height, void *buffer); +``` + +The `buffer` is a user-supplied area of memory, which can be statically allocated using `SURFACE_REQUIRED_BUFFER_BYTE_SIZE`: + +```c +// Buffer required for a 240x80 16bpp surface: +uint8_t framebuffer[SURFACE_REQUIRED_BUFFER_BYTE_SIZE(240, 80, 16)]; +``` + +The device handle returned from the `qp_make_?????_surface` function can be used to perform all other drawing operations. Example: ```c static painter_device_t my_surface; -static uint16_t my_framebuffer[320 * 240]; // Allocate a buffer for a 320x240 RGB565 display +static uint8_t my_framebuffer[SURFACE_REQUIRED_BUFFER_BYTE_SIZE(240, 80, 16)]; // Allocate a buffer for a 16bpp 240x80 RGB565 display void keyboard_post_init_kb(void) { - my_surface = qp_rgb565_make_surface(320, 240, my_framebuffer); + my_surface = qp_rgb565_make_surface(240, 80, my_framebuffer); qp_init(my_surface, QP_ROTATION_0); + keyboard_post_init_user(); } ``` -The maximum number of RGB565 surfaces can be configured by changing the following in your `config.h` (default is 1): +The maximum number of surfaces can be configured by changing the following in your `config.h` (default is 1): ```c // 3 surfaces: -#define RGB565_SURFACE_NUM_DEVICES 3 +#define SURFACE_NUM_DEVICES 3 ``` -To transfer the contents of the RGB565 surface to another display, the following API can be invoked: +To transfer the contents of the surface to another display of the same pixel format, the following API can be invoked: ```c -bool qp_rgb565_surface_draw(painter_device_t surface, painter_device_t display, uint16_t x, uint16_t y); +bool qp_surface_draw(painter_device_t surface, painter_device_t display, uint16_t x, uint16_t y, bool entire_surface); ``` -The `surface` is the surface to copy out from. The `display` is the target display to draw into. `x` and `y` are the target location to draw the surface pixel data. Under normal circumstances, the location should be consistent, as the dirty region is calculated with respect to the `x` and `y` coordinates -- changing those will result in partial, overlapping draws. +The `surface` is the surface to copy out from. The `display` is the target display to draw into. `x` and `y` are the target location to draw the surface pixel data. Under normal circumstances, the location should be consistent, as the dirty region is calculated with respect to the `x` and `y` coordinates -- changing those will result in partial, overlapping draws. `entire_surface` whether the entire surface should be drawn, instead of just the dirty region. -?> Calling `qp_flush()` on the surface resets its dirty region. Copying the surface contents to the display also automatically resets the dirty region. +!> The surface and display panel must have the same native pixel format. - +?> Calling `qp_flush()` on the surface resets its dirty region. Copying the surface contents to the display also automatically resets the dirty region. @@ -857,13 +911,52 @@ void keyboard_post_init_kb(void) { -#### ** Get Geometry ** +#### ** Gettters ** + +These functions allow external code to retrieve the current width, height, rotation, and drawing offsets. + + + +#### ** Width ** + +```c +uint16_t qp_get_width(painter_device_t device); +``` + +#### ** Height ** + +```c +uint16_t qp_get_height(painter_device_t device); +``` + +#### ** Rotation ** + +```c +painter_rotation_t qp_get_rotation(painter_device_t device); +``` + +#### ** Offset X ** + +```c +uint16_t qp_get_offset_x(painter_device_t device); +``` + +#### ** Offset Y ** + +```c +uint16_t qp_get_offset_y(painter_device_t device); +``` + +##### ** Everything ** + +Convenience function to call all the previous ones at once. +Note: You can pass `NULL` for the values you are not interested in. ```c void qp_get_geometry(painter_device_t device, uint16_t *width, uint16_t *height, painter_rotation_t *rotation, uint16_t *offset_x, uint16_t *offset_y); ``` -The `qp_get_geometry` function allows external code to retrieve the current width, height, rotation, and drawing offsets. + #### ** Set Viewport Offsets ** diff --git a/docs/quantum_painter_lvgl.md b/docs/quantum_painter_lvgl.md index 4d10160baf4b..b4f31ad4af8a 100644 --- a/docs/quantum_painter_lvgl.md +++ b/docs/quantum_painter_lvgl.md @@ -53,3 +53,11 @@ The `qp_lvgl_detach` function stops the internal LVGL ticks and releases resourc ## Enabling/Disabling LVGL features :id=lvgl-configuring You can overwrite LVGL specific features in your `lv_conf.h` file. + +## Changing the LVGL task frequency + +When LVGL is running, your keyboard's responsiveness may decrease, causing missing keystrokes or encoder rotations, especially during the animation of dynamically-generated content. This occurs because LVGL operates as a scheduled task with a default task rate of five milliseconds. While a fast task rate is advantageous when LVGL is responsible for detecting and processing inputs, it can lead to excessive recalculations of displayed content, which may slow down QMK's matrix scanning. If you rely on QMK instead of LVGL for processing inputs, it can be beneficial to increase the time between calls to the LVGL task handler to better match your preferred display update rate. To do this, add this to your `config.h`: + +```c +#define QP_LVGL_TASK_PERIOD 40 +``` diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index 91581afc73ba..e102b9bfb94e 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -60,6 +60,13 @@ You can create `info.json` files at every level under `qmk_firmware/keyboards/event.row == 3)` instead of checking a whole bunch of keycodes. Which is especially good for those people using the Tap Hold type keys on the home row. So you could fine-tune those to not interfere with your normal typing. +Well, it's simple really: customization. But specifically, it depends on how your keyboard is wired up. For instance, if each row is actually using a row in the keyboard's matrix, then it may be simpler to use `if (record->event.key.row == 3)` instead of checking a whole bunch of keycodes. Which is especially good for those people using the Tap Hold type keys on the home row. So you could fine-tune those to not interfere with your normal typing. ## Why are there no `*_kb` or `*_user` functions?! diff --git a/docs/uart_driver.md b/docs/uart_driver.md index a44f2c28d993..a88278d5438b 100644 --- a/docs/uart_driver.md +++ b/docs/uart_driver.md @@ -4,6 +4,18 @@ The UART drivers used in QMK have a set of common functions to allow portability Currently, this driver does not support enabling hardware flow control (the `RTS` and `CTS` pins) if available, but may do so in future. +## Usage :id=usage + +In most cases, the UART driver code is automatically included if you are using a feature or driver which requires it. + +However, if you need to use the driver standalone, add the following to your `rules.mk`: + +```make +UART_DRIVER_REQUIRED = yes +``` + +You can then call the UART API by including `uart.h` in your code. + ## AVR Configuration :id=avr-configuration No special setup is required - just connect the `RX` and `TX` pins of your UART device to the opposite pins on the MCU: diff --git a/docs/unit_testing.md b/docs/unit_testing.md index 47a105579643..60787fdffcf2 100644 --- a/docs/unit_testing.md +++ b/docs/unit_testing.md @@ -36,7 +36,9 @@ Note how there's several different tests, each mocking out a separate part. Also ## Running the Tests -To run all the tests in the codebase, type `make test:all`. You can also run test matching a substring by typing `make test:matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. +To run all the tests in the codebase, type `make test:all`. You can also run test matching a substring by typing `make test:matchingsubstring`. `matchingsubstring` can contain colons to be more specific; `make test:tap_hold_configurations` will run the `tap_hold_configurations` tests for all features while `make test:retro_shift:tap_hold_configurations` will run the `tap_hold_configurations` tests for only the Retro Shift feature. + +Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. ## Debugging the Tests diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md index f8cad20ce0c0..244d39dbe06d 100644 --- a/docs/ws2812_driver.md +++ b/docs/ws2812_driver.md @@ -1,189 +1,229 @@ -# WS2812 Driver -This driver powers the [RGB Lighting](feature_rgblight.md) and [RGB Matrix](feature_rgb_matrix.md) features. +# WS2812 Driver :id=ws2812-driver -Currently QMK supports the following addressable LEDs (however, the white LED in RGBW variants is not supported): +This driver provides support for WorldSemi addressable RGB(W) LEDs, and compatible equivalents: - WS2811, WS2812, WS2812B, WS2812C, etc. - SK6812, SK6812MINI, SK6805 + * WS2811, WS2812, WS2812B, WS2812C, etc. + * SK6812, SK6812MINI, SK6805 -These LEDs are called "addressable" because instead of using a wire per color, each LED contains a small microchip that understands a special protocol sent over a single wire. The chip passes on the remaining data to the next LED, allowing them to be chained together. In this way, you can easily control the color of the individual LEDs. +These LEDs are often called "addressable" because instead of using a wire per color (and per LED), each LED contains a small microchip that understands a special protocol sent over a single wire. +The LEDs can be chained together, and the remaining data is passed on to the next. In this way, you can easily control the color of many LEDs using a single GPIO. -## Supported Driver Types +## Usage :id=usage -| | AVR | ARM | -| -------- | ------------------ | ------------------ | -| bit bang | :heavy_check_mark: | :heavy_check_mark: | -| I2C | :heavy_check_mark: | | -| SPI | | :heavy_check_mark: | -| PWM | | :heavy_check_mark: | -| PIO | | :heavy_check_mark: | +In most cases, the WS2812 driver code is automatically included if you are using either the [RGBLight](feature_rgblight.md) or [RGB Matrix](feature_rgb_matrix.md) feature with the `ws2812` driver set, and you would use those APIs instead. -## Driver configuration +However, if you need to use the driver standalone, add the following to your `rules.mk`: -### All drivers +```make +WS2812_DRIVER_REQUIRED = yes +``` + +You can then call the WS2812 API by including `ws2812.h` in your code. + +## Basic Configuration :id=basic-configuration + +Add the following to your `config.h`: + +|Define |Default |Description | +|-------------------|-----------------------|------------------------------------------------------------------------------------------------| +|`WS2812_DI_PIN` |*Not defined* |The GPIO pin connected to the DI pin of the first LED in the chain | +|`WS2812_LED_COUNT` |*Not defined* |Number of LEDs in the WS2812 chain - automatically set when RGBLight or RGB Matrix is configured| +|`WS2812_TIMING` |`1250` |The total length of a bit (TH+TL) in nanoseconds | +|`WS2812_T1H` |`900` |The length of a "1" bit's high phase in nanoseconds | +|`WS2812_T0H` |`350` |The length of a "0" bit's high phase in nanoseconds | +|`WS2812_TRST_US` |`280` |The length of the reset phase in microseconds | +|`WS2812_BYTE_ORDER`|`WS2812_BYTE_ORDER_GRB`|The byte order of the RGB data | + +### Timing Adjustment :id=timing-adjustment -Different versions of the addressable LEDs have differing requirements for the TRST period between frames. -The default setting is 280 µs, which should work for most cases, but this can be overridden in your config.h. e.g.: +The WS2812 LED communication protocol works by encoding a "1" bit with a long high pulse (T1H), and a "0" bit with a shorter pulse (T0H). The total cycle length of a bit is the same. +The "reset" pulse (TRST) latches the sent RGB data to all of the LEDs and denotes a completed "frame". + +Some WS2812 variants have slightly different timing parameter requirements, which can be accounted for if necessary using the above `#define`s in your `config.h`. + +### Byte Order :id=byte-order + +Some WS2812 variants may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB. +If you find your LED colors are consistently swapped, you may need to change the byte order by adding the following to your `config.h`: ```c -#define WS2812_TRST_US 80 +#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB ``` -#### Byte Order +Where the byte order may be one of: + +|Byte Order|Known Devices | +|----------|----------------------------| +|`GRB` |Most WS2812s, SK6812, SK6805| +|`RGB` |WS2812B-2020 | +|`BGR` |TM1812 | -Some variants of the WS2812 may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB. -In this case, you can change the byte order by defining `WS2812_BYTE_ORDER` as one of the following values: +## Driver Configuration :id=driver-configuration -| Byte order | Known devices | -| --------------------------------- | ----------------------------- | -| `WS2812_BYTE_ORDER_GRB` (default) | Most WS2812's, SK6812, SK6805 | -| `WS2812_BYTE_ORDER_RGB` | WS2812B-2020 | -| `WS2812_BYTE_ORDER_BGR` | TM1812 | +Driver selection can be configured in `rules.mk` as `WS2812_DRIVER`, or in `info.json` as `ws2812.driver`. Valid values are `bitbang` (default), `i2c`, `spi`, `pwm`, `vendor`, or `custom`. See below for information on individual drivers. +### Bitbang Driver :id=bitbang-driver -### Bitbang -Default driver, the absence of configuration assumes this driver. To configure it, add this to your rules.mk: +This is the default WS2812 driver. It operates by "bit-banging" ie. directly toggling the GPIO. + +Please note that on AVR devices, due to the tight timing requirements longer chains and/or heavy CPU loads may cause visible lag. Unfortunately this driver is usually the only option for AVR. ```make WS2812_DRIVER = bitbang ``` -!> This driver is not hardware accelerated and may not be performant on heavily loaded systems. +### I2C Driver :id=i2c-driver + +A specialized driver mainly used for PS2AVRGB (Bootmapper Client) boards, which possess an ATtiny85 that handles the WS2812 LEDs. + +```make +WS2812_DRIVER = i2c +``` + +The following `#define`s apply only to the `i2c` driver: -#### Adjusting bit timings +|Define |Default|Description | +|--------------------|-------|---------------------------------| +|`WS2812_I2C_ADDRESS`|`0xB0` |The I2C address of the ATtiny85. | +|`WS2812_I2C_TIMEOUT`|`100` |The I2C timeout, in milliseconds.| -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: +### PIO Driver :id=pio-driver -| 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: | +This driver is RP2040-only, and leverages the onboard PIO (programmable I/O) system and DMA to offload processing from the CPU. -### 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: +The WS2812 PIO program uses one state machine, six instructions and one DMA interrupt handler callback. Due to the implementation the time resolution for this driver is 50 ns - any value not specified in this interval will be rounded to the next matching interval. ```make -WS2812_DRIVER = i2c +WS2812_DRIVER = vendor ``` -Configure the hardware via your config.h: -```c -#define WS2812_I2C_ADDRESS 0xB0 // default: 0xB0 -#define WS2812_I2C_TIMEOUT 100 // default: 100 +### PWM Driver :id=pwm-driver + +This driver is ARM-only, and leverages the onboard PWM peripheral and DMA to offload processing from the CPU. + +```make +WS2812_DRIVER = pwm ``` -### SPI -Targeting STM32 boards where WS2812 support is offloaded to an SPI hardware device. The advantage is that the use of DMA offloads processing of the WS2812 protocol from the MCU. `WS2812_DI_PIN` for this driver is the configured SPI MOSI pin. Due to the nature of repurposing SPI to drive the LEDs, the other SPI pins, MISO and SCK, **must** remain unused. To configure it, add this to your rules.mk: +### SPI Driver :id=spi-driver + +This driver is ARM-only, and leverages the onboard SPI peripheral and DMA to offload processing from the CPU. The DI pin **must** be connected to the MOSI pin on the MCU, and all other SPI pins **must** be left unused. This is also very dependent on your MCU's SPI peripheral clock speed, and may or may not be possible depending on the MCU selected. ```make WS2812_DRIVER = spi ``` -Configure the hardware via your config.h: -```c -#define WS2812_SPI SPID1 // default: SPID1 -#define WS2812_SPI_MOSI_PAL_MODE 5 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 -#define WS2812_SPI_SCK_PIN B3 // Required for F072, may be for others -- SCK pin, see the respective datasheet for the appropriate values for your MCU. default: unspecified -#define WS2812_SPI_SCK_PAL_MODE 5 // SCK pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 -``` +## ChibiOS/ARM Configuration :id=arm-configuration -You must also turn on the SPI feature in your halconf.h and mcuconf.h +The following defines apply only to ARM devices: -#### Circular Buffer Mode -Some boards may flicker while in the normal buffer mode. To fix this issue, circular buffer mode may be used to rectify the issue. +|Define |Default |Description | +|------------|------------------------------|---------------------------------------------------------------------------------| +|`WS2812_T1L`|`(WS2812_TIMING - WS2812_T1H)`|The length of a "1" bit's low phase in nanoseconds (bitbang and PIO drivers only)| +|`WS2812_T0L`|`(WS2812_TIMING - WS2812_T0H)`|The length of a "0" bit's low phase in nanoseconds (bitbang and PIO drivers only)| -By default, the circular buffer mode is disabled. +### Push-Pull and Open Drain :id=push-pull-open-drain -To enable this alternative buffer mode, place this into your `config.h` file: -```c -#define WS2812_SPI_USE_CIRCULAR_BUFFER -``` +By default, the GPIO used for data transmission is configured as a *push-pull* output, meaning the pin is effectively always driven either to VCC or to ground. -#### Setting baudrate with divisor -To adjust the baudrate at which the SPI peripheral is configured, users will need to derive the target baudrate from the clock tree provided by STM32CubeMX. +For situations where the logic level voltage is lower than the power supply voltage, however, this can pose an issue. The solution is to configure the pin for *open drain* mode instead, and use a pullup resistor between the DI pin and VCC. In this mode, the MCU can only pull the GPIO *low*, or leave it floating. The pullup resistor is then responsible for pulling the line high, when the MCU is not driving the GPIO. -Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported by hardware. +To configure the DI pin for open drain configuration, add the following to your `config.h`: -| Define | Default | Description | -| -------------------- | ------- | ----------------------------------- | -| `WS2812_SPI_DIVISOR` | `16` | SPI source clock peripheral divisor | +```c +#define WS2812_EXTERNAL_PULLUP +``` -#### Testing Notes +### SPI Driver :id=arm-spi-driver -While not an exhaustive list, the following table provides the scenarios that have been partially validated: +Depending on the ChibiOS board configuration, you may need to enable SPI at the keyboard level. For STM32, this would look like: -| | SPI1 | SPI2 | SPI3 | -| ---- | ------------------------------------------- | --------------------------------------- | --------------------- | -| f072 | ? | B15 :heavy_check_mark: (needs SCK: B13) | N/A | -| f103 | A7 :heavy_check_mark: | B15 :heavy_check_mark: | N/A | -| f303 | A7 :heavy_check_mark: B5 :heavy_check_mark: | B15 :heavy_check_mark: | B5 :heavy_check_mark: | +`halconf.h`: +```c +#define HAL_USE_SPI TRUE +``` +`mcuconf.h`: +```c +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE +``` -*Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.* +The following `define`s apply only to the `spi` driver: -### PWM +|Define |Default |Description | +|--------------------------------|-------------|-------------------------------------------------------------------------------| +|`WS2812_SPI_DRIVER` |`SPID1` |The SPI driver to use | +|`WS2812_SPI_MOSI_PAL_MODE` |`5` |The MOSI pin alternative function to use | +|`WS2812_SPI_SCK_PIN` |*Not defined*|The SCK pin - required for F072 and possibly others | +|`WS2812_SPI_SCK_PAL_MODE` |`5` |The SCK pin alternative function to use - required for F072 and possibly others| +|`WS2812_SPI_DIVISOR` |`16` |The divisor used to adjust the baudrate | +|`WS2812_SPI_USE_CIRCULAR_BUFFER`|*Not defined*|Enable a circular buffer for improved rendering | -Targeting STM32 boards where WS2812 support is offloaded to an PWM timer and DMA stream. The advantage is that the use of DMA offloads processing of the WS2812 protocol from the MCU. To configure it, add this to your rules.mk: +#### Setting the Baudrate :id=arm-spi-baudrate -```make -WS2812_DRIVER = pwm -``` +To adjust the SPI baudrate, you will need to derive the target baudrate from the clock tree provided by STM32CubeMX, and add the following to your `config.h`: -Configure the hardware via your config.h: ```c -#define WS2812_PWM_DRIVER PWMD2 // default: PWMD2 -#define WS2812_PWM_CHANNEL 2 // default: 2 -#define WS2812_PWM_PAL_MODE 2 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 -//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy). -#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. -#define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. -#define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU. +#define WS2812_SPI_DIVISOR 16 ``` -Note that using a complementary timer output (TIMx_CHyN) is possible only for advanced-control timers (TIM1, TIM8, TIM20 on STM32), and the `STM32_PWM_USE_ADVANCED` option in mcuconf.h must be set to `TRUE`. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations. +Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported on STM32 devices. Other MCUs may have similar constraints -- check the reference manual for your respective MCU for specifics. + +#### Circular Buffer :id=arm-spi-circular-buffer -You must also turn on the PWM feature in your halconf.h and mcuconf.h +A circular buffer can be enabled if you experience flickering. -#### Testing Notes +To enable the circular buffer, add the following to your `config.h`: -While not an exhaustive list, the following table provides the scenarios that have been partially validated: +```c +#define WS2812_SPI_USE_CIRCULAR_BUFFER +``` -| | Status | -| --------- | ------------------ | -| f072 | ? | -| f103 | :heavy_check_mark: | -| f303 | :heavy_check_mark: | -| f401/f411 | :heavy_check_mark: | +### PIO Driver :id=arm-pio-driver -*Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.* +The following `#define`s apply only to the PIO driver: -### PIO +|Define |Default |Description | +|---------------------|-------------|---------------------------------------| +|`WS2812_PIO_USE_PIO1`|*Not defined*|Use the PIO1 peripheral instead of PIO0| -Targeting Raspberry Pi RP2040 boards only where WS2812 support is offloaded to an dedicated PIO implementation. This offloads processing of the WS2812 protocol from the MCU to a dedicated PIO program using DMA transfers. +### PWM Driver :id=arm-pwm-driver -To configure it, add this to your rules.mk: +Depending on the ChibiOS board configuration, you may need to enable PWM at the keyboard level. For STM32, this would look like: -```make -WS2812_DRIVER = vendor +`halconf.h`: +```c +#define HAL_USE_PWM TRUE ``` - -Configure the hardware via your config.h: +`mcuconf.h`: ```c -#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral +#undef STM32_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE ``` -The WS2812 PIO programm uses 1 state machine, 6 instructions and one DMA interrupt handler callback. Due to the implementation the time resolution for this drivers is 50ns, any value not specified in this interval will be rounded to the next matching interval. +The following `#define`s apply only to the `pwm` driver: -### Push Pull and Open Drain Configuration -The default configuration is a push pull on the defined pin. -This can be configured for bitbang, PWM and SPI. +|Define |Default |Description | +|---------------------------------|--------------------|------------------------------------------------------------------------------------------| +|`WS2812_PWM_DRIVER` |`PWMD2` |The PWM driver to use | +|`WS2812_PWM_CHANNEL` |`2` |The PWM channel to use | +|`WS2812_PWM_PAL_MODE` |`2` |The pin alternative function to use | +|`WS2812_DMA_STREAM` |`STM32_DMA1_STREAM2`|The DMA Stream for `TIMx_UP` | +|`WS2812_DMA_CHANNEL` |`2` |The DMA Channel for `TIMx_UP` | +|`WS2812_DMAMUX_ID` |*Not defined* |The DMAMUX configuration for `TIMx_UP` - only required if your MCU has a DMAMUX peripheral| +|`WS2812_PWM_COMPLEMENTARY_OUTPUT`|*Not defined* |Whether the PWM output is complementary (`TIMx_CHyN`) | -Note: This only applies to STM32 boards. +?> Using a complementary timer output (`TIMx_CHyN`) is possible only for advanced-control timers (1, 8 and 20 on STM32), and the `STM32_PWM_USE_ADVANCED` option in `mcuconf.h` must be set to `TRUE`. Complementary outputs of general-purpose timers are not supported due to ChibiOS limitations. - To configure the `WS2812_DI_PIN` to open drain configuration add this to your config.h file: -```c -#define WS2812_EXTERNAL_PULLUP -``` +## API :id=api + +### `void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds)` :id=api-ws2812-setleds + +Send RGB data to the WS2812 LED chain. + +#### Arguments :id=api-ws2812-setleds-arguments + + - `rgb_led_t *ledarray` + A pointer to the LED array. + - `uint16_t number_of_leds` + The length of the LED array. diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md index 0fc92e33d3ae..a076f1a8c672 100644 --- a/docs/zh-cn/_summary.md +++ b/docs/zh-cn/_summary.md @@ -121,7 +121,6 @@ * [分体式键盘](zh-cn/feature_split_keyboard.md) * [速记](zh-cn/feature_stenography.md) * [热敏打印机](zh-cn/feature_thermal_printer.md) - * [Velocikey](zh-cn/feature_velocikey.md) * QMK开发 * [PR Checklist](zh-cn/pr_checklist.md) diff --git a/drivers/eeprom/eeprom_spi.h b/drivers/eeprom/eeprom_spi.h index 282c603565f6..6a21d5516bb5 100644 --- a/drivers/eeprom/eeprom_spi.h +++ b/drivers/eeprom/eeprom_spi.h @@ -16,6 +16,18 @@ #pragma once +/* + Default device configurations: + + For the Adafruit SPI Non-Volatile FRAM Breakout: https://www.adafruit.com/product/1897 + #define EEPROM_SPI_MB85RS64V +*/ +#if defined(EEPROM_SPI_MB85RS64V) +# define EXTERNAL_EEPROM_BYTE_COUNT 8192 +# define EXTERNAL_EEPROM_PAGE_SIZE 64 // it's FRAM, so it doesn't actually matter, this just sets the RAM buffer +# define EXTERNAL_EEPROM_ADDRESS_SIZE 2 +#endif + /* The slave select pin of the EEPROM. This needs to be a normal GPIO pin_t value, such as A7. diff --git a/drivers/haptic/solenoid.c b/drivers/haptic/solenoid.c index 4e4390325527..da4095cda4d2 100644 --- a/drivers/haptic/solenoid.c +++ b/drivers/haptic/solenoid.c @@ -23,7 +23,6 @@ #include "util.h" #include -uint8_t solenoid_dwell = SOLENOID_DEFAULT_DWELL; static pin_t solenoid_pads[] = SOLENOID_PINS; #define NUMBER_OF_SOLENOIDS ARRAY_SIZE(solenoid_pads) bool solenoid_on[NUMBER_OF_SOLENOIDS] = {false}; @@ -53,7 +52,7 @@ void solenoid_set_buzz(uint8_t buzz) { } void solenoid_set_dwell(uint8_t dwell) { - solenoid_dwell = dwell; + haptic_set_dwell(dwell); } /** @@ -119,7 +118,7 @@ void solenoid_check(void) { elapsed[i] = timer_elapsed(solenoid_start[i]); // Check if it's time to finish this solenoid click cycle - if (elapsed[i] > solenoid_dwell) { + if (elapsed[i] > haptic_config.dwell) { solenoid_stop(i); continue; } diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c index 766d8cd2eb7e..527519eb8a95 100644 --- a/drivers/led/apa102.c +++ b/drivers/led/apa102.c @@ -24,7 +24,7 @@ # elif defined(PROTOCOL_CHIBIOS) # include "hal.h" # include "chibios_config.h" -# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103) +# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103) || defined(MCU_RP) # 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 @@ -61,18 +61,18 @@ void static apa102_end_frame(uint16_t num_leds); void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness); void static apa102_send_byte(uint8_t byte); -void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) { - LED_TYPE *end = start_led + num_leds; +void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) { + rgb_led_t *end = start_led + num_leds; apa102_start_frame(); - for (LED_TYPE *led = start_led; led < end; led++) { + for (rgb_led_t *led = start_led; led < end; led++) { apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness); } apa102_end_frame(num_leds); } // Overwrite the default rgblight_call_driver to use apa102 driver -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { apa102_setleds(start_led, num_leds); } diff --git a/drivers/led/apa102.h b/drivers/led/apa102.h index 58cf020c1e16..cd0a19d44547 100644 --- a/drivers/led/apa102.h +++ b/drivers/led/apa102.h @@ -37,5 +37,5 @@ extern uint8_t apa102_led_brightness; * - Set the data-out pin as output * - Send out the LED data */ -void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds); +void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds); void apa102_set_brightness(uint8_t brightness); diff --git a/drivers/led/aw20216.c b/drivers/led/aw20216.c deleted file mode 100644 index 479643add483..000000000000 --- a/drivers/led/aw20216.c +++ /dev/null @@ -1,168 +0,0 @@ -/* Copyright 2021 Jasper Chan - * 2023 Huckies - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "aw20216.h" -#include "wait.h" -#include "spi_master.h" - -/* The AW20216 appears to be somewhat similar to the IS31FL743, although quite - * a few things are different, such as the command byte format and page ordering. - * The LED addresses start from 0x00 instead of 0x01. - */ -#define AWINIC_ID 0b1010 << 4 - -#define AW_PAGE_FUNCTION 0x00 << 1 // PG0, Function registers -#define AW_PAGE_PWM 0x01 << 1 // PG1, LED PWM control -#define AW_PAGE_SCALING 0x02 << 1 // PG2, LED current scaling control -#define AW_PAGE_PATCHOICE 0x03 << 1 // PG3, Pattern choice? -#define AW_PAGE_PWMSCALING 0x04 << 1 // PG4, LED PWM + Scaling control? - -#define AW_WRITE 0 -#define AW_READ 1 - -#define AW_REG_CONFIGURATION 0x00 // PG0 -#define AW_REG_GLOBALCURRENT 0x01 // PG0 -#define AW_REG_RESET 0x2F // PG0 -#define AW_REG_MIXFUNCTION 0x46 // PG0 - -// Default value of AW_REG_CONFIGURATION -// D7:D4 = 1011, SWSEL (SW1~SW12 active) -// D3 = 0?, reserved (apparently this should be 1 but it doesn't seem to matter) -// D2:D1 = 00, OSDE (open/short detection enable) -// D0 = 0, CHIPEN (write 1 to enable LEDs when hardware enable pulled high) -#define AW_CONFIG_DEFAULT 0b10110000 -#define AW_MIXCR_DEFAULT 0b00000000 -#define AW_RESET_CMD 0xAE -#define AW_CHIPEN 1 -#define AW_LPEN (0x01 << 1) - -#define AW_PWM_REGISTER_COUNT 216 - -#ifndef AW_SCALING_MAX -# define AW_SCALING_MAX 150 -#endif - -#ifndef AW_GLOBAL_CURRENT_MAX -# define AW_GLOBAL_CURRENT_MAX 150 -#endif - -#ifndef AW_SPI_MODE -# define AW_SPI_MODE 0 -#endif - -#ifndef AW_SPI_DIVISOR -# define AW_SPI_DIVISOR 4 -#endif - -uint8_t g_pwm_buffer[DRIVER_COUNT][AW_PWM_REGISTER_COUNT]; -bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; - -bool aw20216_write(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t* data, uint8_t len) { - static uint8_t s_spi_transfer_buffer[2] = {0}; - - if (!spi_start(cs_pin, false, AW_SPI_MODE, AW_SPI_DIVISOR)) { - spi_stop(); - return false; - } - - s_spi_transfer_buffer[0] = (AWINIC_ID | page | AW_WRITE); - s_spi_transfer_buffer[1] = reg; - - if (spi_transmit(s_spi_transfer_buffer, 2) != SPI_STATUS_SUCCESS) { - spi_stop(); - return false; - } - - if (spi_transmit(data, len) != SPI_STATUS_SUCCESS) { - spi_stop(); - return false; - } - - spi_stop(); - return true; -} - -static inline bool aw20216_write_register(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t value) { - // Little wrapper so callers need not care about sending a buffer - return aw20216_write(cs_pin, page, reg, &value, 1); -} - -void aw20216_soft_reset(pin_t cs_pin) { - aw20216_write_register(cs_pin, AW_PAGE_FUNCTION, AW_REG_RESET, AW_RESET_CMD); -} - -static void aw20216_init_scaling(pin_t cs_pin) { - // Set constant current to the max, control brightness with PWM - for (uint8_t i = 0; i < AW_PWM_REGISTER_COUNT; i++) { - aw20216_write_register(cs_pin, AW_PAGE_SCALING, i, AW_SCALING_MAX); - } -} - -static inline void aw20216_init_current_limit(pin_t cs_pin) { - // Push config - aw20216_write_register(cs_pin, AW_PAGE_FUNCTION, AW_REG_GLOBALCURRENT, AW_GLOBAL_CURRENT_MAX); -} - -static inline void aw20216_soft_enable(pin_t cs_pin) { - // Push config - aw20216_write_register(cs_pin, AW_PAGE_FUNCTION, AW_REG_CONFIGURATION, AW_CONFIG_DEFAULT | AW_CHIPEN); -} - -static inline void aw20216_auto_lowpower(pin_t cs_pin) { - aw20216_write_register(cs_pin, AW_PAGE_FUNCTION, AW_REG_MIXFUNCTION, AW_MIXCR_DEFAULT | AW_LPEN); -} - -void aw20216_init(pin_t cs_pin, pin_t en_pin) { - setPinOutput(en_pin); - writePinHigh(en_pin); - - aw20216_soft_reset(cs_pin); - wait_ms(2); - - // Drivers should start with all scaling and PWM registers as off - aw20216_init_current_limit(cs_pin); - aw20216_init_scaling(cs_pin); - - aw20216_soft_enable(cs_pin); - aw20216_auto_lowpower(cs_pin); -} - -void aw20216_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - aw_led led; - memcpy_P(&led, (&g_aw_leds[index]), sizeof(led)); - - if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { - return; - } - 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 aw20216_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { - aw20216_set_color(i, red, green, blue); - } -} - -void aw20216_update_pwm_buffers(pin_t cs_pin, uint8_t index) { - if (g_pwm_buffer_update_required[index]) { - aw20216_write(cs_pin, AW_PAGE_PWM, 0, g_pwm_buffer[index], AW_PWM_REGISTER_COUNT); - } - g_pwm_buffer_update_required[index] = false; -} diff --git a/drivers/led/aw20216.h b/drivers/led/aw20216.h deleted file mode 100644 index e342cb6bacdf..000000000000 --- a/drivers/led/aw20216.h +++ /dev/null @@ -1,253 +0,0 @@ -/* Copyright 2021 Jasper Chan (Gigahawk) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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" -#include "gpio.h" - -typedef struct aw_led { - uint8_t driver : 2; - uint8_t r; - uint8_t g; - uint8_t b; -} aw_led; - -extern const aw_led PROGMEM g_aw_leds[RGB_MATRIX_LED_COUNT]; - -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); -void aw20216_set_color_all(uint8_t red, uint8_t green, uint8_t blue); -void aw20216_update_pwm_buffers(pin_t cs_pin, uint8_t index); - -#define CS1_SW1 0x00 -#define CS2_SW1 0x01 -#define CS3_SW1 0x02 -#define CS4_SW1 0x03 -#define CS5_SW1 0x04 -#define CS6_SW1 0x05 -#define CS7_SW1 0x06 -#define CS8_SW1 0x07 -#define CS9_SW1 0x08 -#define CS10_SW1 0x09 -#define CS11_SW1 0x0A -#define CS12_SW1 0x0B -#define CS13_SW1 0x0C -#define CS14_SW1 0x0D -#define CS15_SW1 0x0E -#define CS16_SW1 0x0F -#define CS17_SW1 0x10 -#define CS18_SW1 0x11 -#define CS1_SW2 0x12 -#define CS2_SW2 0x13 -#define CS3_SW2 0x14 -#define CS4_SW2 0x15 -#define CS5_SW2 0x16 -#define CS6_SW2 0x17 -#define CS7_SW2 0x18 -#define CS8_SW2 0x19 -#define CS9_SW2 0x1A -#define CS10_SW2 0x1B -#define CS11_SW2 0x1C -#define CS12_SW2 0x1D -#define CS13_SW2 0x1E -#define CS14_SW2 0x1F -#define CS15_SW2 0x20 -#define CS16_SW2 0x21 -#define CS17_SW2 0x22 -#define CS18_SW2 0x23 -#define CS1_SW3 0x24 -#define CS2_SW3 0x25 -#define CS3_SW3 0x26 -#define CS4_SW3 0x27 -#define CS5_SW3 0x28 -#define CS6_SW3 0x29 -#define CS7_SW3 0x2A -#define CS8_SW3 0x2B -#define CS9_SW3 0x2C -#define CS10_SW3 0x2D -#define CS11_SW3 0x2E -#define CS12_SW3 0x2F -#define CS13_SW3 0x30 -#define CS14_SW3 0x31 -#define CS15_SW3 0x32 -#define CS16_SW3 0x33 -#define CS17_SW3 0x34 -#define CS18_SW3 0x35 -#define CS1_SW4 0x36 -#define CS2_SW4 0x37 -#define CS3_SW4 0x38 -#define CS4_SW4 0x39 -#define CS5_SW4 0x3A -#define CS6_SW4 0x3B -#define CS7_SW4 0x3C -#define CS8_SW4 0x3D -#define CS9_SW4 0x3E -#define CS10_SW4 0x3F -#define CS11_SW4 0x40 -#define CS12_SW4 0x41 -#define CS13_SW4 0x42 -#define CS14_SW4 0x43 -#define CS15_SW4 0x44 -#define CS16_SW4 0x45 -#define CS17_SW4 0x46 -#define CS18_SW4 0x47 -#define CS1_SW5 0x48 -#define CS2_SW5 0x49 -#define CS3_SW5 0x4A -#define CS4_SW5 0x4B -#define CS5_SW5 0x4C -#define CS6_SW5 0x4D -#define CS7_SW5 0x4E -#define CS8_SW5 0x4F -#define CS9_SW5 0x50 -#define CS10_SW5 0x51 -#define CS11_SW5 0x52 -#define CS12_SW5 0x53 -#define CS13_SW5 0x54 -#define CS14_SW5 0x55 -#define CS15_SW5 0x56 -#define CS16_SW5 0x57 -#define CS17_SW5 0x58 -#define CS18_SW5 0x59 -#define CS1_SW6 0x5A -#define CS2_SW6 0x5B -#define CS3_SW6 0x5C -#define CS4_SW6 0x5D -#define CS5_SW6 0x5E -#define CS6_SW6 0x5F -#define CS7_SW6 0x60 -#define CS8_SW6 0x61 -#define CS9_SW6 0x62 -#define CS10_SW6 0x63 -#define CS11_SW6 0x64 -#define CS12_SW6 0x65 -#define CS13_SW6 0x66 -#define CS14_SW6 0x67 -#define CS15_SW6 0x68 -#define CS16_SW6 0x69 -#define CS17_SW6 0x6A -#define CS18_SW6 0x6B -#define CS1_SW7 0x6C -#define CS2_SW7 0x6D -#define CS3_SW7 0x6E -#define CS4_SW7 0x6F -#define CS5_SW7 0x70 -#define CS6_SW7 0x71 -#define CS7_SW7 0x72 -#define CS8_SW7 0x73 -#define CS9_SW7 0x74 -#define CS10_SW7 0x75 -#define CS11_SW7 0x76 -#define CS12_SW7 0x77 -#define CS13_SW7 0x78 -#define CS14_SW7 0x79 -#define CS15_SW7 0x7A -#define CS16_SW7 0x7B -#define CS17_SW7 0x7C -#define CS18_SW7 0x7D -#define CS1_SW8 0x7E -#define CS2_SW8 0x7F -#define CS3_SW8 0x80 -#define CS4_SW8 0x81 -#define CS5_SW8 0x82 -#define CS6_SW8 0x83 -#define CS7_SW8 0x84 -#define CS8_SW8 0x85 -#define CS9_SW8 0x86 -#define CS10_SW8 0x87 -#define CS11_SW8 0x88 -#define CS12_SW8 0x89 -#define CS13_SW8 0x8A -#define CS14_SW8 0x8B -#define CS15_SW8 0x8C -#define CS16_SW8 0x8D -#define CS17_SW8 0x8E -#define CS18_SW8 0x8F -#define CS1_SW9 0x90 -#define CS2_SW9 0x91 -#define CS3_SW9 0x92 -#define CS4_SW9 0x93 -#define CS5_SW9 0x94 -#define CS6_SW9 0x95 -#define CS7_SW9 0x96 -#define CS8_SW9 0x97 -#define CS9_SW9 0x98 -#define CS10_SW9 0x99 -#define CS11_SW9 0x9A -#define CS12_SW9 0x9B -#define CS13_SW9 0x9C -#define CS14_SW9 0x9D -#define CS15_SW9 0x9E -#define CS16_SW9 0x9F -#define CS17_SW9 0xA0 -#define CS18_SW9 0xA1 -#define CS1_SW10 0xA2 -#define CS2_SW10 0xA3 -#define CS3_SW10 0xA4 -#define CS4_SW10 0xA5 -#define CS5_SW10 0xA6 -#define CS6_SW10 0xA7 -#define CS7_SW10 0xA8 -#define CS8_SW10 0xA9 -#define CS9_SW10 0xAA -#define CS10_SW10 0xAB -#define CS11_SW10 0xAC -#define CS12_SW10 0xAD -#define CS13_SW10 0xAE -#define CS14_SW10 0xAF -#define CS15_SW10 0xB0 -#define CS16_SW10 0xB1 -#define CS17_SW10 0xB2 -#define CS18_SW10 0xB3 -#define CS1_SW11 0xB4 -#define CS2_SW11 0xB5 -#define CS3_SW11 0xB6 -#define CS4_SW11 0xB7 -#define CS5_SW11 0xB8 -#define CS6_SW11 0xB9 -#define CS7_SW11 0xBA -#define CS8_SW11 0xBB -#define CS9_SW11 0xBC -#define CS10_SW11 0xBD -#define CS11_SW11 0xBE -#define CS12_SW11 0xBF -#define CS13_SW11 0xC0 -#define CS14_SW11 0xC1 -#define CS15_SW11 0xC2 -#define CS16_SW11 0xC3 -#define CS17_SW11 0xC4 -#define CS18_SW11 0xC5 -#define CS1_SW12 0xC6 -#define CS2_SW12 0xC7 -#define CS3_SW12 0xC8 -#define CS4_SW12 0xC9 -#define CS5_SW12 0xCA -#define CS6_SW12 0xCB -#define CS7_SW12 0xCC -#define CS8_SW12 0xCD -#define CS9_SW12 0xCE -#define CS10_SW12 0xCF -#define CS11_SW12 0xD0 -#define CS12_SW12 0xD1 -#define CS13_SW12 0xD2 -#define CS14_SW12 0xD3 -#define CS15_SW12 0xD4 -#define CS16_SW12 0xD5 -#define CS17_SW12 0xD6 -#define CS18_SW12 0xD7 diff --git a/drivers/led/aw20216s.c b/drivers/led/aw20216s.c new file mode 100644 index 000000000000..ab7f3ccb42d7 --- /dev/null +++ b/drivers/led/aw20216s.c @@ -0,0 +1,161 @@ +/* Copyright 2021 Jasper Chan + * 2023 Huckies + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "aw20216s.h" +#include "wait.h" +#include "spi_master.h" + +#define AW20216S_PWM_REGISTER_COUNT 216 + +#ifndef AW20216S_CONFIGURATION +# define AW20216S_CONFIGURATION (AW20216S_CONFIGURATION_SWSEL_1_12 | AW20216S_CONFIGURATION_CHIPEN) +#endif + +#ifndef AW20216S_MIX_FUNCTION +# define AW20216S_MIX_FUNCTION (AW20216S_MIX_FUNCTION_LPEN) +#endif + +#ifndef AW20216S_SCALING_MAX +# define AW20216S_SCALING_MAX 150 +#endif + +#ifndef AW20216S_GLOBAL_CURRENT_MAX +# define AW20216S_GLOBAL_CURRENT_MAX 150 +#endif + +#ifndef AW20216S_SPI_MODE +# define AW20216S_SPI_MODE 0 +#endif + +#ifndef AW20216S_SPI_DIVISOR +# define AW20216S_SPI_DIVISOR 4 +#endif + +uint8_t g_pwm_buffer[AW20216S_DRIVER_COUNT][AW20216S_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[AW20216S_DRIVER_COUNT] = {false}; + +bool aw20216s_write(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t* data, uint8_t len) { + static uint8_t s_spi_transfer_buffer[2] = {0}; + + if (!spi_start(cs_pin, false, AW20216S_SPI_MODE, AW20216S_SPI_DIVISOR)) { + spi_stop(); + return false; + } + + s_spi_transfer_buffer[0] = (AW20216S_ID | page | AW20216S_WRITE); + s_spi_transfer_buffer[1] = reg; + + if (spi_transmit(s_spi_transfer_buffer, 2) != SPI_STATUS_SUCCESS) { + spi_stop(); + return false; + } + + if (spi_transmit(data, len) != SPI_STATUS_SUCCESS) { + spi_stop(); + return false; + } + + spi_stop(); + return true; +} + +static inline bool aw20216s_write_register(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t value) { + // Little wrapper so callers need not care about sending a buffer + return aw20216s_write(cs_pin, page, reg, &value, 1); +} + +void aw20216s_soft_reset(pin_t cs_pin) { + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_RESET, AW20216S_RESET_MAGIC); +} + +static void aw20216s_init_scaling(pin_t cs_pin) { + // Set constant current to the max, control brightness with PWM + for (uint8_t i = 0; i < AW20216S_PWM_REGISTER_COUNT; i++) { + aw20216s_write_register(cs_pin, AW20216S_PAGE_SCALING, i, AW20216S_SCALING_MAX); + } +} + +static inline void aw20216s_init_current_limit(pin_t cs_pin) { + // Push config + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_GLOBAL_CURRENT, AW20216S_GLOBAL_CURRENT_MAX); +} + +static inline void aw20216s_soft_enable(pin_t cs_pin) { + // Push config + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_CONFIGURATION, AW20216S_CONFIGURATION); +} + +static inline void aw20216s_auto_lowpower(pin_t cs_pin) { + aw20216s_write_register(cs_pin, AW20216S_PAGE_FUNCTION, AW20216S_FUNCTION_REG_MIX_FUNCTION, AW20216S_MIX_FUNCTION); +} + +void aw20216s_init_drivers(void) { + spi_init(); + + aw20216s_init(AW20216S_CS_PIN_1, AW20216S_EN_PIN_1); +#if defined(AW20216S_CS_PIN_2) + aw20216s_init(AW20216S_CS_PIN_2, AW20216S_EN_PIN_2); +#endif +} + +void aw20216s_init(pin_t cs_pin, pin_t en_pin) { + setPinOutput(en_pin); + writePinHigh(en_pin); + + aw20216s_soft_reset(cs_pin); + wait_ms(2); + + // Drivers should start with all scaling and PWM registers as off + aw20216s_init_current_limit(cs_pin); + aw20216s_init_scaling(cs_pin); + + aw20216s_soft_enable(cs_pin); + aw20216s_auto_lowpower(cs_pin); +} + +void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + aw20216s_led_t led; + memcpy_P(&led, (&g_aw20216s_leds[index]), sizeof(led)); + + if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { + return; + } + 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 aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { + for (uint8_t i = 0; i < AW20216S_LED_COUNT; i++) { + aw20216s_set_color(i, red, green, blue); + } +} + +void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + aw20216s_write(cs_pin, AW20216S_PAGE_PWM, 0, g_pwm_buffer[index], AW20216S_PWM_REGISTER_COUNT); + } + g_pwm_buffer_update_required[index] = false; +} + +void aw20216s_flush(void) { + aw20216s_update_pwm_buffers(AW20216S_CS_PIN_1, 0); +#if defined(AW20216S_CS_PIN_2) + aw20216s_update_pwm_buffers(AW20216S_CS_PIN_2, 1); +#endif +} diff --git a/drivers/led/aw20216s.h b/drivers/led/aw20216s.h new file mode 100644 index 000000000000..38a0c92b2f4c --- /dev/null +++ b/drivers/led/aw20216s.h @@ -0,0 +1,319 @@ +/* Copyright 2021 Jasper Chan (Gigahawk) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" +#include "gpio.h" +#include "util.h" + +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef AW_SCALING_MAX +# define AW20216S_SCALING_MAX AW_SCALING_MAX +#endif +#ifdef AW_GLOBAL_CURRENT_MAX +# define AW20216S_GLOBAL_CURRENT_MAX AW_GLOBAL_CURRENT_MAX +#endif +#ifdef AW_SPI_MODE +# define AW20216S_SPI_MODE AW_SPI_MODE +#endif +#ifdef AW_SPI_DIVISOR +# define AW20216S_SPI_DIVISOR AW_SPI_DIVISOR +#endif +#ifdef DRIVER_1_CS +# define AW20216S_CS_PIN_1 DRIVER_1_CS +#endif +#ifdef DRIVER_2_CS +# define AW20216S_CS_PIN_2 DRIVER_2_CS +#endif +#ifdef DRIVER_1_EN +# define AW20216S_EN_PIN_1 DRIVER_1_EN +#endif +#ifdef DRIVER_2_EN +# define AW20216S_EN_PIN_2 DRIVER_2_EN +#endif + +#define aw_led aw20216s_led_t +#define g_aw_leds g_aw20216s_leds +// ======== + +#define AW20216S_ID (0b1010 << 4) +#define AW20216S_WRITE 0 +#define AW20216S_READ 1 + +#define AW20216S_PAGE_FUNCTION (0x00 << 1) +#define AW20216S_PAGE_PWM (0x01 << 1) +#define AW20216S_PAGE_SCALING (0x02 << 1) +#define AW20216S_PAGE_PATTERN_CHOICE (0x03 << 1) +#define AW20216S_PAGE_PWM_SCALING (0x04 << 1) + +#define AW20216S_FUNCTION_REG_CONFIGURATION 0x00 +#define AW20216S_CONFIGURATION_SWSEL_1_12 (0b1011 << 4) +#define AW20216S_CONFIGURATION_CHIPEN (0b1 << 0) + +#define AW20216S_FUNCTION_REG_GLOBAL_CURRENT 0x01 + +#define AW20216S_FUNCTION_REG_RESET 0x2F +#define AW20216S_RESET_MAGIC 0xAE + +#define AW20216S_FUNCTION_REG_MIX_FUNCTION 0x46 +#define AW20216S_MIX_FUNCTION_LPEN (0b1 << 1) + +#if defined(RGB_MATRIX_AW20216S) +# define AW20216S_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + +#if defined(AW20216S_CS_PIN_2) +# define AW20216S_DRIVER_COUNT 2 +#elif defined(AW20216S_CS_PIN_1) +# define AW20216S_DRIVER_COUNT 1 +#endif + +typedef struct aw20216s_led_t { + uint8_t driver : 2; + uint8_t r; + uint8_t g; + uint8_t b; +} PACKED aw20216s_led_t; + +extern const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT]; + +void aw20216s_init_drivers(void); +void aw20216s_init(pin_t cs_pin, pin_t en_pin); +void aw20216s_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); +void aw20216s_set_color_all(uint8_t red, uint8_t green, uint8_t blue); +void aw20216s_update_pwm_buffers(pin_t cs_pin, uint8_t index); + +void aw20216s_flush(void); + +#define CS1_SW1 0x00 +#define CS2_SW1 0x01 +#define CS3_SW1 0x02 +#define CS4_SW1 0x03 +#define CS5_SW1 0x04 +#define CS6_SW1 0x05 +#define CS7_SW1 0x06 +#define CS8_SW1 0x07 +#define CS9_SW1 0x08 +#define CS10_SW1 0x09 +#define CS11_SW1 0x0A +#define CS12_SW1 0x0B +#define CS13_SW1 0x0C +#define CS14_SW1 0x0D +#define CS15_SW1 0x0E +#define CS16_SW1 0x0F +#define CS17_SW1 0x10 +#define CS18_SW1 0x11 +#define CS1_SW2 0x12 +#define CS2_SW2 0x13 +#define CS3_SW2 0x14 +#define CS4_SW2 0x15 +#define CS5_SW2 0x16 +#define CS6_SW2 0x17 +#define CS7_SW2 0x18 +#define CS8_SW2 0x19 +#define CS9_SW2 0x1A +#define CS10_SW2 0x1B +#define CS11_SW2 0x1C +#define CS12_SW2 0x1D +#define CS13_SW2 0x1E +#define CS14_SW2 0x1F +#define CS15_SW2 0x20 +#define CS16_SW2 0x21 +#define CS17_SW2 0x22 +#define CS18_SW2 0x23 +#define CS1_SW3 0x24 +#define CS2_SW3 0x25 +#define CS3_SW3 0x26 +#define CS4_SW3 0x27 +#define CS5_SW3 0x28 +#define CS6_SW3 0x29 +#define CS7_SW3 0x2A +#define CS8_SW3 0x2B +#define CS9_SW3 0x2C +#define CS10_SW3 0x2D +#define CS11_SW3 0x2E +#define CS12_SW3 0x2F +#define CS13_SW3 0x30 +#define CS14_SW3 0x31 +#define CS15_SW3 0x32 +#define CS16_SW3 0x33 +#define CS17_SW3 0x34 +#define CS18_SW3 0x35 +#define CS1_SW4 0x36 +#define CS2_SW4 0x37 +#define CS3_SW4 0x38 +#define CS4_SW4 0x39 +#define CS5_SW4 0x3A +#define CS6_SW4 0x3B +#define CS7_SW4 0x3C +#define CS8_SW4 0x3D +#define CS9_SW4 0x3E +#define CS10_SW4 0x3F +#define CS11_SW4 0x40 +#define CS12_SW4 0x41 +#define CS13_SW4 0x42 +#define CS14_SW4 0x43 +#define CS15_SW4 0x44 +#define CS16_SW4 0x45 +#define CS17_SW4 0x46 +#define CS18_SW4 0x47 +#define CS1_SW5 0x48 +#define CS2_SW5 0x49 +#define CS3_SW5 0x4A +#define CS4_SW5 0x4B +#define CS5_SW5 0x4C +#define CS6_SW5 0x4D +#define CS7_SW5 0x4E +#define CS8_SW5 0x4F +#define CS9_SW5 0x50 +#define CS10_SW5 0x51 +#define CS11_SW5 0x52 +#define CS12_SW5 0x53 +#define CS13_SW5 0x54 +#define CS14_SW5 0x55 +#define CS15_SW5 0x56 +#define CS16_SW5 0x57 +#define CS17_SW5 0x58 +#define CS18_SW5 0x59 +#define CS1_SW6 0x5A +#define CS2_SW6 0x5B +#define CS3_SW6 0x5C +#define CS4_SW6 0x5D +#define CS5_SW6 0x5E +#define CS6_SW6 0x5F +#define CS7_SW6 0x60 +#define CS8_SW6 0x61 +#define CS9_SW6 0x62 +#define CS10_SW6 0x63 +#define CS11_SW6 0x64 +#define CS12_SW6 0x65 +#define CS13_SW6 0x66 +#define CS14_SW6 0x67 +#define CS15_SW6 0x68 +#define CS16_SW6 0x69 +#define CS17_SW6 0x6A +#define CS18_SW6 0x6B +#define CS1_SW7 0x6C +#define CS2_SW7 0x6D +#define CS3_SW7 0x6E +#define CS4_SW7 0x6F +#define CS5_SW7 0x70 +#define CS6_SW7 0x71 +#define CS7_SW7 0x72 +#define CS8_SW7 0x73 +#define CS9_SW7 0x74 +#define CS10_SW7 0x75 +#define CS11_SW7 0x76 +#define CS12_SW7 0x77 +#define CS13_SW7 0x78 +#define CS14_SW7 0x79 +#define CS15_SW7 0x7A +#define CS16_SW7 0x7B +#define CS17_SW7 0x7C +#define CS18_SW7 0x7D +#define CS1_SW8 0x7E +#define CS2_SW8 0x7F +#define CS3_SW8 0x80 +#define CS4_SW8 0x81 +#define CS5_SW8 0x82 +#define CS6_SW8 0x83 +#define CS7_SW8 0x84 +#define CS8_SW8 0x85 +#define CS9_SW8 0x86 +#define CS10_SW8 0x87 +#define CS11_SW8 0x88 +#define CS12_SW8 0x89 +#define CS13_SW8 0x8A +#define CS14_SW8 0x8B +#define CS15_SW8 0x8C +#define CS16_SW8 0x8D +#define CS17_SW8 0x8E +#define CS18_SW8 0x8F +#define CS1_SW9 0x90 +#define CS2_SW9 0x91 +#define CS3_SW9 0x92 +#define CS4_SW9 0x93 +#define CS5_SW9 0x94 +#define CS6_SW9 0x95 +#define CS7_SW9 0x96 +#define CS8_SW9 0x97 +#define CS9_SW9 0x98 +#define CS10_SW9 0x99 +#define CS11_SW9 0x9A +#define CS12_SW9 0x9B +#define CS13_SW9 0x9C +#define CS14_SW9 0x9D +#define CS15_SW9 0x9E +#define CS16_SW9 0x9F +#define CS17_SW9 0xA0 +#define CS18_SW9 0xA1 +#define CS1_SW10 0xA2 +#define CS2_SW10 0xA3 +#define CS3_SW10 0xA4 +#define CS4_SW10 0xA5 +#define CS5_SW10 0xA6 +#define CS6_SW10 0xA7 +#define CS7_SW10 0xA8 +#define CS8_SW10 0xA9 +#define CS9_SW10 0xAA +#define CS10_SW10 0xAB +#define CS11_SW10 0xAC +#define CS12_SW10 0xAD +#define CS13_SW10 0xAE +#define CS14_SW10 0xAF +#define CS15_SW10 0xB0 +#define CS16_SW10 0xB1 +#define CS17_SW10 0xB2 +#define CS18_SW10 0xB3 +#define CS1_SW11 0xB4 +#define CS2_SW11 0xB5 +#define CS3_SW11 0xB6 +#define CS4_SW11 0xB7 +#define CS5_SW11 0xB8 +#define CS6_SW11 0xB9 +#define CS7_SW11 0xBA +#define CS8_SW11 0xBB +#define CS9_SW11 0xBC +#define CS10_SW11 0xBD +#define CS11_SW11 0xBE +#define CS12_SW11 0xBF +#define CS13_SW11 0xC0 +#define CS14_SW11 0xC1 +#define CS15_SW11 0xC2 +#define CS16_SW11 0xC3 +#define CS17_SW11 0xC4 +#define CS18_SW11 0xC5 +#define CS1_SW12 0xC6 +#define CS2_SW12 0xC7 +#define CS3_SW12 0xC8 +#define CS4_SW12 0xC9 +#define CS5_SW12 0xCA +#define CS6_SW12 0xCB +#define CS7_SW12 0xCC +#define CS8_SW12 0xCD +#define CS9_SW12 0xCE +#define CS10_SW12 0xCF +#define CS11_SW12 0xD0 +#define CS12_SW12 0xD1 +#define CS13_SW12 0xD2 +#define CS14_SW12 0xD3 +#define CS15_SW12 0xD4 +#define CS16_SW12 0xD5 +#define CS17_SW12 0xD6 +#define CS18_SW12 0xD7 diff --git a/drivers/led/ckled2001-simple.c b/drivers/led/ckled2001-simple.c deleted file mode 100644 index c4d4c0a4cc27..000000000000 --- a/drivers/led/ckled2001-simple.c +++ /dev/null @@ -1,221 +0,0 @@ -/* 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-simple.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 - -#ifndef CKLED2001_CURRENT_TUNE -# define CKLED2001_CURRENT_TUNE \ - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } -#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) - uint8_t current_tuen_reg_list[LED_CURRENT_TUNE_LENGTH] = CKLED2001_CURRENT_TUNE; - 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, current_tuen_reg_list[i]); - } - - // 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_value(int index, uint8_t value) { - ckled2001_led led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led)); - - if (g_pwm_buffer[led.driver][led.v] == value) { - return; - } - g_pwm_buffer[led.driver][led.v] = value; - g_pwm_buffer_update_required[led.driver] = true; - } -} - -void ckled2001_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { - ckled2001_set_value(i, value); - } -} - -void ckled2001_set_led_control_register(uint8_t index, bool value) { - ckled2001_led led; - memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led)); - - uint8_t control_register = led.v / 8; - uint8_t bit_value = led.v % 8; - - if (value) { - g_led_control_registers[led.driver][control_register] |= (1 << bit_value); - } else { - g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value); - } - - 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_sw_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_sw_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-simple.h b/drivers/led/ckled2001-simple.h deleted file mode 100644 index c94df62dd2ee..000000000000 --- a/drivers/led/ckled2001-simple.h +++ /dev/null @@ -1,337 +0,0 @@ -/* 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 v; -} __attribute__((packed)) ckled2001_led; - -extern const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT]; - -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_value(int index, uint8_t value); -void ckled2001_set_value_all(uint8_t value); - -void ckled2001_set_led_control_register(uint8_t index, bool value); - -// 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_sw_return_normal(uint8_t addr); -void ckled2001_sw_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/ckled2001.c b/drivers/led/ckled2001.c deleted file mode 100644 index 6ababf55e906..000000000000 --- a/drivers/led/ckled2001.c +++ /dev/null @@ -1,236 +0,0 @@ -/* 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 - -#ifndef CKLED2001_CURRENT_TUNE -# define CKLED2001_CURRENT_TUNE \ - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } -#endif - -// Transfer buffer for TWITransmitData() -uint8_t g_twi_transfer_buffer[65]; - -// 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 3 transfers of 64 bytes. - - // Iterate over the pwm_buffer contents at 64 byte intervals. - for (uint8_t i = 0; i < 192; i += 64) { - g_twi_transfer_buffer[0] = i; - // Copy the data from i to i+63. - // Device will auto-increment register for data after the first byte - // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. - for (uint8_t j = 0; j < 64; 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, 65, CKLED2001_TIMEOUT) != 0) { - return false; - } - } -#else - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, 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) - uint8_t current_tuen_reg_list[LED_CURRENT_TUNE_LENGTH] = CKLED2001_CURRENT_TUNE; - 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, current_tuen_reg_list[i]); - } - - // 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 < RGB_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led)); - - if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { - return; - } - 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 < RGB_MATRIX_LED_COUNT; 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_sw_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_sw_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 deleted file mode 100644 index 32da137fb7ac..000000000000 --- a/drivers/led/ckled2001.h +++ /dev/null @@ -1,339 +0,0 @@ -/* 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[RGB_MATRIX_LED_COUNT]; - -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_sw_return_normal(uint8_t addr); -void ckled2001_sw_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/is31fl3218-simple.c b/drivers/led/issi/is31fl3218-simple.c new file mode 100644 index 000000000000..ce28c51d189f --- /dev/null +++ b/drivers/led/issi/is31fl3218-simple.c @@ -0,0 +1,147 @@ +/* Copyright 2018 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "is31fl3218.h" +#include +#include "i2c_master.h" + +#define IS31FL3218_PWM_REGISTER_COUNT 18 +#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3 + +#ifndef IS31FL3218_I2C_TIMEOUT +# define IS31FL3218_I2C_TIMEOUT 100 +#endif + +#ifndef IS31FL3218_I2C_PERSISTENCE +# define IS31FL3218_I2C_PERSISTENCE 0 +#endif + +// Reusable buffer for transfers +uint8_t g_twi_transfer_buffer[20]; + +// IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining. +uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required = false; + +uint8_t g_led_control_registers[IS31FL3218_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required = false; + +void is31fl3218_write_register(uint8_t reg, uint8_t data) { + g_twi_transfer_buffer[0] = reg; + g_twi_transfer_buffer[1] = data; +#if IS31FL3218_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { + if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break; + } +#else + i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT); +#endif +} + +void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { + g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM; + memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18); + +#if IS31FL3218_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { + i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); + } +#else + i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); +#endif +} + +void is31fl3218_init(void) { + i2c_init(); + + // In case we ever want to reinitialize (?) + is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00); + + // Turn off software shutdown + is31fl3218_write_register(IS31FL3218_REG_SHUTDOWN, 0x01); + + // Set all PWM values to zero + for (uint8_t i = 0; i < IS31FL3218_PWM_REGISTER_COUNT; i++) { + is31fl3218_write_register(IS31FL3218_REG_PWM + i, 0x00); + } + + // turn off all LEDs in the LED control register + for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00); + } + + // Load PWM registers and LED Control register data + is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01); + + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { + is31fl3218_set_led_control_register(i, true); + } + + is31fl3218_update_led_control_registers(); +} + +void is31fl3218_set_value(int index, uint8_t value) { + is31fl3218_led_t led; + if (index >= 0 && index < IS31FL3218_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); + } + if (g_pwm_buffer[led.v - IS31FL3218_REG_PWM] == value) { + return; + } + g_pwm_buffer[led.v - IS31FL3218_REG_PWM] = value; + g_pwm_buffer_update_required = true; +} + +void is31fl3218_set_value_all(uint8_t value) { + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { + is31fl3218_set_value(i, value); + } +} + +void is31fl3218_set_led_control_register(uint8_t index, bool value) { + is31fl3218_led_t led; + memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); + + uint8_t control_register = (led.v - IS31FL3218_REG_PWM) / 6; + uint8_t bit_value = (led.v - IS31FL3218_REG_PWM) % 6; + + if (value) { + g_led_control_registers[control_register] |= (1 << bit_value); + } else { + g_led_control_registers[control_register] &= ~(1 << bit_value); + } + + g_led_control_registers_update_required = true; +} + +void is31fl3218_update_pwm_buffers(void) { + if (g_pwm_buffer_update_required) { + is31fl3218_write_pwm_buffer(g_pwm_buffer); + // Load PWM registers and LED Control register data + is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01); + + g_pwm_buffer_update_required = false; + } +} + +void is31fl3218_update_led_control_registers(void) { + if (g_led_control_registers_update_required) { + for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]); + } + + g_led_control_registers_update_required = false; + } +} diff --git a/drivers/led/issi/is31fl3218-simple.h b/drivers/led/issi/is31fl3218-simple.h new file mode 100644 index 000000000000..94928178092d --- /dev/null +++ b/drivers/led/issi/is31fl3218-simple.h @@ -0,0 +1,73 @@ +/* Copyright 2018 Jason Williams (Wilba) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" +#include "util.h" + +#define IS31FL3218_REG_SHUTDOWN 0x00 +#define IS31FL3218_REG_PWM 0x01 +#define IS31FL3218_REG_LED_CONTROL_1 0x13 +#define IS31FL3218_REG_LED_CONTROL_2 0x14 +#define IS31FL3218_REG_LED_CONTROL_3 0x15 +#define IS31FL3218_REG_UPDATE 0x16 +#define IS31FL3218_REG_RESET 0x17 + +#define IS31FL3218_I2C_ADDRESS 0x54 + +#if defined(LED_MATRIX_IS31FL3218) +# define IS31FL3218_LED_COUNT LED_MATRIX_LED_COUNT +#endif + +typedef struct is31fl3218_led_t { + uint8_t v; +} PACKED is31fl3218_led_t; + +extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT]; + +void is31fl3218_init(void); + +void is31fl3218_set_value(int index, uint8_t value); + +void is31fl3218_set_value_all(uint8_t value); + +void is31fl3218_set_led_control_register(uint8_t index, bool value); + +void is31fl3218_update_pwm_buffers(void); + +void is31fl3218_update_led_control_registers(void); + +#define OUT1 0x01 +#define OUT2 0x02 +#define OUT3 0x03 +#define OUT4 0x04 +#define OUT5 0x05 +#define OUT6 0x06 +#define OUT7 0x07 +#define OUT8 0x08 +#define OUT9 0x09 +#define OUT10 0x0A +#define OUT11 0x0B +#define OUT12 0x0C +#define OUT13 0x0D +#define OUT14 0x0E +#define OUT15 0x0F +#define OUT16 0x10 +#define OUT17 0x11 +#define OUT18 0x12 diff --git a/drivers/led/issi/is31fl3218.c b/drivers/led/issi/is31fl3218.c index 970e9a0be98a..39db09d51864 100644 --- a/drivers/led/issi/is31fl3218.c +++ b/drivers/led/issi/is31fl3218.c @@ -14,84 +14,150 @@ * along with this program. If not, see . */ #include "is31fl3218.h" +#include #include "i2c_master.h" -// This is the full 8-bit address -#define ISSI_ADDRESS 0b10101000 +#define IS31FL3218_PWM_REGISTER_COUNT 18 +#define IS31FL3218_LED_CONTROL_REGISTER_COUNT 3 -// These are the register addresses -#define ISSI_REG_SHUTDOWN 0x00 -#define ISSI_REG_PWM 0x01 -#define ISSI_REG_CONTROL 0x13 -#define ISSI_REG_UPDATE 0x16 -#define ISSI_REG_RESET 0x17 +#ifndef IS31FL3218_I2C_TIMEOUT +# define IS31FL3218_I2C_TIMEOUT 100 +#endif -// Default timeout if no I2C response -#define ISSI_TIMEOUT 100 +#ifndef IS31FL3218_I2C_PERSISTENCE +# define IS31FL3218_I2C_PERSISTENCE 0 +#endif // Reusable buffer for transfers uint8_t g_twi_transfer_buffer[20]; // IS31FL3218 has 18 PWM outputs and a fixed I2C address, so no chaining. -// If used as RGB LED driver, LEDs are assigned RGB,RGB,RGB,RGB,RGB,RGB -uint8_t g_pwm_buffer[18]; +uint8_t g_pwm_buffer[IS31FL3218_PWM_REGISTER_COUNT]; bool g_pwm_buffer_update_required = false; +uint8_t g_led_control_registers[IS31FL3218_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required = false; + void is31fl3218_write_register(uint8_t reg, uint8_t data) { g_twi_transfer_buffer[0] = reg; g_twi_transfer_buffer[1] = data; - i2c_transmit(ISSI_ADDRESS, g_twi_transfer_buffer, 2, ISSI_TIMEOUT); +#if IS31FL3218_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { + if (i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT) == 0) break; + } +#else + i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 2, IS31FL3218_I2C_TIMEOUT); +#endif } void is31fl3218_write_pwm_buffer(uint8_t *pwm_buffer) { - g_twi_transfer_buffer[0] = ISSI_REG_PWM; + g_twi_transfer_buffer[0] = IS31FL3218_REG_PWM; memcpy(g_twi_transfer_buffer + 1, pwm_buffer, 18); - i2c_transmit(ISSI_ADDRESS, g_twi_transfer_buffer, 19, ISSI_TIMEOUT); +#if IS31FL3218_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3218_I2C_PERSISTENCE; i++) { + i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); + } +#else + i2c_transmit(IS31FL3218_I2C_ADDRESS << 1, g_twi_transfer_buffer, 19, IS31FL3218_I2C_TIMEOUT); +#endif } void is31fl3218_init(void) { + i2c_init(); + // In case we ever want to reinitialize (?) - is31fl3218_write_register(ISSI_REG_RESET, 0x00); + is31fl3218_write_register(IS31FL3218_REG_RESET, 0x00); // Turn off software shutdown - is31fl3218_write_register(ISSI_REG_SHUTDOWN, 0x01); + is31fl3218_write_register(IS31FL3218_REG_SHUTDOWN, 0x01); // Set all PWM values to zero - for (uint8_t i = 0; i < 18; i++) { - is31fl3218_write_register(ISSI_REG_PWM + i, 0x00); + for (uint8_t i = 0; i < IS31FL3218_PWM_REGISTER_COUNT; i++) { + is31fl3218_write_register(IS31FL3218_REG_PWM + i, 0x00); } - // Enable all channels - for (uint8_t i = 0; i < 3; i++) { - is31fl3218_write_register(ISSI_REG_CONTROL + i, 0b00111111); + // turn off all LEDs in the LED control register + for (uint8_t i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, 0x00); } // Load PWM registers and LED Control register data - is31fl3218_write_register(ISSI_REG_UPDATE, 0x01); + is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01); + + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { + is31fl3218_set_led_control_register(i, true, true, true); + } + + is31fl3218_update_led_control_registers(); } void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - if (g_pwm_buffer[index * 3 + 0] == red && g_pwm_buffer[index * 3 + 1] == green && g_pwm_buffer[index * 3 + 2] == blue) { + is31fl3218_led_t led; + if (index >= 0 && index < IS31FL3218_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); + } + if (g_pwm_buffer[led.r - IS31FL3218_REG_PWM] == red && g_pwm_buffer[led.g - IS31FL3218_REG_PWM] == green && g_pwm_buffer[led.b - IS31FL3218_REG_PWM] == blue) { return; } - g_pwm_buffer[index * 3 + 0] = red; - g_pwm_buffer[index * 3 + 1] = green; - g_pwm_buffer[index * 3 + 2] = blue; - g_pwm_buffer_update_required = true; + g_pwm_buffer[led.r - IS31FL3218_REG_PWM] = red; + g_pwm_buffer[led.g - IS31FL3218_REG_PWM] = green; + g_pwm_buffer[led.b - IS31FL3218_REG_PWM] = blue; + g_pwm_buffer_update_required = true; } void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < 6; i++) { + for (int i = 0; i < IS31FL3218_LED_COUNT; i++) { is31fl3218_set_color(i, red, green, blue); } } +void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { + is31fl3218_led_t led; + memcpy_P(&led, (&g_is31fl3218_leds[index]), sizeof(led)); + + uint8_t control_register_r = (led.r - IS31FL3218_REG_PWM) / 6; + uint8_t control_register_g = (led.g - IS31FL3218_REG_PWM) / 6; + uint8_t control_register_b = (led.b - IS31FL3218_REG_PWM) / 6; + uint8_t bit_r = (led.r - IS31FL3218_REG_PWM) % 6; + uint8_t bit_g = (led.g - IS31FL3218_REG_PWM) % 6; + uint8_t bit_b = (led.b - IS31FL3218_REG_PWM) % 6; + + if (red) { + g_led_control_registers[control_register_r] |= (1 << bit_r); + } else { + g_led_control_registers[control_register_r] &= ~(1 << bit_r); + } + if (green) { + g_led_control_registers[control_register_g] |= (1 << bit_g); + } else { + g_led_control_registers[control_register_g] &= ~(1 << bit_g); + } + if (blue) { + g_led_control_registers[control_register_b] |= (1 << bit_b); + } else { + g_led_control_registers[control_register_b] &= ~(1 << bit_b); + } + + g_led_control_registers_update_required = true; +} + void is31fl3218_update_pwm_buffers(void) { if (g_pwm_buffer_update_required) { is31fl3218_write_pwm_buffer(g_pwm_buffer); // Load PWM registers and LED Control register data - is31fl3218_write_register(ISSI_REG_UPDATE, 0x01); + is31fl3218_write_register(IS31FL3218_REG_UPDATE, 0x01); + + g_pwm_buffer_update_required = false; + } +} + +void is31fl3218_update_led_control_registers(void) { + if (g_led_control_registers_update_required) { + for (int i = 0; i < IS31FL3218_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3218_write_register(IS31FL3218_REG_LED_CONTROL_1 + i, g_led_control_registers[i]); + } + + g_led_control_registers_update_required = false; } - g_pwm_buffer_update_required = false; } diff --git a/drivers/led/issi/is31fl3218.h b/drivers/led/issi/is31fl3218.h index 2fe37684320f..ffa7f36d6159 100644 --- a/drivers/led/issi/is31fl3218.h +++ b/drivers/led/issi/is31fl3218.h @@ -18,9 +18,58 @@ #include #include -#include +#include "progmem.h" +#include "util.h" + +#define IS31FL3218_REG_SHUTDOWN 0x00 +#define IS31FL3218_REG_PWM 0x01 +#define IS31FL3218_REG_LED_CONTROL_1 0x13 +#define IS31FL3218_REG_LED_CONTROL_2 0x14 +#define IS31FL3218_REG_LED_CONTROL_3 0x15 +#define IS31FL3218_REG_UPDATE 0x16 +#define IS31FL3218_REG_RESET 0x17 + +#define IS31FL3218_I2C_ADDRESS 0x54 + +#if defined(RGB_MATRIX_IS31FL3218) +# define IS31FL3218_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + +typedef struct is31fl3218_led_t { + uint8_t r; + uint8_t g; + uint8_t b; +} PACKED is31fl3218_led_t; + +extern const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT]; void is31fl3218_init(void); + void is31fl3218_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); + void is31fl3218_set_color_all(uint8_t red, uint8_t green, uint8_t blue); + +void is31fl3218_set_led_control_register(uint8_t index, bool red, bool green, bool blue); + void is31fl3218_update_pwm_buffers(void); + +void is31fl3218_update_led_control_registers(void); + +#define OUT1 0x01 +#define OUT2 0x02 +#define OUT3 0x03 +#define OUT4 0x04 +#define OUT5 0x05 +#define OUT6 0x06 +#define OUT7 0x07 +#define OUT8 0x08 +#define OUT9 0x09 +#define OUT10 0x0A +#define OUT11 0x0B +#define OUT12 0x0C +#define OUT13 0x0D +#define OUT14 0x0E +#define OUT15 0x0F +#define OUT16 0x10 +#define OUT17 0x11 +#define OUT18 0x12 diff --git a/drivers/led/issi/is31fl3731-simple.c b/drivers/led/issi/is31fl3731-simple.c index f7f6980a3b68..8dbfc3cd31e1 100644 --- a/drivers/led/issi/is31fl3731-simple.c +++ b/drivers/led/issi/is31fl3731-simple.c @@ -18,44 +18,19 @@ */ #include "is31fl3731-simple.h" +#include #include "i2c_master.h" #include "wait.h" -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 0b1110100 AD <-> GND -// 0b1110111 AD <-> VCC -// 0b1110101 AD <-> SCL -// 0b1110110 AD <-> SDA -#define ISSI_ADDR_DEFAULT 0x74 +#define IS31FL3731_PWM_REGISTER_COUNT 144 +#define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18 -#define ISSI_REG_CONFIG 0x00 -#define ISSI_REG_CONFIG_PICTUREMODE 0x00 -#define ISSI_REG_CONFIG_AUTOPLAYMODE 0x08 -#define ISSI_REG_CONFIG_AUDIOPLAYMODE 0x18 - -#define ISSI_CONF_PICTUREMODE 0x00 -#define ISSI_CONF_AUTOFRAMEMODE 0x04 -#define ISSI_CONF_AUDIOMODE 0x08 - -#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 - -#define ISSI_COMMANDREGISTER 0xFD -#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine' - -#ifndef ISSI_TIMEOUT -# define ISSI_TIMEOUT 100 +#ifndef IS31FL3731_I2C_TIMEOUT +# define IS31FL3731_I2C_TIMEOUT 100 #endif -#ifndef ISSI_PERSISTENCE -# define ISSI_PERSISTENCE 0 +#ifndef IS31FL3731_I2C_PERSISTENCE +# define IS31FL3731_I2C_PERSISTENCE 0 #endif // Transfer buffer for TWITransmitData() @@ -66,47 +41,24 @@ uint8_t g_twi_transfer_buffer[20]; // We could optimize this and take out the unused registers from these // buffers and the transfers in is31fl3731_write_pwm_buffer() but it's // probably not worth the extra complexity. -uint8_t g_pwm_buffer[LED_DRIVER_COUNT][144]; -bool g_pwm_buffer_update_required[LED_DRIVER_COUNT] = {false}; - -/* There's probably a better way to init this... */ -#if LED_DRIVER_COUNT == 1 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}}; -#elif LED_DRIVER_COUNT == 2 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}}; -#elif LED_DRIVER_COUNT == 3 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}}; -#elif LED_DRIVER_COUNT == 4 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][18] = {{0}, {0}, {0}, {0}}; -#endif -bool g_led_control_registers_update_required[LED_DRIVER_COUNT] = {false}; - -// This is the bit pattern in the LED control registers -// (for matrix A, add one to register for matrix B) -// -// reg - b7 b6 b5 b4 b3 b2 b1 b0 -// 0x00 - R08,R07,R06,R05,R04,R03,R02,R01 -// 0x02 - G08,G07,G06,G05,G04,G03,G02,R00 -// 0x04 - B08,B07,B06,B05,B04,B03,G01,G00 -// 0x06 - - , - , - , - , - ,B02,B01,B00 -// 0x08 - - , - , - , - , - , - , - , - -// 0x0A - B17,B16,B15, - , - , - , - , - -// 0x0C - G17,G16,B14,B13,B12,B11,B10,B09 -// 0x0E - R17,G15,G14,G13,G12,G11,G10,G09 -// 0x10 - R16,R15,R14,R13,R12,R11,R10,R09 +uint8_t g_pwm_buffer[IS31FL3731_DRIVER_COUNT][IS31FL3731_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3731_DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false}; void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) { g_twi_transfer_buffer[0] = reg; g_twi_transfer_buffer[1] = data; -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0) { +#if IS31FL3731_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) { break; } } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); #endif } @@ -117,7 +69,7 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // g_twi_transfer_buffer[] is 20 bytes // iterate over the pwm_buffer contents at 16 byte intervals - for (int i = 0; i < 144; i += 16) { + for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) { // set the first register, e.g. 0x24, 0x34, 0x44, etc. g_twi_transfer_buffer[0] = 0x24 + i; // copy the data from i to i+15 @@ -125,14 +77,44 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) == 0) break; +#if IS31FL3731_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT); +#endif + } +} + +void is31fl3731_init_drivers(void) { + i2c_init(); + + is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); +#if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_3); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_4); +# endif +# endif #endif + + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { + is31fl3731_set_led_control_register(i, true); } + + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); +#if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3); +# endif +# endif +#endif } void is31fl3731_init(uint8_t addr) { @@ -142,29 +124,29 @@ void is31fl3731_init(uint8_t addr) { // then disable software shutdown. // select "function register" bank - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, ISSI_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // 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); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00); +#ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN); #endif // this delay was copied from other drivers, might not be needed wait_ms(10); // picture mode - is31fl3731_write_register(addr, ISSI_REG_CONFIG, ISSI_REG_CONFIG_PICTUREMODE); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE); // display frame 0 - is31fl3731_write_register(addr, ISSI_REG_PICTUREFRAME, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00); // audio sync off - is31fl3731_write_register(addr, ISSI_REG_AUDIOSYNC, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00); // select bank 0 - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); // turn off all LEDs in the LED control register - for (int i = 0x00; i <= 0x11; i++) { + for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3731_write_register(addr, i, 0x00); } @@ -179,21 +161,21 @@ void is31fl3731_init(uint8_t addr) { } // select "function register" bank - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, ISSI_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // disable software shutdown - is31fl3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x01); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01); // select bank 0 and leave it selected. // most usage after initialization is just writing PWM buffers in bank 0 // as there's not much point in double-buffering - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); } void is31fl3731_set_value(int index, uint8_t value) { - is31_led led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3731_led_t led; + if (index >= 0 && index < IS31FL3731_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); // Subtract 0x24 to get the second index of g_pwm_buffer @@ -206,14 +188,14 @@ void is31fl3731_set_value(int index, uint8_t value) { } void is31fl3731_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { is31fl3731_set_value(i, value); } } void is31fl3731_set_led_control_register(uint8_t index, bool value) { - is31_led led; - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3731_led_t led; + memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); uint8_t control_register = (led.v - 0x24) / 8; uint8_t bit_value = (led.v - 0x24) % 8; @@ -236,9 +218,22 @@ void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { - for (int i = 0; i < 18; i++) { + for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3731_write_register(addr, i, g_led_control_registers[index][i]); } g_led_control_registers_update_required[index] = false; } } + +void is31fl3731_flush(void) { + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0); +#if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3731-simple.h b/drivers/led/issi/is31fl3731-simple.h index 69fba14a0b38..4d173847dd9d 100644 --- a/drivers/led/issi/is31fl3731-simple.h +++ b/drivers/led/issi/is31fl3731-simple.h @@ -20,16 +20,87 @@ #include #include -#include #include "progmem.h" +#include "util.h" -typedef struct is31_led { +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef LED_DRIVER_ADDR_1 +# define IS31FL3731_I2C_ADDRESS_1 LED_DRIVER_ADDR_1 +#endif +#ifdef LED_DRIVER_ADDR_2 +# define IS31FL3731_I2C_ADDRESS_2 LED_DRIVER_ADDR_2 +#endif +#ifdef LED_DRIVER_ADDR_3 +# define IS31FL3731_I2C_ADDRESS_3 LED_DRIVER_ADDR_3 +#endif +#ifdef LED_DRIVER_ADDR_4 +# define IS31FL3731_I2C_ADDRESS_4 LED_DRIVER_ADDR_4 +#endif +#ifdef ISSI_TIMEOUT +# define IS31FL3731_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3731_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_3731_DEGHOST +# define IS31FL3731_DEGHOST ISSI_3731_DEGHOST +#endif + +#define is31_led is31fl3731_led_t +#define g_is31_leds g_is31fl3731_leds +// ======== + +#define IS31FL3731_REG_COMMAND 0xFD +#define IS31FL3731_COMMAND_FRAME_1 0x00 +#define IS31FL3731_COMMAND_FRAME_2 0x01 +#define IS31FL3731_COMMAND_FRAME_3 0x02 +#define IS31FL3731_COMMAND_FRAME_4 0x03 +#define IS31FL3731_COMMAND_FRAME_5 0x04 +#define IS31FL3731_COMMAND_FRAME_6 0x05 +#define IS31FL3731_COMMAND_FRAME_7 0x06 +#define IS31FL3731_COMMAND_FRAME_8 0x07 +#define IS31FL3731_COMMAND_FUNCTION 0x0B + +#define IS31FL3731_FUNCTION_REG_CONFIG 0x00 +#define IS31FL3731_CONFIG_MODE_PICTURE 0x00 +#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08 +#define IS31FL3731_CONFIG_MODE_AUDIO_PLAY 0x18 + +#define IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY 0x01 +#define IS31FL3731_FUNCTION_REG_AUDIO_SYNC 0x06 +#define IS31FL3731_FUNCTION_REG_SHUTDOWN 0x0A + +// Not defined in the datasheet -- See AN for IC +#define IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION 0xC2 +#define IS31FL3731_GHOST_IMAGE_PREVENTION_GEN 0x10 + +#define IS31FL3731_I2C_ADDRESS_GND 0x74 +#define IS31FL3731_I2C_ADDRESS_SCL 0x75 +#define IS31FL3731_I2C_ADDRESS_SDA 0x76 +#define IS31FL3731_I2C_ADDRESS_VCC 0x77 + +#if defined(LED_MATRIX_IS31FL3731) +# define IS31FL3731_LED_COUNT LED_MATRIX_LED_COUNT +#endif + +#if defined IS31FL3731_I2C_ADDRESS_4 +# define IS31FL3731_DRIVER_COUNT 4 +#elif defined IS31FL3731_I2C_ADDRESS_3 +# define IS31FL3731_DRIVER_COUNT 3 +#elif defined IS31FL3731_I2C_ADDRESS_2 +# define IS31FL3731_DRIVER_COUNT 2 +#elif defined IS31FL3731_I2C_ADDRESS_1 +# define IS31FL3731_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3731_led_t { uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31_led; +} PACKED is31fl3731_led_t; -extern const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT]; +extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT]; +void is31fl3731_init_drivers(void); void is31fl3731_init(uint8_t addr); void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -46,6 +117,8 @@ void is31fl3731_set_led_control_register(uint8_t index, bool value); void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index); void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index); +void is31fl3731_flush(void); + #define C1_1 0x24 #define C1_2 0x25 #define C1_3 0x26 diff --git a/drivers/led/issi/is31fl3731.c b/drivers/led/issi/is31fl3731.c index 15a01b6d75c6..1ab8997731f7 100644 --- a/drivers/led/issi/is31fl3731.c +++ b/drivers/led/issi/is31fl3731.c @@ -17,44 +17,19 @@ */ #include "is31fl3731.h" +#include #include "i2c_master.h" #include "wait.h" -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 0b1110100 AD <-> GND -// 0b1110111 AD <-> VCC -// 0b1110101 AD <-> SCL -// 0b1110110 AD <-> SDA -#define ISSI_ADDR_DEFAULT 0x74 +#define IS31FL3731_PWM_REGISTER_COUNT 144 +#define IS31FL3731_LED_CONTROL_REGISTER_COUNT 18 -#define ISSI_REG_CONFIG 0x00 -#define ISSI_REG_CONFIG_PICTUREMODE 0x00 -#define ISSI_REG_CONFIG_AUTOPLAYMODE 0x08 -#define ISSI_REG_CONFIG_AUDIOPLAYMODE 0x18 - -#define ISSI_CONF_PICTUREMODE 0x00 -#define ISSI_CONF_AUTOFRAMEMODE 0x04 -#define ISSI_CONF_AUDIOMODE 0x08 - -#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 - -#define ISSI_COMMANDREGISTER 0xFD -#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine' - -#ifndef ISSI_TIMEOUT -# define ISSI_TIMEOUT 100 +#ifndef IS31FL3731_I2C_TIMEOUT +# define IS31FL3731_I2C_TIMEOUT 100 #endif -#ifndef ISSI_PERSISTENCE -# define ISSI_PERSISTENCE 0 +#ifndef IS31FL3731_I2C_PERSISTENCE +# define IS31FL3731_I2C_PERSISTENCE 0 #endif // Transfer buffer for TWITransmitData() @@ -65,36 +40,22 @@ uint8_t g_twi_transfer_buffer[20]; // We could optimize this and take out the unused registers from these // buffers and the transfers in is31fl3731_write_pwm_buffer() but it's // probably not worth the extra complexity. -uint8_t g_pwm_buffer[DRIVER_COUNT][144]; -bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; - -uint8_t g_led_control_registers[DRIVER_COUNT][18] = {{0}}; -bool g_led_control_registers_update_required[DRIVER_COUNT] = {false}; - -// This is the bit pattern in the LED control registers -// (for matrix A, add one to register for matrix B) -// -// reg - b7 b6 b5 b4 b3 b2 b1 b0 -// 0x00 - R08,R07,R06,R05,R04,R03,R02,R01 -// 0x02 - G08,G07,G06,G05,G04,G03,G02,R00 -// 0x04 - B08,B07,B06,B05,B04,B03,G01,G00 -// 0x06 - - , - , - , - , - ,B02,B01,B00 -// 0x08 - - , - , - , - , - , - , - , - -// 0x0A - B17,B16,B15, - , - , - , - , - -// 0x0C - G17,G16,B14,B13,B12,B11,B10,B09 -// 0x0E - R17,G15,G14,G13,G12,G11,G10,G09 -// 0x10 - R16,R15,R14,R13,R12,R11,R10,R09 +uint8_t g_pwm_buffer[IS31FL3731_DRIVER_COUNT][IS31FL3731_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3731_DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[IS31FL3731_DRIVER_COUNT][IS31FL3731_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3731_DRIVER_COUNT] = {false}; void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data) { g_twi_transfer_buffer[0] = reg; g_twi_transfer_buffer[1] = data; -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break; +#if IS31FL3731_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3731_I2C_TIMEOUT); #endif } @@ -105,7 +66,7 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // g_twi_transfer_buffer[] is 20 bytes // iterate over the pwm_buffer contents at 16 byte intervals - for (int i = 0; i < 144; i += 16) { + for (int i = 0; i < IS31FL3731_PWM_REGISTER_COUNT; i += 16) { // set the first register, e.g. 0x24, 0x34, 0x44, etc. g_twi_transfer_buffer[0] = 0x24 + i; // copy the data from i to i+15 @@ -113,16 +74,46 @@ void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // thus this sets registers 0x24-0x33, 0x34-0x43, etc. in one transfer memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) == 0) break; +#if IS31FL3731_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3731_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3731_I2C_TIMEOUT); #endif } } +void is31fl3731_init_drivers(void) { + i2c_init(); + + is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); +#if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_3); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_init(IS31FL3731_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { + is31fl3731_set_led_control_register(i, true, true, true); + } + + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); +#if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_3, 2); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + void is31fl3731_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, first enable software shutdown, @@ -130,29 +121,29 @@ void is31fl3731_init(uint8_t addr) { // then disable software shutdown. // select "function register" bank - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, ISSI_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // 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); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x00); +#ifdef IS31FL3731_DEGHOST // set to enable de-ghosting of the array + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION, IS31FL3731_GHOST_IMAGE_PREVENTION_GEN); #endif // this delay was copied from other drivers, might not be needed wait_ms(10); // picture mode - is31fl3731_write_register(addr, ISSI_REG_CONFIG, ISSI_REG_CONFIG_PICTUREMODE); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_CONFIG, IS31FL3731_CONFIG_MODE_PICTURE); // display frame 0 - is31fl3731_write_register(addr, ISSI_REG_PICTUREFRAME, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY, 0x00); // audio sync off - is31fl3731_write_register(addr, ISSI_REG_AUDIOSYNC, 0x00); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_AUDIO_SYNC, 0x00); // select bank 0 - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); // turn off all LEDs in the LED control register - for (int i = 0x00; i <= 0x11; i++) { + for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3731_write_register(addr, i, 0x00); } @@ -167,21 +158,21 @@ void is31fl3731_init(uint8_t addr) { } // select "function register" bank - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, ISSI_BANK_FUNCTIONREG); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FUNCTION); // disable software shutdown - is31fl3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x01); + is31fl3731_write_register(addr, IS31FL3731_FUNCTION_REG_SHUTDOWN, 0x01); // select bank 0 and leave it selected. // most usage after initialization is just writing PWM buffers in bank 0 // as there's not much point in double-buffering - is31fl3731_write_register(addr, ISSI_COMMANDREGISTER, 0); + is31fl3731_write_register(addr, IS31FL3731_REG_COMMAND, IS31FL3731_COMMAND_FRAME_1); } void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - is31_led led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3731_led_t led; + if (index >= 0 && index < IS31FL3731_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); // Subtract 0x24 to get the second index of g_pwm_buffer if (g_pwm_buffer[led.driver][led.r - 0x24] == red && g_pwm_buffer[led.driver][led.g - 0x24] == green && g_pwm_buffer[led.driver][led.b - 0x24] == blue) { @@ -195,14 +186,14 @@ void is31fl3731_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3731_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3731_LED_COUNT; i++) { is31fl3731_set_color(i, red, green, blue); } } void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led; - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3731_led_t led; + memcpy_P(&led, (&g_is31fl3731_leds[index]), sizeof(led)); uint8_t control_register_r = (led.r - 0x24) / 8; uint8_t control_register_g = (led.g - 0x24) / 8; @@ -239,9 +230,22 @@ void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { - for (int i = 0; i < 18; i++) { + for (int i = 0; i < IS31FL3731_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3731_write_register(addr, i, g_led_control_registers[index][i]); } } g_led_control_registers_update_required[index] = false; } + +void is31fl3731_flush(void) { + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_1, 0); +#if defined(IS31FL3731_I2C_ADDRESS_2) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_2, 1); +# if defined(IS31FL3731_I2C_ADDRESS_3) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_3, 2); +# if defined(IS31FL3731_I2C_ADDRESS_4) + is31fl3731_update_pwm_buffers(IS31FL3731_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3731.h b/drivers/led/issi/is31fl3731.h index bdf03de1ee16..b45cb2b07dc8 100644 --- a/drivers/led/issi/is31fl3731.h +++ b/drivers/led/issi/is31fl3731.h @@ -19,18 +19,89 @@ #include #include -#include #include "progmem.h" +#include "util.h" -typedef struct is31_led { +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef DRIVER_ADDR_1 +# define IS31FL3731_I2C_ADDRESS_1 DRIVER_ADDR_1 +#endif +#ifdef DRIVER_ADDR_2 +# define IS31FL3731_I2C_ADDRESS_2 DRIVER_ADDR_2 +#endif +#ifdef DRIVER_ADDR_3 +# define IS31FL3731_I2C_ADDRESS_3 DRIVER_ADDR_3 +#endif +#ifdef DRIVER_ADDR_4 +# define IS31FL3731_I2C_ADDRESS_4 DRIVER_ADDR_4 +#endif +#ifdef ISSI_TIMEOUT +# define IS31FL3731_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3731_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_3731_DEGHOST +# define IS31FL3731_DEGHOST ISSI_3731_DEGHOST +#endif + +#define is31_led is31fl3731_led_t +#define g_is31_leds g_is31fl3731_leds +// ======== + +#define IS31FL3731_REG_COMMAND 0xFD +#define IS31FL3731_COMMAND_FRAME_1 0x00 +#define IS31FL3731_COMMAND_FRAME_2 0x01 +#define IS31FL3731_COMMAND_FRAME_3 0x02 +#define IS31FL3731_COMMAND_FRAME_4 0x03 +#define IS31FL3731_COMMAND_FRAME_5 0x04 +#define IS31FL3731_COMMAND_FRAME_6 0x05 +#define IS31FL3731_COMMAND_FRAME_7 0x06 +#define IS31FL3731_COMMAND_FRAME_8 0x07 +#define IS31FL3731_COMMAND_FUNCTION 0x0B + +#define IS31FL3731_FUNCTION_REG_CONFIG 0x00 +#define IS31FL3731_CONFIG_MODE_PICTURE 0x00 +#define IS31FL3731_CONFIG_MODE_AUTO_PLAY 0x08 +#define IS31FL3731_CONFIG_MODE_AUDIO_PLAY 0x18 + +#define IS31FL3731_FUNCTION_REG_PICTURE_DISPLAY 0x01 +#define IS31FL3731_FUNCTION_REG_AUDIO_SYNC 0x06 +#define IS31FL3731_FUNCTION_REG_SHUTDOWN 0x0A + +// Not defined in the datasheet -- See AN for IC +#define IS31FL3731_FUNCTION_REG_GHOST_IMAGE_PREVENTION 0xC2 +#define IS31FL3731_GHOST_IMAGE_PREVENTION_GEN 0x10 + +#define IS31FL3731_I2C_ADDRESS_GND 0x74 +#define IS31FL3731_I2C_ADDRESS_SCL 0x75 +#define IS31FL3731_I2C_ADDRESS_SDA 0x76 +#define IS31FL3731_I2C_ADDRESS_VCC 0x77 + +#if defined(RGB_MATRIX_IS31FL3731) +# define IS31FL3731_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3731_I2C_ADDRESS_4) +# define IS31FL3731_DRIVER_COUNT 4 +#elif defined(IS31FL3731_I2C_ADDRESS_3) +# define IS31FL3731_DRIVER_COUNT 3 +#elif defined(IS31FL3731_I2C_ADDRESS_2) +# define IS31FL3731_DRIVER_COUNT 2 +#elif defined(IS31FL3731_I2C_ADDRESS_1) +# define IS31FL3731_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3731_led_t { uint8_t driver : 2; uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31_led; +} PACKED is31fl3731_led_t; -extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT]; +void is31fl3731_init_drivers(void); void is31fl3731_init(uint8_t addr); void is31fl3731_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3731_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -47,6 +118,8 @@ void is31fl3731_set_led_control_register(uint8_t index, bool red, bool green, bo void is31fl3731_update_pwm_buffers(uint8_t addr, uint8_t index); void is31fl3731_update_led_control_registers(uint8_t addr, uint8_t index); +void is31fl3731_flush(void); + #define C1_1 0x24 #define C1_2 0x25 #define C1_3 0x26 diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c index f9a0a271a89c..9f2444c253a5 100644 --- a/drivers/led/issi/is31fl3733-simple.c +++ b/drivers/led/issi/is31fl3733-simple.c @@ -19,59 +19,48 @@ */ #include "is31fl3733-simple.h" +#include #include "i2c_master.h" #include "wait.h" -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC -// ADDR1 represents A1:A0 of the 7-bit address. -// ADDR2 represents A3:A2 of the 7-bit address. -// The result is: 0b101(ADDR2)(ADDR1) -#define ISSI_ADDR_DEFAULT 0x50 - -#define ISSI_COMMANDREGISTER 0xFD -#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE -#define ISSI_INTERRUPTMASKREGISTER 0xF0 -#define ISSI_INTERRUPTSTATUSREGISTER 0xF1 - -#define ISSI_PAGE_LEDCONTROL 0x00 // PG0 -#define ISSI_PAGE_PWM 0x01 // PG1 -#define ISSI_PAGE_AUTOBREATH 0x02 // PG2 -#define ISSI_PAGE_FUNCTION 0x03 // PG3 - -#define ISSI_REG_CONFIGURATION 0x00 // PG3 -#define ISSI_REG_GLOBALCURRENT 0x01 // PG3 -#define ISSI_REG_RESET 0x11 // PG3 -#define ISSI_REG_SWPULLUP 0x0F // PG3 -#define ISSI_REG_CSPULLUP 0x10 // PG3 - -#ifndef ISSI_TIMEOUT -# define ISSI_TIMEOUT 100 +#define IS31FL3733_PWM_REGISTER_COUNT 192 +#define IS31FL3733_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef IS31FL3733_I2C_TIMEOUT +# define IS31FL3733_I2C_TIMEOUT 100 #endif -#ifndef ISSI_PERSISTENCE -# define ISSI_PERSISTENCE 0 +#ifndef IS31FL3733_I2C_PERSISTENCE +# define IS31FL3733_I2C_PERSISTENCE 0 #endif -#ifndef ISSI_PWM_FREQUENCY -# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only +#ifndef IS31FL3733_PWM_FREQUENCY +# define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3733B only #endif -#ifndef ISSI_SWPULLUP -# define ISSI_SWPULLUP PUR_0R +#ifndef IS31FL3733_SW_PULLUP +# define IS31FL3733_SW_PULLUP IS31FL3733_PUR_0_OHM #endif -#ifndef ISSI_CSPULLUP -# define ISSI_CSPULLUP PUR_0R +#ifndef IS31FL3733_CS_PULLDOWN +# define IS31FL3733_CSPULLDOWN IS31FL3733_PDR_0_OHM #endif -#ifndef ISSI_GLOBALCURRENT -# define ISSI_GLOBALCURRENT 0xFF +#ifndef IS31FL3733_GLOBAL_CURRENT +# define IS31FL3733_GLOBAL_CURRENT 0xFF +#endif + +#ifndef IS31FL3733_SYNC_1 +# define IS31FL3733_SYNC_1 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_2 +# define IS31FL3733_SYNC_2 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_3 +# define IS31FL3733_SYNC_3 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_4 +# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE #endif // Transfer buffer for TWITransmitData() @@ -83,34 +72,25 @@ uint8_t g_twi_transfer_buffer[20]; // We could optimize this and take out the unused registers from these // buffers and the transfers in is31fl3733_write_pwm_buffer() but it's // probably not worth the extra complexity. -uint8_t g_pwm_buffer[LED_DRIVER_COUNT][192]; -bool g_pwm_buffer_update_required[LED_DRIVER_COUNT] = {false}; - -/* There's probably a better way to init this... */ -#if LED_DRIVER_COUNT == 1 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][24] = {{0}}; -#elif LED_DRIVER_COUNT == 2 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][24] = {{0}, {0}}; -#elif LED_DRIVER_COUNT == 3 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][24] = {{0}, {0}, {0}}; -#elif LED_DRIVER_COUNT == 4 -uint8_t g_led_control_registers[LED_DRIVER_COUNT][24] = {{0}, {0}, {0}, {0}}; -#endif -bool g_led_control_registers_update_required[LED_DRIVER_COUNT] = {false}; +uint8_t g_pwm_buffer[IS31FL3733_DRIVER_COUNT][IS31FL3733_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3733_DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[IS31FL3733_DRIVER_COUNT][IS31FL3733_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] = {false}; bool is31fl3733_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 ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) { +#if IS31FL3733_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } } #else - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } #endif @@ -124,21 +104,21 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // 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) { + for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; 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. memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) { +#if IS31FL3733_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } } #else - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } #endif @@ -146,6 +126,36 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void is31fl3733_init_drivers(void) { + i2c_init(); + + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { + is31fl3733_set_led_control_register(i, true); + } + + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + void is31fl3733_init(uint8_t addr, uint8_t sync) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -154,48 +164,48 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { // Sync is passed so set it according to the datasheet. // Unlock the command register. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); // Turn off all LEDs. - for (int i = 0x00; i <= 0x17; i++) { + for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. - for (int i = 0x00; i <= 0xBF; i++) { + for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3733_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3733_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); // Set global current to maximum. - is31fl3733_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3733_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3733_write_register(addr, ISSI_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); } void is31fl3733_set_value(int index, uint8_t value) { - is31_led led; - if (index >= 0 && index < LED_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3733_led_t led; + if (index >= 0 && index < IS31FL3733_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.v] == value) { return; @@ -206,14 +216,14 @@ void is31fl3733_set_value(int index, uint8_t value) { } void is31fl3733_set_value_all(uint8_t value) { - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { is31fl3733_set_value(i, value); } } void is31fl3733_set_led_control_register(uint8_t index, bool value) { - is31_led led; - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3733_led_t led; + memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); uint8_t control_register = led.v / 8; uint8_t bit_value = led.v % 8; @@ -230,8 +240,8 @@ void is31fl3733_set_led_control_register(uint8_t index, bool value) { void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // If any of the transactions fail we risk writing dirty PG0, // refresh page 0 just in case. @@ -245,11 +255,24 @@ void is31fl3733_update_pwm_buffers(uint8_t addr, uint8_t index) { void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); - for (int i = 0; i < 24; i++) { + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); + for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); } g_led_control_registers_update_required[index] = false; } } + +void is31fl3733_flush(void) { + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3733-simple.h b/drivers/led/issi/is31fl3733-simple.h index 1458f7ac8dd4..c37b1fe5f2c2 100644 --- a/drivers/led/issi/is31fl3733-simple.h +++ b/drivers/led/issi/is31fl3733-simple.h @@ -22,16 +22,99 @@ #include #include -#include #include "progmem.h" +#include "util.h" -typedef struct is31_led { +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef ISSI_TIMEOUT +# define IS31FL3733_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3733_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_PWM_FREQUENCY +# define IS31FL3733_PWM_FREQUENCY ISSI_PWM_FREQUENCY +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3733_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3733_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3733_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif + +#define is31_led is31fl3733_led_t +#define g_is31_leds g_is31fl3733_leds + +#define PUR_0R IS31FL3733_PUR_0_OHM +#define PUR_05KR IS31FL3733_PUR_1K_OHM +#define PUR_3KR IS31FL3733_PUR_2K_OHM +#define PUR_4KR IS31FL3733_PUR_4K_OHM +#define PUR_8KR IS31FL3733_PUR_8K_OHM +#define PUR_16KR IS31FL3733_PUR_16K_OHM +#define PUR_32KR IS31FL3733_PUR_32K_OHM +// ======== + +#define IS31FL3733_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3733_REG_COMMAND 0xFD + +#define IS31FL3733_COMMAND_LED_CONTROL 0x00 +#define IS31FL3733_COMMAND_PWM 0x01 +#define IS31FL3733_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3733_COMMAND_FUNCTION 0x03 + +#define IS31FL3733_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3733_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3733_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3733_FUNCTION_REG_RESET 0x11 + +#define IS31FL3733_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3733_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3733_I2C_ADDRESS_GND_GND 0x50 +#define IS31FL3733_I2C_ADDRESS_GND_SCL 0x51 +#define IS31FL3733_I2C_ADDRESS_GND_SDA 0x52 +#define IS31FL3733_I2C_ADDRESS_GND_VCC 0x53 +#define IS31FL3733_I2C_ADDRESS_SCL_GND 0x54 +#define IS31FL3733_I2C_ADDRESS_SCL_SCL 0x55 +#define IS31FL3733_I2C_ADDRESS_SCL_SDA 0x56 +#define IS31FL3733_I2C_ADDRESS_SCL_VCC 0x57 +#define IS31FL3733_I2C_ADDRESS_SDA_GND 0x58 +#define IS31FL3733_I2C_ADDRESS_SDA_SCL 0x59 +#define IS31FL3733_I2C_ADDRESS_SDA_SDA 0x5A +#define IS31FL3733_I2C_ADDRESS_SDA_VCC 0x5B +#define IS31FL3733_I2C_ADDRESS_VCC_GND 0x5C +#define IS31FL3733_I2C_ADDRESS_VCC_SCL 0x5D +#define IS31FL3733_I2C_ADDRESS_VCC_SDA 0x5E +#define IS31FL3733_I2C_ADDRESS_VCC_VCC 0x5F + +#if defined(LED_MATRIX_IS31FL3733) +# define IS31FL3733_LED_COUNT LED_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3733_I2C_ADDRESS_4) +# define IS31FL3733_DRIVER_COUNT 4 +#elif defined(IS31FL3733_I2C_ADDRESS_3) +# define IS31FL3733_DRIVER_COUNT 3 +#elif defined(IS31FL3733_I2C_ADDRESS_2) +# define IS31FL3733_DRIVER_COUNT 2 +#elif defined(IS31FL3733_I2C_ADDRESS_1) +# define IS31FL3733_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3733_led_t { uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31_led; +} PACKED is31fl3733_led_t; -extern const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT]; +extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT]; +void is31fl3733_init_drivers(void); void is31fl3733_init(uint8_t addr, uint8_t sync); bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -48,13 +131,35 @@ void is31fl3733_set_led_control_register(uint8_t index, bool value); 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 +void is31fl3733_flush(void); + +#define IS31FL3733_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3733_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3733_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3733_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3733_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3733_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3733_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3733_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3733_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3733_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3733_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3733_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3733_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3733_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3733_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3733_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3733_PWM_FREQUENCY_8K4_HZ 0b000 +#define IS31FL3733_PWM_FREQUENCY_4K2_HZ 0b001 +#define IS31FL3733_PWM_FREQUENCY_26K7_HZ 0b010 +#define IS31FL3733_PWM_FREQUENCY_2K1_HZ 0b011 +#define IS31FL3733_PWM_FREQUENCY_1K05_HZ 0b100 + +#define IS31FL3733_SYNC_NONE 0b00 +#define IS31FL3733_SYNC_MASTER 0b01 +#define IS31FL3733_SYNC_SLAVE 0b10 #define A_1 0x00 #define A_2 0x01 diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c index ca431838ef53..5857a800d7e2 100644 --- a/drivers/led/issi/is31fl3733.c +++ b/drivers/led/issi/is31fl3733.c @@ -18,59 +18,48 @@ */ #include "is31fl3733.h" +#include #include "i2c_master.h" #include "wait.h" -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC -// ADDR1 represents A1:A0 of the 7-bit address. -// ADDR2 represents A3:A2 of the 7-bit address. -// The result is: 0b101(ADDR2)(ADDR1) -#define ISSI_ADDR_DEFAULT 0x50 - -#define ISSI_COMMANDREGISTER 0xFD -#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE -#define ISSI_INTERRUPTMASKREGISTER 0xF0 -#define ISSI_INTERRUPTSTATUSREGISTER 0xF1 - -#define ISSI_PAGE_LEDCONTROL 0x00 // PG0 -#define ISSI_PAGE_PWM 0x01 // PG1 -#define ISSI_PAGE_AUTOBREATH 0x02 // PG2 -#define ISSI_PAGE_FUNCTION 0x03 // PG3 - -#define ISSI_REG_CONFIGURATION 0x00 // PG3 -#define ISSI_REG_GLOBALCURRENT 0x01 // PG3 -#define ISSI_REG_RESET 0x11 // PG3 -#define ISSI_REG_SWPULLUP 0x0F // PG3 -#define ISSI_REG_CSPULLUP 0x10 // PG3 - -#ifndef ISSI_TIMEOUT -# define ISSI_TIMEOUT 100 +#define IS31FL3733_PWM_REGISTER_COUNT 192 +#define IS31FL3733_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef IS31FL3733_I2C_TIMEOUT +# define IS31FL3733_I2C_TIMEOUT 100 #endif -#ifndef ISSI_PERSISTENCE -# define ISSI_PERSISTENCE 0 +#ifndef IS31FL3733_I2C_PERSISTENCE +# define IS31FL3733_I2C_PERSISTENCE 0 #endif -#ifndef ISSI_PWM_FREQUENCY -# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only +#ifndef IS31FL3733_PWM_FREQUENCY +# define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3733B only #endif -#ifndef ISSI_SWPULLUP -# define ISSI_SWPULLUP PUR_0R +#ifndef IS31FL3733_SW_PULLUP +# define IS31FL3733_SW_PULLUP IS31FL3733_PUR_0_OHM #endif -#ifndef ISSI_CSPULLUP -# define ISSI_CSPULLUP PUR_0R +#ifndef IS31FL3733_CS_PULLDOWN +# define IS31FL3733_CS_PULLDOWN IS31FL3733_PDR_0_OHM #endif -#ifndef ISSI_GLOBALCURRENT -# define ISSI_GLOBALCURRENT 0xFF +#ifndef IS31FL3733_GLOBAL_CURRENT +# define IS31FL3733_GLOBAL_CURRENT 0xFF +#endif + +#ifndef IS31FL3733_SYNC_1 +# define IS31FL3733_SYNC_1 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_2 +# define IS31FL3733_SYNC_2 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_3 +# define IS31FL3733_SYNC_3 IS31FL3733_SYNC_NONE +#endif +#ifndef IS31FL3733_SYNC_4 +# define IS31FL3733_SYNC_4 IS31FL3733_SYNC_NONE #endif // Transfer buffer for TWITransmitData() @@ -82,25 +71,25 @@ uint8_t g_twi_transfer_buffer[20]; // We could optimize this and take out the unused registers from these // buffers and the transfers in is31fl3733_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_pwm_buffer[IS31FL3733_DRIVER_COUNT][IS31FL3733_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3733_DRIVER_COUNT] = {false}; -uint8_t g_led_control_registers[DRIVER_COUNT][24] = {0}; -bool g_led_control_registers_update_required[DRIVER_COUNT] = {false}; +uint8_t g_led_control_registers[IS31FL3733_DRIVER_COUNT][IS31FL3733_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3733_DRIVER_COUNT] = {false}; bool is31fl3733_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 ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) { +#if IS31FL3733_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } } #else - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) != 0) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } #endif @@ -114,23 +103,21 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // 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) { + for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; 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]; - } + memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) { +#if IS31FL3733_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3733_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } } #else - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) != 0) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3733_I2C_TIMEOUT) != 0) { return false; } #endif @@ -138,6 +125,36 @@ bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void is31fl3733_init_drivers(void) { + i2c_init(); + + is31fl3733_init(IS31FL3733_I2C_ADDRESS_1, IS31FL3733_SYNC_1); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_2, IS31FL3733_SYNC_2); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_3, IS31FL3733_SYNC_3); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_init(IS31FL3733_I2C_ADDRESS_4, IS31FL3733_SYNC_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { + is31fl3733_set_led_control_register(i, true, true, true); + } + + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_1, 0); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_2, 1); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_3, 2); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_update_led_control_registers(IS31FL3733_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + void is31fl3733_init(uint8_t addr, uint8_t sync) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -146,48 +163,48 @@ void is31fl3733_init(uint8_t addr, uint8_t sync) { // Sync is passed so set it according to the datasheet. // Unlock the command register. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); // Turn off all LEDs. - for (int i = 0x00; i <= 0x17; i++) { + for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. - for (int i = 0x00; i <= 0xBF; i++) { + for (int i = 0; i < IS31FL3733_PWM_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3733_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_SW_PULLUP, IS31FL3733_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3733_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CS_PULLDOWN, IS31FL3733_CS_PULLDOWN); // Set global current to maximum. - is31fl3733_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3733_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3733_write_register(addr, ISSI_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3733_write_register(addr, IS31FL3733_FUNCTION_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((IS31FL3733_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 < RGB_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3733_led_t led; + if (index >= 0 && index < IS31FL3733_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { return; @@ -200,14 +217,14 @@ void is31fl3733_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3733_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3733_LED_COUNT; i++) { is31fl3733_set_color(i, red, green, blue); } } void is31fl3733_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led; - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3733_led_t led; + memcpy_P(&led, (&g_is31fl3733_leds[index]), sizeof(led)); uint8_t control_register_r = led.r / 8; uint8_t control_register_g = led.g / 8; @@ -238,26 +255,39 @@ 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) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1. - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_PWM); // If any of the transactions fail we risk writing dirty PG0, // refresh page 0 just in case. if (!is31fl3733_write_pwm_buffer(addr, g_pwm_buffer[index])) { g_led_control_registers_update_required[index] = true; } + g_pwm_buffer_update_required[index] = false; } - g_pwm_buffer_update_required[index] = false; } void is31fl3733_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3733_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); - for (int i = 0; i < 24; i++) { + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND_WRITE_LOCK, IS31FL3733_COMMAND_WRITE_LOCK_MAGIC); + is31fl3733_write_register(addr, IS31FL3733_REG_COMMAND, IS31FL3733_COMMAND_LED_CONTROL); + for (int i = 0; i < IS31FL3733_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3733_write_register(addr, i, g_led_control_registers[index][i]); } + g_led_control_registers_update_required[index] = false; } - g_led_control_registers_update_required[index] = false; +} + +void is31fl3733_flush(void) { + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_1, 0); +#if defined(IS31FL3733_I2C_ADDRESS_2) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_2, 1); +# if defined(IS31FL3733_I2C_ADDRESS_3) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_3, 2); +# if defined(IS31FL3733_I2C_ADDRESS_4) + is31fl3733_update_pwm_buffers(IS31FL3733_I2C_ADDRESS_4, 3); +# endif +# endif +#endif } diff --git a/drivers/led/issi/is31fl3733.h b/drivers/led/issi/is31fl3733.h index f37a58de0f90..20804b016bd3 100644 --- a/drivers/led/issi/is31fl3733.h +++ b/drivers/led/issi/is31fl3733.h @@ -22,16 +22,124 @@ #include #include #include "progmem.h" +#include "util.h" -typedef struct is31_led { +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef DRIVER_ADDR_1 +# define IS31FL3733_I2C_ADDRESS_1 DRIVER_ADDR_1 +#endif +#ifdef DRIVER_ADDR_2 +# define IS31FL3733_I2C_ADDRESS_2 DRIVER_ADDR_2 +#endif +#ifdef DRIVER_ADDR_3 +# define IS31FL3733_I2C_ADDRESS_3 DRIVER_ADDR_3 +#endif +#ifdef DRIVER_ADDR_4 +# define IS31FL3733_I2C_ADDRESS_4 DRIVER_ADDR_4 +#endif +#ifdef DRIVER_SYNC_1 +# define IS31FL3733_SYNC_1 DRIVER_SYNC_1 +#endif +#ifdef DRIVER_ADDR_2 +# define IS31FL3733_SYNC_2 DRIVER_SYNC_2 +#endif +#ifdef DRIVER_ADDR_3 +# define IS31FL3733_SYNC_3 DRIVER_SYNC_3 +#endif +#ifdef DRIVER_ADDR_4 +# define IS31FL3733_SYNC_4 DRIVER_SYNC_4 +#endif +#ifdef ISSI_TIMEOUT +# define IS31FL3733_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3733_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_PWM_FREQUENCY +# define IS31FL3733_PWM_FREQUENCY ISSI_PWM_FREQUENCY +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3733_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3733_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3733_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif + +#define is31_led is31fl3733_led_t +#define g_is31_leds g_is31fl3733_leds + +#define PUR_0R IS31FL3733_PUR_0_OHM +#define PUR_05KR IS31FL3733_PUR_1K_OHM +#define PUR_3KR IS31FL3733_PUR_2K_OHM +#define PUR_4KR IS31FL3733_PUR_4K_OHM +#define PUR_8KR IS31FL3733_PUR_8K_OHM +#define PUR_16KR IS31FL3733_PUR_16K_OHM +#define PUR_32KR IS31FL3733_PUR_32K_OHM +// ======== + +#define IS31FL3733_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3733_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3733_REG_COMMAND 0xFD + +#define IS31FL3733_COMMAND_LED_CONTROL 0x00 +#define IS31FL3733_COMMAND_PWM 0x01 +#define IS31FL3733_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3733_COMMAND_FUNCTION 0x03 + +#define IS31FL3733_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3733_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3733_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3733_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3733_FUNCTION_REG_RESET 0x11 + +#define IS31FL3733_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3733_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3733_I2C_ADDRESS_GND_GND 0x50 +#define IS31FL3733_I2C_ADDRESS_GND_SCL 0x51 +#define IS31FL3733_I2C_ADDRESS_GND_SDA 0x52 +#define IS31FL3733_I2C_ADDRESS_GND_VCC 0x53 +#define IS31FL3733_I2C_ADDRESS_SCL_GND 0x54 +#define IS31FL3733_I2C_ADDRESS_SCL_SCL 0x55 +#define IS31FL3733_I2C_ADDRESS_SCL_SDA 0x56 +#define IS31FL3733_I2C_ADDRESS_SCL_VCC 0x57 +#define IS31FL3733_I2C_ADDRESS_SDA_GND 0x58 +#define IS31FL3733_I2C_ADDRESS_SDA_SCL 0x59 +#define IS31FL3733_I2C_ADDRESS_SDA_SDA 0x5A +#define IS31FL3733_I2C_ADDRESS_SDA_VCC 0x5B +#define IS31FL3733_I2C_ADDRESS_VCC_GND 0x5C +#define IS31FL3733_I2C_ADDRESS_VCC_SCL 0x5D +#define IS31FL3733_I2C_ADDRESS_VCC_SDA 0x5E +#define IS31FL3733_I2C_ADDRESS_VCC_VCC 0x5F + +#if defined(RGB_MATRIX_IS31FL3733) +# define IS31FL3733_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3733_I2C_ADDRESS_4) +# define IS31FL3733_DRIVER_COUNT 4 +#elif defined(IS31FL3733_I2C_ADDRESS_3) +# define IS31FL3733_DRIVER_COUNT 3 +#elif defined(IS31FL3733_I2C_ADDRESS_2) +# define IS31FL3733_DRIVER_COUNT 2 +#elif defined(IS31FL3733_I2C_ADDRESS_1) +# define IS31FL3733_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3733_led_t { uint8_t driver : 2; uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31_led; +} PACKED is31fl3733_led_t; -extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT]; +void is31fl3733_init_drivers(void); void is31fl3733_init(uint8_t addr, uint8_t sync); bool is31fl3733_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3733_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -48,13 +156,35 @@ 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 +void is31fl3733_flush(void); + +#define IS31FL3733_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3733_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3733_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3733_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3733_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3733_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3733_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3733_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3733_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3733_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3733_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3733_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3733_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3733_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3733_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3733_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3733_PWM_FREQUENCY_8K4_HZ 0b000 +#define IS31FL3733_PWM_FREQUENCY_4K2_HZ 0b001 +#define IS31FL3733_PWM_FREQUENCY_26K7_HZ 0b010 +#define IS31FL3733_PWM_FREQUENCY_2K1_HZ 0b011 +#define IS31FL3733_PWM_FREQUENCY_1K05_HZ 0b100 + +#define IS31FL3733_SYNC_NONE 0b00 +#define IS31FL3733_SYNC_MASTER 0b01 +#define IS31FL3733_SYNC_SLAVE 0b10 #define A_1 0x00 #define A_2 0x01 diff --git a/drivers/led/issi/is31fl3736-simple.c b/drivers/led/issi/is31fl3736-simple.c new file mode 100644 index 000000000000..e1cce3c48a33 --- /dev/null +++ b/drivers/led/issi/is31fl3736-simple.c @@ -0,0 +1,252 @@ +/* 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 + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "is31fl3736-simple.h" +#include +#include "i2c_master.h" +#include "wait.h" + +#define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96 +#define IS31FL3736_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef IS31FL3736_I2C_TIMEOUT +# define IS31FL3736_I2C_TIMEOUT 100 +#endif + +#ifndef IS31FL3736_I2C_PERSISTENCE +# define IS31FL3736_I2C_PERSISTENCE 0 +#endif + +#ifndef IS31FL3736_PWM_FREQUENCY +# define IS31FL3736_PWM_FREQUENCY IS31FL3736_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3736B only +#endif + +#ifndef IS31FL3736_SW_PULLUP +# define IS31FL3736_SW_PULLUP IS31FL3736_PUR_0_OHM +#endif + +#ifndef IS31FL3736_CS_PULLDOWN +# define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM +#endif + +#ifndef IS31FL3736_GLOBAL_CURRENT +# define IS31FL3736_GLOBAL_CURRENT 0xFF +#endif + +// Transfer buffer for TWITransmitData() +uint8_t g_twi_transfer_buffer[20]; + +// These buffers match the IS31FL3736 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 is31fl3736_write_pwm_buffer() but it's +// probably not worth the extra complexity. +uint8_t g_pwm_buffer[IS31FL3736_DRIVER_COUNT][IS31FL3736_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3736_DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false}; + +void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) { + g_twi_transfer_buffer[0] = reg; + g_twi_transfer_buffer[1] = data; + +#if IS31FL3736_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break; + } +#else + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT); +#endif +} + +void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { + // assumes PG1 is already selected + + // 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 < IS31FL3736_PWM_REGISTER_COUNT; 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 + memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); + +#if IS31FL3736_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break; + } +#else + i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT); +#endif + } +} + +void is31fl3736_init_drivers(void) { + i2c_init(); + + is31fl3736_init(IS31FL3736_I2C_ADDRESS_1); +#if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_2); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_3); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { + is31fl3736_set_led_control_register(i, true); + } + + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0); +#if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + +void is31fl3736_init(uint8_t addr) { + // In order to avoid the LEDs being driven with garbage data + // in the LED driver's PWM registers, shutdown is enabled last. + // Set up the mode and other settings, clear the PWM registers, + // then disable software shutdown. + + // Unlock the command register. + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + + // Select PG0 + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL); + // Turn off all LEDs. + for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3736_write_register(addr, i, 0x00); + } + + // Unlock the command register. + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + + // Select PG1 + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); + // Set PWM on all LEDs to 0 + // No need to setup Breath registers to PWM as that is the default. + for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i++) { + is31fl3736_write_register(addr, i, 0x00); + } + + // Unlock the command register. + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + + // Select PG3 + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_FUNCTION); + // Set de-ghost pull-up resistors (SWx) + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_SW_PULLUP, IS31FL3736_SW_PULLUP); + // Set de-ghost pull-down resistors (CSx) + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN); + // Set global current to maximum. + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3736_GLOBAL_CURRENT); + // Disable software shutdown. + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01); + + // Wait 10ms to ensure the device has woken up. + wait_ms(10); +} + +void is31fl3736_set_value(int index, uint8_t value) { + is31fl3736_led_t led; + if (index >= 0 && index < IS31FL3736_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); + + if (g_pwm_buffer[led.driver][led.v] == value) { + return; + } + g_pwm_buffer[led.driver][led.v] = value; + g_pwm_buffer_update_required[led.driver] = true; + } +} + +void is31fl3736_set_value_all(uint8_t value) { + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { + is31fl3736_set_value(i, value); + } +} + +void is31fl3736_set_led_control_register(uint8_t index, bool value) { + is31fl3736_led_t led; + memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); + + // The PWM register for a matrix position (0x00 to 0xBF) is interleaved, so: + // A1=0x00 A2=0x02 A3=0x04 A4=0x06 A5=0x08 A6=0x0A A7=0x0C A8=0x0E + // B1=0x10 B2=0x12 B3=0x14 + // But also, the LED control registers (0x00 to 0x17) are also interleaved, so: + // A1-A4=0x00 A5-A8=0x01 + + uint8_t control_register = led.v / 8; + uint8_t bit_value = led.v % 8; + + if (value) { + g_led_control_registers[led.driver][control_register] |= (1 << bit_value); + } else { + g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value); + } + + g_led_control_registers_update_required[led.driver] = true; +} + +void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + // Firstly we need to unlock the command register and select PG1 + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); + + is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); + g_pwm_buffer_update_required[index] = false; + } +} + +void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { + // Firstly we need to unlock the command register and select PG0 + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL); + for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); + } + g_led_control_registers_update_required[index] = false; + } +} + +void is31fl3736_flush(void) { + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0); +#if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3736-simple.h b/drivers/led/issi/is31fl3736-simple.h new file mode 100644 index 000000000000..a73a87254590 --- /dev/null +++ b/drivers/led/issi/is31fl3736-simple.h @@ -0,0 +1,261 @@ +/* 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 + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" +#include "util.h" + +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef ISSI_TIMEOUT +# define IS31FL3736_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3736_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3736_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3736_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3736_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif + +#define is31_led is31fl3736_led_t +#define g_is31_leds g_is31fl3736_leds + +#define PUR_0R IS31FL3736_PUR_0_OHM +#define PUR_05KR IS31FL3736_PUR_05K_OHM +#define PUR_1KR IS31FL3736_PUR_1K_OHM +#define PUR_2KR IS31FL3736_PUR_2K_OHM +#define PUR_4KR IS31FL3736_PUR_4K_OHM +#define PUR_8KR IS31FL3736_PUR_8K_OHM +#define PUR_16KR IS31FL3736_PUR_16K_OHM +#define PUR_32KR IS31FL3736_PUR_32K_OHM +// ======== + +#define IS31FL3736_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3736_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3736_REG_COMMAND 0xFD + +#define IS31FL3736_COMMAND_LED_CONTROL 0x00 +#define IS31FL3736_COMMAND_PWM 0x01 +#define IS31FL3736_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3736_COMMAND_FUNCTION 0x03 + +#define IS31FL3736_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3736_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3736_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3736_FUNCTION_REG_RESET 0x11 + +#define IS31FL3736_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3736_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3736_I2C_ADDRESS_GND_GND 0x50 +#define IS31FL3736_I2C_ADDRESS_GND_SCL 0x51 +#define IS31FL3736_I2C_ADDRESS_GND_SDA 0x52 +#define IS31FL3736_I2C_ADDRESS_GND_VCC 0x53 +#define IS31FL3736_I2C_ADDRESS_SCL_GND 0x54 +#define IS31FL3736_I2C_ADDRESS_SCL_SCL 0x55 +#define IS31FL3736_I2C_ADDRESS_SCL_SDA 0x56 +#define IS31FL3736_I2C_ADDRESS_SCL_VCC 0x57 +#define IS31FL3736_I2C_ADDRESS_SDA_GND 0x58 +#define IS31FL3736_I2C_ADDRESS_SDA_SCL 0x59 +#define IS31FL3736_I2C_ADDRESS_SDA_SDA 0x5A +#define IS31FL3736_I2C_ADDRESS_SDA_VCC 0x5B +#define IS31FL3736_I2C_ADDRESS_VCC_GND 0x5C +#define IS31FL3736_I2C_ADDRESS_VCC_SCL 0x5D +#define IS31FL3736_I2C_ADDRESS_VCC_SDA 0x5E +#define IS31FL3736_I2C_ADDRESS_VCC_VCC 0x5F + +#if defined(LED_MATRIX_IS31FL3736) +# define IS31FL3736_LED_COUNT LED_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3736_I2C_ADDRESS_4) +# define IS31FL3736_DRIVER_COUNT 4 +#elif defined(IS31FL3736_I2C_ADDRESS_3) +# define IS31FL3736_DRIVER_COUNT 3 +#elif defined(IS31FL3736_I2C_ADDRESS_2) +# define IS31FL3736_DRIVER_COUNT 2 +#elif defined(IS31FL3736_I2C_ADDRESS_1) +# define IS31FL3736_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3736_led_t { + uint8_t driver : 2; + uint8_t v; +} PACKED is31fl3736_led_t; + +extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT]; + +void is31fl3736_init_drivers(void); +void is31fl3736_init(uint8_t addr); +void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data); +void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); + +void is31fl3736_set_value(int index, uint8_t value); +void is31fl3736_set_value_all(uint8_t value); + +void is31fl3736_set_led_control_register(uint8_t index, bool value); + +// 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 is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index); +void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index); + +void is31fl3736_flush(void); + +#define IS31FL3736_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3736_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3736_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3736_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3736_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3736_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3736_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3736_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3736_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3736_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3736_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3736_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3736_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3736_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3736_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3736_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3736_PWM_FREQUENCY_8K4_HZ 0b000 +#define IS31FL3736_PWM_FREQUENCY_4K2_HZ 0b001 +#define IS31FL3736_PWM_FREQUENCY_26K7_HZ 0b010 +#define IS31FL3736_PWM_FREQUENCY_2K1_HZ 0b011 +#define IS31FL3736_PWM_FREQUENCY_1K05_HZ 0b100 + +#define A_1 0x00 +#define A_2 0x02 +#define A_3 0x04 +#define A_4 0x06 +#define A_5 0x08 +#define A_6 0x0A +#define A_7 0x0C +#define A_8 0x0E + +#define B_1 0x10 +#define B_2 0x12 +#define B_3 0x14 +#define B_4 0x16 +#define B_5 0x18 +#define B_6 0x1A +#define B_7 0x1C +#define B_8 0x1E + +#define C_1 0x20 +#define C_2 0x22 +#define C_3 0x24 +#define C_4 0x26 +#define C_5 0x28 +#define C_6 0x2A +#define C_7 0x2C +#define C_8 0x2E + +#define D_1 0x30 +#define D_2 0x32 +#define D_3 0x34 +#define D_4 0x36 +#define D_5 0x38 +#define D_6 0x3A +#define D_7 0x3C +#define D_8 0x3E + +#define E_1 0x40 +#define E_2 0x42 +#define E_3 0x44 +#define E_4 0x46 +#define E_5 0x48 +#define E_6 0x4A +#define E_7 0x4C +#define E_8 0x4E + +#define F_1 0x50 +#define F_2 0x52 +#define F_3 0x54 +#define F_4 0x56 +#define F_5 0x58 +#define F_6 0x5A +#define F_7 0x5C +#define F_8 0x5E + +#define G_1 0x60 +#define G_2 0x62 +#define G_3 0x64 +#define G_4 0x66 +#define G_5 0x68 +#define G_6 0x6A +#define G_7 0x6C +#define G_8 0x6E + +#define H_1 0x70 +#define H_2 0x72 +#define H_3 0x74 +#define H_4 0x76 +#define H_5 0x78 +#define H_6 0x7A +#define H_7 0x7C +#define H_8 0x7E + +#define I_1 0x80 +#define I_2 0x82 +#define I_3 0x84 +#define I_4 0x86 +#define I_5 0x88 +#define I_6 0x8A +#define I_7 0x8C +#define I_8 0x8E + +#define J_1 0x90 +#define J_2 0x92 +#define J_3 0x94 +#define J_4 0x96 +#define J_5 0x98 +#define J_6 0x9A +#define J_7 0x9C +#define J_8 0x9E + +#define K_1 0xA0 +#define K_2 0xA2 +#define K_3 0xA4 +#define K_4 0xA6 +#define K_5 0xA8 +#define K_6 0xAA +#define K_7 0xAC +#define K_8 0xAE + +#define L_1 0xB0 +#define L_2 0xB2 +#define L_3 0xB4 +#define L_4 0xB6 +#define L_5 0xB8 +#define L_6 0xBA +#define L_7 0xBC +#define L_8 0xBE diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c index 0de8b3bbaef4..30ab796f3e35 100644 --- a/drivers/led/issi/is31fl3736.c +++ b/drivers/led/issi/is31fl3736.c @@ -16,55 +16,35 @@ */ #include "is31fl3736.h" +#include #include "i2c_master.h" #include "wait.h" -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC -// ADDR1 represents A1:A0 of the 7-bit address. -// ADDR2 represents A3:A2 of the 7-bit address. -// The result is: 0b101(ADDR2)(ADDR1) -#define ISSI_ADDR_DEFAULT 0x50 - -#define ISSI_COMMANDREGISTER 0xFD -#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE -#define ISSI_INTERRUPTMASKREGISTER 0xF0 -#define ISSI_INTERRUPTSTATUSREGISTER 0xF1 - -#define ISSI_PAGE_LEDCONTROL 0x00 // PG0 -#define ISSI_PAGE_PWM 0x01 // PG1 -#define ISSI_PAGE_AUTOBREATH 0x02 // PG2 -#define ISSI_PAGE_FUNCTION 0x03 // PG3 - -#define ISSI_REG_CONFIGURATION 0x00 // PG3 -#define ISSI_REG_GLOBALCURRENT 0x01 // PG3 -#define ISSI_REG_RESET 0x11 // PG3 -#define ISSI_REG_SWPULLUP 0x0F // PG3 -#define ISSI_REG_CSPULLUP 0x10 // PG3 - -#ifndef ISSI_TIMEOUT -# define ISSI_TIMEOUT 100 +#define IS31FL3736_PWM_REGISTER_COUNT 192 // actually 96 +#define IS31FL3736_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef IS31FL3736_I2C_TIMEOUT +# define IS31FL3736_I2C_TIMEOUT 100 +#endif + +#ifndef IS31FL3736_I2C_PERSISTENCE +# define IS31FL3736_I2C_PERSISTENCE 0 #endif -#ifndef ISSI_PERSISTENCE -# define ISSI_PERSISTENCE 0 +#ifndef IS31FL3736_PWM_FREQUENCY +# define IS31FL3736_PWM_FREQUENCY IS31FL3736_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3736B only #endif -#ifndef ISSI_SWPULLUP -# define ISSI_SWPULLUP PUR_0R +#ifndef IS31FL3736_SW_PULLUP +# define IS31FL3736_SW_PULLUP IS31FL3736_PUR_0_OHM #endif -#ifndef ISSI_CSPULLUP -# define ISSI_CSPULLUP PUR_0R +#ifndef IS31FL3736_CS_PULLDOWN +# define IS31FL3736_CS_PULLDOWN IS31FL3736_PDR_0_OHM #endif -#ifndef ISSI_GLOBALCURRENT -# define ISSI_GLOBALCURRENT 0xFF +#ifndef IS31FL3736_GLOBAL_CURRENT +# define IS31FL3736_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -76,22 +56,22 @@ uint8_t g_twi_transfer_buffer[20]; // We could optimize this and take out the unused registers from these // buffers and the transfers in is31fl3736_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_pwm_buffer[IS31FL3736_DRIVER_COUNT][IS31FL3736_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3736_DRIVER_COUNT] = {false}; -uint8_t g_led_control_registers[DRIVER_COUNT][24] = {{0}, {0}}; -bool g_led_control_registers_update_required = false; +uint8_t g_led_control_registers[IS31FL3736_DRIVER_COUNT][IS31FL3736_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3736_DRIVER_COUNT] = {false}; void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data) { g_twi_transfer_buffer[0] = reg; g_twi_transfer_buffer[1] = data; -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break; +#if IS31FL3736_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3736_I2C_TIMEOUT); #endif } @@ -102,21 +82,51 @@ void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // 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) { + for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; 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 memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) == 0) break; +#if IS31FL3736_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3736_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3736_I2C_TIMEOUT); +#endif + } +} + +void is31fl3736_init_drivers(void) { + i2c_init(); + + is31fl3736_init(IS31FL3736_I2C_ADDRESS_1); +#if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_2); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_3); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_init(IS31FL3736_I2C_ADDRESS_4); +# endif +# endif #endif + + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { + is31fl3736_set_led_control_register(i, true, true, true); } + + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_1, 0); +#if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_2, 1); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_3, 2); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_update_led_control_registers(IS31FL3736_I2C_ADDRESS_4, 3); +# endif +# endif +#endif } void is31fl3736_init(uint8_t addr) { @@ -126,48 +136,48 @@ void is31fl3736_init(uint8_t addr) { // then disable software shutdown. // Unlock the command register. - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_REG_LED_CONTROL); // Turn off all LEDs. - for (int i = 0x00; i <= 0x17; i++) { + for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3736_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITELOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. - for (int i = 0x00; i <= 0xBF; i++) { + for (int i = 0; i < IS31FL3736_PWM_REGISTER_COUNT; i++) { is31fl3736_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3736_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_SW_PULLUP, IS31FL3736_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3736_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CS_PULLDOWN, IS31FL3736_CS_PULLDOWN); // Set global current to maximum. - is31fl3736_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3736_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3736_write_register(addr, ISSI_REG_CONFIGURATION, 0x01); + is31fl3736_write_register(addr, IS31FL3736_FUNCTION_REG_CONFIGURATION, ((IS31FL3736_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); } void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - is31_led led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3736_led_t led; + if (index >= 0 && index < IS31FL3736_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { return; @@ -180,27 +190,20 @@ void is31fl3736_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3736_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3736_LED_COUNT; i++) { is31fl3736_set_color(i, red, green, blue); } } void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - 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 - // divided by 8 to get the LED control register (0x00 to 0x17), - // then mod 8 to get the bit position within that register. + is31fl3736_led_t led; + memcpy_P(&led, (&g_is31fl3736_leds[index]), sizeof(led)); - // IS31FL3736 // The PWM register for a matrix position (0x00 to 0xBF) is interleaved, so: // A1=0x00 A2=0x02 A3=0x04 A4=0x06 A5=0x08 A6=0x0A A7=0x0C A8=0x0E // B1=0x10 B2=0x12 B3=0x14 // But also, the LED control registers (0x00 to 0x17) are also interleaved, so: // A1-A4=0x00 A5-A8=0x01 - // So, the same math applies. uint8_t control_register_r = led.r / 8; uint8_t control_register_g = led.g / 8; @@ -226,63 +229,41 @@ void is31fl3736_set_led_control_register(uint8_t index, bool red, bool green, bo g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b); } - g_led_control_registers_update_required = true; -} - -void is31fl3736_mono_set_brightness(int index, uint8_t value) { - if (index >= 0 && index < 96) { - // Index in range 0..95 -> A1..A8, B1..B8, etc. - // Map index 0..95 to registers 0x00..0xBE (interleaved) - uint8_t pwm_register = index * 2; - g_pwm_buffer[0][pwm_register] = value; - g_pwm_buffer_update_required[0] = true; - } -} - -void is31fl3736_mono_set_brightness_all(uint8_t value) { - for (int i = 0; i < 96; i++) { - is31fl3736_mono_set_brightness(i, value); - } -} - -void is31fl3736_mono_set_led_control_register(uint8_t index, bool enabled) { - // Index in range 0..95 -> A1..A8, B1..B8, etc. - - // Map index 0..95 to registers 0x00..0xBE (interleaved) - uint8_t pwm_register = index * 2; - // Map register 0x00..0xBE (interleaved) into control register and bit - uint8_t control_register = pwm_register / 8; - uint8_t bit = pwm_register % 8; - - if (enabled) { - g_led_control_registers[0][control_register] |= (1 << bit); - } else { - g_led_control_registers[0][control_register] &= ~(1 << bit); - } - - g_led_control_registers_update_required = true; + g_led_control_registers_update_required[led.driver] = true; } void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1 - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3736_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_PWM); is31fl3736_write_pwm_buffer(addr, g_pwm_buffer[index]); + g_pwm_buffer_update_required[index] = false; } - g_pwm_buffer_update_required[index] = false; } -void is31fl3736_update_led_control_registers(uint8_t addr1, uint8_t addr2) { - if (g_led_control_registers_update_required) { +void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3736_write_register(addr1, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3736_write_register(addr1, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); - for (int i = 0; i < 24; i++) { - is31fl3736_write_register(addr1, i, g_led_control_registers[0][i]); - // is31fl3736_write_register(addr2, i, g_led_control_registers[1][i]); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND_WRITE_LOCK, IS31FL3736_COMMAND_WRITE_LOCK_MAGIC); + is31fl3736_write_register(addr, IS31FL3736_REG_COMMAND, IS31FL3736_COMMAND_LED_CONTROL); + for (int i = 0; i < IS31FL3736_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3736_write_register(addr, i, g_led_control_registers[index][i]); } - g_led_control_registers_update_required = false; + g_led_control_registers_update_required[index] = false; } } + +void is31fl3736_flush(void) { + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_1, 0); +#if defined(IS31FL3736_I2C_ADDRESS_2) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_2, 1); +# if defined(IS31FL3736_I2C_ADDRESS_3) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_3, 2); +# if defined(IS31FL3736_I2C_ADDRESS_4) + is31fl3736_update_pwm_buffers(IS31FL3736_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3736.h b/drivers/led/issi/is31fl3736.h index 32bdef4a8082..a5710d7ed41e 100644 --- a/drivers/led/issi/is31fl3736.h +++ b/drivers/led/issi/is31fl3736.h @@ -19,29 +19,111 @@ #include #include -#include #include "progmem.h" +#include "util.h" -// Simple interface option. -// If these aren't defined, just define them to make it compile +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef DRIVER_ADDR_1 +# define IS31FL3736_I2C_ADDRESS_1 DRIVER_ADDR_1 +#endif +#ifdef DRIVER_ADDR_2 +# define IS31FL3736_I2C_ADDRESS_2 DRIVER_ADDR_2 +#endif +#ifdef DRIVER_ADDR_3 +# define IS31FL3736_I2C_ADDRESS_3 DRIVER_ADDR_3 +#endif +#ifdef DRIVER_ADDR_4 +# define IS31FL3736_I2C_ADDRESS_4 DRIVER_ADDR_4 +#endif +#ifdef ISSI_TIMEOUT +# define IS31FL3736_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3736_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3736_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3736_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3736_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif + +#define is31_led is31fl3736_led_t +#define g_is31_leds g_is31fl3736_leds + +#define PUR_0R IS31FL3736_PUR_0_OHM +#define PUR_05KR IS31FL3736_PUR_0K5_OHM +#define PUR_1KR IS31FL3736_PUR_1K_OHM +#define PUR_2KR IS31FL3736_PUR_2K_OHM +#define PUR_4KR IS31FL3736_PUR_4K_OHM +#define PUR_8KR IS31FL3736_PUR_8K_OHM +#define PUR_16KR IS31FL3736_PUR_16K_OHM +#define PUR_32KR IS31FL3736_PUR_32K_OHM +// ======== -#ifndef DRIVER_COUNT -# define DRIVER_COUNT 2 +#define IS31FL3736_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3736_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3736_REG_COMMAND 0xFD + +#define IS31FL3736_COMMAND_LED_CONTROL 0x00 +#define IS31FL3736_COMMAND_PWM 0x01 +#define IS31FL3736_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3736_COMMAND_FUNCTION 0x03 + +#define IS31FL3736_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3736_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3736_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3736_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3736_FUNCTION_REG_RESET 0x11 + +#define IS31FL3736_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3736_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3736_I2C_ADDRESS_GND_GND 0x50 +#define IS31FL3736_I2C_ADDRESS_GND_SCL 0x51 +#define IS31FL3736_I2C_ADDRESS_GND_SDA 0x52 +#define IS31FL3736_I2C_ADDRESS_GND_VCC 0x53 +#define IS31FL3736_I2C_ADDRESS_SCL_GND 0x54 +#define IS31FL3736_I2C_ADDRESS_SCL_SCL 0x55 +#define IS31FL3736_I2C_ADDRESS_SCL_SDA 0x56 +#define IS31FL3736_I2C_ADDRESS_SCL_VCC 0x57 +#define IS31FL3736_I2C_ADDRESS_SDA_GND 0x58 +#define IS31FL3736_I2C_ADDRESS_SDA_SCL 0x59 +#define IS31FL3736_I2C_ADDRESS_SDA_SDA 0x5A +#define IS31FL3736_I2C_ADDRESS_SDA_VCC 0x5B +#define IS31FL3736_I2C_ADDRESS_VCC_GND 0x5C +#define IS31FL3736_I2C_ADDRESS_VCC_SCL 0x5D +#define IS31FL3736_I2C_ADDRESS_VCC_SDA 0x5E +#define IS31FL3736_I2C_ADDRESS_VCC_VCC 0x5F + +#if defined(RGB_MATRIX_IS31FL3736) +# define IS31FL3736_LED_COUNT RGB_MATRIX_LED_COUNT #endif -#ifndef RGB_MATRIX_LED_COUNT -# define RGB_MATRIX_LED_COUNT 96 +#if defined(IS31FL3736_I2C_ADDRESS_4) +# define IS31FL3736_DRIVER_COUNT 4 +#elif defined(IS31FL3736_I2C_ADDRESS_3) +# define IS31FL3736_DRIVER_COUNT 3 +#elif defined(IS31FL3736_I2C_ADDRESS_2) +# define IS31FL3736_DRIVER_COUNT 2 +#elif defined(IS31FL3736_I2C_ADDRESS_1) +# define IS31FL3736_DRIVER_COUNT 1 #endif -typedef struct is31_led { +typedef struct is31fl3736_led_t { uint8_t driver : 2; uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31_led; +} PACKED is31fl3736_led_t; -extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT]; +void is31fl3736_init_drivers(void); void is31fl3736_init(uint8_t addr); void is31fl3736_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3736_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -51,10 +133,6 @@ 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); -void is31fl3736_mono_set_brightness(int index, uint8_t value); -void is31fl3736_mono_set_brightness_all(uint8_t value); -void is31fl3736_mono_set_led_control_register(uint8_t index, bool enabled); - // This should not be called from an interrupt // (eg. from a timer interrupt). // Call this while idle (in between matrix scans). @@ -62,14 +140,31 @@ void is31fl3736_mono_set_led_control_register(uint8_t index, bool enabled); void is31fl3736_update_pwm_buffers(uint8_t addr, uint8_t index); void is31fl3736_update_led_control_registers(uint8_t addr, uint8_t index); -#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 +void is31fl3736_flush(void); + +#define IS31FL3736_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3736_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3736_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3736_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3736_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3736_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3736_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3736_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3736_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3736_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3736_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3736_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3736_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3736_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3736_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3736_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3736_PWM_FREQUENCY_8K4_HZ 0b000 +#define IS31FL3736_PWM_FREQUENCY_4K2_HZ 0b001 +#define IS31FL3736_PWM_FREQUENCY_26K7_HZ 0b010 +#define IS31FL3736_PWM_FREQUENCY_2K1_HZ 0b011 +#define IS31FL3736_PWM_FREQUENCY_1K05_HZ 0b100 #define A_1 0x00 #define A_2 0x02 diff --git a/drivers/led/issi/is31fl3737-simple.c b/drivers/led/issi/is31fl3737-simple.c new file mode 100644 index 000000000000..7f641f4ca5d0 --- /dev/null +++ b/drivers/led/issi/is31fl3737-simple.c @@ -0,0 +1,249 @@ +/* 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 + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "is31fl3737-simple.h" +#include +#include "i2c_master.h" +#include "wait.h" + +#define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144 +#define IS31FL3737_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef IS31FL3737_I2C_TIMEOUT +# define IS31FL3737_I2C_TIMEOUT 100 +#endif + +#ifndef IS31FL3737_I2C_PERSISTENCE +# define IS31FL3737_I2C_PERSISTENCE 0 +#endif + +#ifndef IS31FL3737_PWM_FREQUENCY +# define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3737B only +#endif + +#ifndef IS31FL3737_SW_PULLUP +# define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM +#endif + +#ifndef IS31FL3737_CS_PULLDOWN +# define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM +#endif + +#ifndef IS31FL3737_GLOBAL_CURRENT +# define IS31FL3737_GLOBAL_CURRENT 0xFF +#endif + +// Transfer buffer for TWITransmitData() +uint8_t g_twi_transfer_buffer[20]; + +// These buffers match the IS31FL3737 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 is31fl3737_write_pwm_buffer() but it's +// probably not worth the extra complexity. + +uint8_t g_pwm_buffer[IS31FL3737_DRIVER_COUNT][IS31FL3737_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3737_DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false}; + +void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) { + g_twi_transfer_buffer[0] = reg; + g_twi_transfer_buffer[1] = data; + +#if IS31FL3737_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break; + } +#else + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT); +#endif +} + +void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { + // assumes PG1 is already selected + + // 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 < IS31FL3737_PWM_REGISTER_COUNT; 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 + memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); + +#if IS31FL3737_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break; + } +#else + i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT); +#endif + } +} + +void is31fl3737_init_drivers(void) { + i2c_init(); + + is31fl3737_init(IS31FL3737_I2C_ADDRESS_1); +#if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_2); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_3); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { + is31fl3737_set_led_control_register(i, true); + } + + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0); +#if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + +void is31fl3737_init(uint8_t addr) { + // In order to avoid the LEDs being driven with garbage data + // in the LED driver's PWM registers, shutdown is enabled last. + // Set up the mode and other settings, clear the PWM registers, + // then disable software shutdown. + + // Unlock the command register. + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + + // Select PG0 + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); + // Turn off all LEDs. + for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3737_write_register(addr, i, 0x00); + } + + // Unlock the command register. + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + + // Select PG1 + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); + // Set PWM on all LEDs to 0 + // No need to setup Breath registers to PWM as that is the default. + for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i++) { + is31fl3737_write_register(addr, i, 0x00); + } + + // Unlock the command register. + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + + // Select PG3 + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_FUNCTION); + // Set de-ghost pull-up resistors (SWx) + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_SW_PULLUP, IS31FL3737_SW_PULLUP); + // Set de-ghost pull-down resistors (CSx) + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN); + // Set global current to maximum. + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3737_GLOBAL_CURRENT); + // Disable software shutdown. + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01); + + // Wait 10ms to ensure the device has woken up. + wait_ms(10); +} + +void is31fl3737_set_value(int index, uint8_t value) { + is31fl3737_led_t led; + if (index >= 0 && index < IS31FL3737_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); + + if (g_pwm_buffer[led.driver][led.v] == value) { + return; + } + g_pwm_buffer[led.driver][led.v] = value; + g_pwm_buffer_update_required[led.driver] = true; + } +} + +void is31fl3737_set_value_all(uint8_t value) { + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { + is31fl3737_set_value(i, value); + } +} + +void is31fl3737_set_led_control_register(uint8_t index, bool value) { + is31fl3737_led_t led; + memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); + + uint8_t control_register = led.v / 8; + uint8_t bit_value = led.v % 8; + + if (value) { + g_led_control_registers[led.driver][control_register] |= (1 << bit_value); + } else { + g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value); + } + + g_led_control_registers_update_required[led.driver] = true; +} + +void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + // Firstly we need to unlock the command register and select PG1 + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); + + is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); + g_pwm_buffer_update_required[index] = false; + } +} + +void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { + // Firstly we need to unlock the command register and select PG0 + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); + for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { + is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); + } + g_led_control_registers_update_required[index] = false; + } +} + +void is31fl3737_flush(void) { + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0); +#if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3737-simple.h b/drivers/led/issi/is31fl3737-simple.h new file mode 100644 index 000000000000..2658702b1b58 --- /dev/null +++ b/drivers/led/issi/is31fl3737-simple.h @@ -0,0 +1,299 @@ +/* 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 + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" +#include "util.h" + +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef ISSI_TIMEOUT +# define IS31FL3737_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3737_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_PWM_FREQUENCY +# define IS31FL3737_PWM_FREQUENCY ISSI_PWM_FREQUENCY +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3737_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3737_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3737_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif + +#define PUR_0R IS31FL3737_PUR_0_OHM +#define PUR_05KR IS31FL3737_PUR_0K5_OHM +#define PUR_1KR IS31FL3737_PUR_1K_OHM +#define PUR_2KR IS31FL3737_PUR_2K_OHM +#define PUR_4KR IS31FL3737_PUR_4K_OHM +#define PUR_8KR IS31FL3737_PUR_8K_OHM +#define PUR_16KR IS31FL3737_PUR_16K_OHM +#define PUR_32KR IS31FL3737_PUR_32K_OHM +// ======== + +#define IS31FL3737_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3737_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3737_REG_COMMAND 0xFD + +#define IS31FL3737_COMMAND_LED_CONTROL 0x00 +#define IS31FL3737_COMMAND_PWM 0x01 +#define IS31FL3737_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3737_COMMAND_FUNCTION 0x03 + +#define IS31FL3737_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3737_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3737_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3737_FUNCTION_REG_RESET 0x11 + +#define IS31FL3737_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3737_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3737_I2C_ADDRESS_GND 0x50 +#define IS31FL3737_I2C_ADDRESS_SCL 0x55 +#define IS31FL3737_I2C_ADDRESS_SDA 0x5A +#define IS31FL3737_I2C_ADDRESS_VCC 0x5F + +#if defined(LED_MATRIX_IS31FL3737) +# define IS31FL3737_LED_COUNT LED_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3737_I2C_ADDRESS_4) +# define IS31FL3737_DRIVER_COUNT 4 +#elif defined(IS31FL3737_I2C_ADDRESS_3) +# define IS31FL3737_DRIVER_COUNT 3 +#elif defined(IS31FL3737_I2C_ADDRESS_2) +# define IS31FL3737_DRIVER_COUNT 2 +#elif defined(IS31FL3737_I2C_ADDRESS_1) +# define IS31FL3737_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3737_led_t { + uint8_t driver : 2; + uint8_t v; +} PACKED is31fl3737_led_t; + +extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT]; + +void is31fl3737_init_drivers(void); +void is31fl3737_init(uint8_t addr); +void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data); +void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); + +void is31fl3737_set_value(int index, uint8_t value); +void is31fl3737_set_value_all(uint8_t value); + +void is31fl3737_set_led_control_register(uint8_t index, bool value); + +// 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 is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index); +void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index); + +void is31fl3737_flush(void); + +#define IS31FL3737_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3737_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3737_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3737_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3737_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3737_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3737_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3737_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3737_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3737_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3737_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3737_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3737_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3737_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3737_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3737_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3737_PWM_FREQUENCY_8K4_HZ 0b000 +#define IS31FL3737_PWM_FREQUENCY_4K2_HZ 0b001 +#define IS31FL3737_PWM_FREQUENCY_26K7_HZ 0b010 +#define IS31FL3737_PWM_FREQUENCY_2K1_HZ 0b011 +#define IS31FL3737_PWM_FREQUENCY_1K05_HZ 0b100 + +#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 0x08 +#define A_8 0x09 +#define A_9 0x0A +#define A_10 0x0B +#define A_11 0x0C +#define A_12 0x0D + +#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 0x18 +#define B_8 0x19 +#define B_9 0x1A +#define B_10 0x1B +#define B_11 0x1C +#define B_12 0x1D + +#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 0x28 +#define C_8 0x29 +#define C_9 0x2A +#define C_10 0x2B +#define C_11 0x2C +#define C_12 0x2D + +#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 0x38 +#define D_8 0x39 +#define D_9 0x3A +#define D_10 0x3B +#define D_11 0x3C +#define D_12 0x3D + +#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 0x48 +#define E_8 0x49 +#define E_9 0x4A +#define E_10 0x4B +#define E_11 0x4C +#define E_12 0x4D + +#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 0x58 +#define F_8 0x59 +#define F_9 0x5A +#define F_10 0x5B +#define F_11 0x5C +#define F_12 0x5D + +#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 0x68 +#define G_8 0x69 +#define G_9 0x6A +#define G_10 0x6B +#define G_11 0x6C +#define G_12 0x6D + +#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 0x78 +#define H_8 0x79 +#define H_9 0x7A +#define H_10 0x7B +#define H_11 0x7C +#define H_12 0x7D + +#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 0x88 +#define I_8 0x89 +#define I_9 0x8A +#define I_10 0x8B +#define I_11 0x8C +#define I_12 0x8D + +#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 0x98 +#define J_8 0x99 +#define J_9 0x9A +#define J_10 0x9B +#define J_11 0x9C +#define J_12 0x9D + +#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 0xA8 +#define K_8 0xA9 +#define K_9 0xAA +#define K_10 0xAB +#define K_11 0xAC +#define K_12 0xAD + +#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 0xB8 +#define L_8 0xB9 +#define L_9 0xBA +#define L_10 0xBB +#define L_11 0xBC +#define L_12 0xBD diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c index 947c0a1d1ace..a458431952cd 100644 --- a/drivers/led/issi/is31fl3737.c +++ b/drivers/led/issi/is31fl3737.c @@ -18,59 +18,35 @@ */ #include "is31fl3737.h" +#include #include "i2c_master.h" #include "wait.h" -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC -// ADDR1 represents A1:A0 of the 7-bit address. -// ADDR2 represents A3:A2 of the 7-bit address. -// The result is: 0b101(ADDR2)(ADDR1) -#define ISSI_ADDR_DEFAULT 0x50 - -#define ISSI_COMMANDREGISTER 0xFD -#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE -#define ISSI_INTERRUPTMASKREGISTER 0xF0 -#define ISSI_INTERRUPTSTATUSREGISTER 0xF1 - -#define ISSI_PAGE_LEDCONTROL 0x00 // PG0 -#define ISSI_PAGE_PWM 0x01 // PG1 -#define ISSI_PAGE_AUTOBREATH 0x02 // PG2 -#define ISSI_PAGE_FUNCTION 0x03 // PG3 - -#define ISSI_REG_CONFIGURATION 0x00 // PG3 -#define ISSI_REG_GLOBALCURRENT 0x01 // PG3 -#define ISSI_REG_RESET 0x11 // PG3 -#define ISSI_REG_SWPULLUP 0x0F // PG3 -#define ISSI_REG_CSPULLUP 0x10 // PG3 - -#ifndef ISSI_TIMEOUT -# define ISSI_TIMEOUT 100 +#define IS31FL3737_PWM_REGISTER_COUNT 192 // actually 144 +#define IS31FL3737_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef IS31FL3737_I2C_TIMEOUT +# define IS31FL3737_I2C_TIMEOUT 100 #endif -#ifndef ISSI_PERSISTENCE -# define ISSI_PERSISTENCE 0 +#ifndef IS31FL3737_I2C_PERSISTENCE +# define IS31FL3737_I2C_PERSISTENCE 0 #endif -#ifndef ISSI_PWM_FREQUENCY -# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3737B only +#ifndef IS31FL3737_PWM_FREQUENCY +# define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_8K4_HZ // PFS - IS31FL3737B only #endif -#ifndef ISSI_SWPULLUP -# define ISSI_SWPULLUP PUR_0R +#ifndef IS31FL3737_SW_PULLUP +# define IS31FL3737_SW_PULLUP IS31FL3737_PUR_0_OHM #endif -#ifndef ISSI_CSPULLUP -# define ISSI_CSPULLUP PUR_0R +#ifndef IS31FL3737_CS_PULLDONW +# define IS31FL3737_CS_PULLDOWN IS31FL3737_PDR_0_OHM #endif -#ifndef ISSI_GLOBALCURRENT -# define ISSI_GLOBALCURRENT 0xFF +#ifndef IS31FL3737_GLOBAL_CURRENT +# define IS31FL3737_GLOBAL_CURRENT 0xFF #endif // Transfer buffer for TWITransmitData() @@ -83,22 +59,22 @@ uint8_t g_twi_transfer_buffer[20]; // buffers and the transfers in is31fl3737_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_pwm_buffer[IS31FL3737_DRIVER_COUNT][IS31FL3737_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3737_DRIVER_COUNT] = {false}; -uint8_t g_led_control_registers[DRIVER_COUNT][24] = {0}; -bool g_led_control_registers_update_required[DRIVER_COUNT] = {false}; +uint8_t g_led_control_registers[IS31FL3737_DRIVER_COUNT][IS31FL3737_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[IS31FL3737_DRIVER_COUNT] = {false}; void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data) { g_twi_transfer_buffer[0] = reg; g_twi_transfer_buffer[1] = data; -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break; +#if IS31FL3737_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3737_I2C_TIMEOUT); #endif } @@ -109,23 +85,53 @@ void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { // 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) { + for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; 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 memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 16); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT) == 0) break; +#if IS31FL3737_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3737_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, IS31FL3737_I2C_TIMEOUT); #endif } } +void is31fl3737_init_drivers(void) { + i2c_init(); + + is31fl3737_init(IS31FL3737_I2C_ADDRESS_1); +#if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_2); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_3); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_init(IS31FL3737_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { + is31fl3737_set_led_control_register(i, true, true, true); + } + + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_1, 0); +#if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_2, 1); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_3, 2); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_update_led_control_registers(IS31FL3737_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + void is31fl3737_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -133,48 +139,48 @@ void is31fl3737_init(uint8_t addr) { // then disable software shutdown. // Unlock the command register. - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG0 - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); // Turn off all LEDs. - for (int i = 0x00; i <= 0x17; i++) { + for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3737_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG1 - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); // Set PWM on all LEDs to 0 // No need to setup Breath registers to PWM as that is the default. - for (int i = 0x00; i <= 0xBF; i++) { + for (int i = 0; i < IS31FL3737_PWM_REGISTER_COUNT; i++) { is31fl3737_write_register(addr, i, 0x00); } // Unlock the command register. - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); // Select PG3 - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_FUNCTION); // Set de-ghost pull-up resistors (SWx) - is31fl3737_write_register(addr, ISSI_REG_SWPULLUP, ISSI_SWPULLUP); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_SW_PULLUP, IS31FL3737_SW_PULLUP); // Set de-ghost pull-down resistors (CSx) - is31fl3737_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CS_PULLDOWN, IS31FL3737_CS_PULLDOWN); // Set global current to maximum. - is31fl3737_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3737_GLOBAL_CURRENT); // Disable software shutdown. - is31fl3737_write_register(addr, ISSI_REG_CONFIGURATION, ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01); + is31fl3737_write_register(addr, IS31FL3737_FUNCTION_REG_CONFIGURATION, ((IS31FL3737_PWM_FREQUENCY & 0b111) << 3) | 0x01); // Wait 10ms to ensure the device has woken up. wait_ms(10); } void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - is31_led led; - if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3737_led_t led; + if (index >= 0 && index < IS31FL3737_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { return; @@ -187,14 +193,14 @@ void is31fl3737_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3737_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3737_LED_COUNT; i++) { is31fl3737_set_color(i, red, green, blue); } } void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led; - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3737_led_t led; + memcpy_P(&led, (&g_is31fl3737_leds[index]), sizeof(led)); uint8_t control_register_r = led.r / 8; uint8_t control_register_g = led.g / 8; @@ -225,22 +231,35 @@ void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bo void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // Firstly we need to unlock the command register and select PG1 - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_PWM); is31fl3737_write_pwm_buffer(addr, g_pwm_buffer[index]); + g_pwm_buffer_update_required[index] = false; } - g_pwm_buffer_update_required[index] = false; } void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_led_control_registers_update_required[index]) { // Firstly we need to unlock the command register and select PG0 - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3737_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_LEDCONTROL); - for (int i = 0; i < 24; i++) { + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND_WRITE_LOCK, IS31FL3737_COMMAND_WRITE_LOCK_MAGIC); + is31fl3737_write_register(addr, IS31FL3737_REG_COMMAND, IS31FL3737_COMMAND_LED_CONTROL); + for (int i = 0; i < IS31FL3737_LED_CONTROL_REGISTER_COUNT; i++) { is31fl3737_write_register(addr, i, g_led_control_registers[index][i]); } + g_led_control_registers_update_required[index] = false; } - g_led_control_registers_update_required[index] = false; +} + +void is31fl3737_flush(void) { + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_1, 0); +#if defined(IS31FL3737_I2C_ADDRESS_2) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_2, 1); +# if defined(IS31FL3737_I2C_ADDRESS_3) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_3, 2); +# if defined(IS31FL3737_I2C_ADDRESS_4) + is31fl3737_update_pwm_buffers(IS31FL3737_I2C_ADDRESS_4, 3); +# endif +# endif +#endif } diff --git a/drivers/led/issi/is31fl3737.h b/drivers/led/issi/is31fl3737.h index e7fc97872c50..8de3bf4ef52a 100644 --- a/drivers/led/issi/is31fl3737.h +++ b/drivers/led/issi/is31fl3737.h @@ -21,18 +21,102 @@ #include #include -#include #include "progmem.h" +#include "util.h" -typedef struct is31_led { +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef DRIVER_ADDR_1 +# define IS31FL3737_I2C_ADDRESS_1 DRIVER_ADDR_1 +#endif +#ifdef DRIVER_ADDR_2 +# define IS31FL3737_I2C_ADDRESS_2 DRIVER_ADDR_2 +#endif +#ifdef DRIVER_ADDR_3 +# define IS31FL3737_I2C_ADDRESS_3 DRIVER_ADDR_3 +#endif +#ifdef DRIVER_ADDR_4 +# define IS31FL3737_I2C_ADDRESS_4 DRIVER_ADDR_4 +#endif +#ifdef ISSI_TIMEOUT +# define IS31FL3737_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3737_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_PWM_FREQUENCY +# define IS31FL3737_PWM_FREQUENCY ISSI_PWM_FREQUENCY +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3737_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3737_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3737_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif + +#define is31_led is31fl3737_led_t +#define g_is31_leds g_is31fl3737_leds + +#define PUR_0R IS31FL3737_PUR_0_OHM +#define PUR_05KR IS31FL3737_PUR_0K5_OHM +#define PUR_1KR IS31FL3737_PUR_1K_OHM +#define PUR_2KR IS31FL3737_PUR_2K_OHM +#define PUR_4KR IS31FL3737_PUR_4K_OHM +#define PUR_8KR IS31FL3737_PUR_8K_OHM +#define PUR_16KR IS31FL3737_PUR_16K_OHM +#define PUR_32KR IS31FL3737_PUR_32K_OHM +// ======== + +#define IS31FL3737_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3737_REG_INTERRUPT_STATUS 0xF1 + +#define IS31FL3737_REG_COMMAND 0xFD + +#define IS31FL3737_COMMAND_LED_CONTROL 0x00 +#define IS31FL3737_COMMAND_PWM 0x01 +#define IS31FL3737_COMMAND_AUTO_BREATH 0x02 +#define IS31FL3737_COMMAND_FUNCTION 0x03 + +#define IS31FL3737_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3737_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3737_FUNCTION_REG_SW_PULLUP 0x0F +#define IS31FL3737_FUNCTION_REG_CS_PULLDOWN 0x10 +#define IS31FL3737_FUNCTION_REG_RESET 0x11 + +#define IS31FL3737_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3737_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3737_I2C_ADDRESS_GND 0x50 +#define IS31FL3737_I2C_ADDRESS_SCL 0x55 +#define IS31FL3737_I2C_ADDRESS_SDA 0x5A +#define IS31FL3737_I2C_ADDRESS_VCC 0x5F + +#if defined(RGB_MATRIX_IS31FL3737) +# define IS31FL3737_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3737_I2C_ADDRESS_4) +# define IS31FL3737_DRIVER_COUNT 4 +#elif defined(IS31FL3737_I2C_ADDRESS_3) +# define IS31FL3737_DRIVER_COUNT 3 +#elif defined(IS31FL3737_I2C_ADDRESS_2) +# define IS31FL3737_DRIVER_COUNT 2 +#elif defined(IS31FL3737_I2C_ADDRESS_1) +# define IS31FL3737_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3737_led_t { uint8_t driver : 2; uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31_led; +} PACKED is31fl3737_led_t; -extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT]; +extern const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT]; +void is31fl3737_init_drivers(void); void is31fl3737_init(uint8_t addr); void is31fl3737_write_register(uint8_t addr, uint8_t reg, uint8_t data); void is31fl3737_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -49,14 +133,31 @@ void is31fl3737_set_led_control_register(uint8_t index, bool red, bool green, bo void is31fl3737_update_pwm_buffers(uint8_t addr, uint8_t index); void is31fl3737_update_led_control_registers(uint8_t addr, uint8_t index); -#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 +void is31fl3737_flush(void); + +#define IS31FL3737_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3737_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3737_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3737_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3737_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3737_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3737_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3737_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3737_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3737_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3737_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3737_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3737_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3737_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3737_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3737_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3737_PWM_FREQUENCY_8K4_HZ 0b000 +#define IS31FL3737_PWM_FREQUENCY_4K2_HZ 0b001 +#define IS31FL3737_PWM_FREQUENCY_26K7_HZ 0b010 +#define IS31FL3737_PWM_FREQUENCY_2K1_HZ 0b011 +#define IS31FL3737_PWM_FREQUENCY_1K05_HZ 0b100 #define A_1 0x00 #define A_2 0x01 diff --git a/drivers/led/issi/is31fl3741-simple.c b/drivers/led/issi/is31fl3741-simple.c new file mode 100644 index 000000000000..f7009853ba62 --- /dev/null +++ b/drivers/led/issi/is31fl3741-simple.c @@ -0,0 +1,278 @@ +/* Copyright 2017 Jason Williams + * Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "is31fl3741-simple.h" +#include +#include "i2c_master.h" +#include "wait.h" + +#define IS31FL3741_PWM_REGISTER_COUNT 351 + +#ifndef IS31FL3741_I2C_TIMEOUT +# define IS31FL3741_I2C_TIMEOUT 100 +#endif + +#ifndef IS31FL3741_I2C_PERSISTENCE +# define IS31FL3741_I2C_PERSISTENCE 0 +#endif + +#ifndef IS31FL3741_CONFIGURATION +# define IS31FL3741_CONFIGURATION 0x01 +#endif + +#ifndef IS31FL3741_PWM_FREQUENCY +# define IS31FL3741_PWM_FREQUENCY IS31FL3741_PWM_FREQUENCY_29K_HZ +#endif + +#ifndef IS31FL3741_SW_PULLUP +# define IS31FL3741_SW_PULLUP IS31FL3741_PUR_32K_OHM +#endif + +#ifndef IS31FL3741_CS_PULLDOWN +# define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM +#endif + +#ifndef IS31FL3741_GLOBAL_CURRENT +# define IS31FL3741_GLOBAL_CURRENT 0xFF +#endif + +// Transfer buffer for TWITransmitData() +uint8_t g_twi_transfer_buffer[20] = {0xFF}; + +// These buffers match the IS31FL3741 and IS31FL3741A PWM registers. +// The scaling buffers match the PG2 and PG3 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 is31fl3741_write_pwm_buffer() but it's +// probably not worth the extra complexity. +uint8_t g_pwm_buffer[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3741_DRIVER_COUNT] = {false}; +bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false}; + +uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; + +void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) { + g_twi_transfer_buffer[0] = reg; + g_twi_transfer_buffer[1] = data; + +#if IS31FL3741_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break; + } +#else + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT); +#endif +} + +bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { + // Assume PG0 is already selected + + for (int i = 0; i < 342; i += 18) { + if (i == 180) { + // unlock the command register and select PG1 + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_1); + } + + g_twi_transfer_buffer[0] = i % 180; + memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 18); + +#if IS31FL3741_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { + return false; + } +#endif + } + + // transfer the left cause the total number is 351 + g_twi_transfer_buffer[0] = 162; + memcpy(g_twi_transfer_buffer + 1, pwm_buffer + 342, 9); + +#if IS31FL3741_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { + return false; + } +#endif + + return true; +} + +void is31fl3741_init_drivers(void) { + i2c_init(); + + is31fl3741_init(IS31FL3741_I2C_ADDRESS_1); +#if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_2); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_3); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { + is31fl3741_set_led_control_register(i, true); + } + + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0); +#if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + +void is31fl3741_init(uint8_t addr) { + // In order to avoid the LEDs being driven with garbage data + // in the LED driver's PWM registers, shutdown is enabled last. + // Set up the mode and other settings, clear the PWM registers, + // then disable software shutdown. + // Unlock the command register. + + // Unlock the command register. + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + + // Select PG4 + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_FUNCTION); + + // Set to Normal operation + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION); + + // Set Golbal Current Control Register + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3741_GLOBAL_CURRENT); + // Set Pull up & Down for SWx CSy + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP)); + // Set PWM frequency + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111)); + + // is31fl3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF); + + // Wait 10ms to ensure the device has woken up. + wait_ms(10); +} + +void is31fl3741_set_value(int index, uint8_t value) { + is31fl3741_led_t led; + if (index >= 0 && index < IS31FL3741_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); + + if (g_pwm_buffer[led.driver][led.v] == value) { + return; + } + g_pwm_buffer_update_required[led.driver] = true; + g_pwm_buffer[led.driver][led.v] = value; + } +} + +void is31fl3741_set_value_all(uint8_t value) { + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { + is31fl3741_set_value(i, value); + } +} + +void is31fl3741_set_led_control_register(uint8_t index, bool value) { + is31fl3741_led_t led; + memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); + + if (value) { + g_scaling_registers[led.driver][led.v] = 0xFF; + } else { + g_scaling_registers[led.driver][led.v] = 0x00; + } + + g_scaling_registers_update_required[led.driver] = true; +} + +void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + // unlock the command register and select PG2 + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_0); + + is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); + } + + g_pwm_buffer_update_required[index] = false; +} + +void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t value) { + g_pwm_buffer[pled->driver][pled->v] = value; + + g_pwm_buffer_update_required[pled->driver] = true; +} + +void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_scaling_registers_update_required[index]) { + // unlock the command register and select PG2 + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_0); + + // CS1_SW1 to CS30_SW6 are on PG2 + for (int i = CS1_SW1; i <= CS30_SW6; ++i) { + is31fl3741_write_register(addr, i, g_scaling_registers[index][i]); + } + + // unlock the command register and select PG3 + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_1); + + // CS1_SW7 to CS39_SW9 are on PG3 + for (int i = CS1_SW7; i <= CS39_SW9; ++i) { + is31fl3741_write_register(addr, i - CS1_SW7, g_scaling_registers[index][i]); + } + + g_scaling_registers_update_required[index] = false; + } +} + +void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value) { + g_scaling_registers[pled->driver][pled->v] = value; + + g_scaling_registers_update_required[pled->driver] = true; +} + +void is31fl3741_flush(void) { + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0); +#if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3741-simple.h b/drivers/led/issi/is31fl3741-simple.h new file mode 100644 index 000000000000..34608a37e005 --- /dev/null +++ b/drivers/led/issi/is31fl3741-simple.h @@ -0,0 +1,516 @@ +/* Copyright 2017 Jason Williams + * Copyright 2018 Jack Humbert + * Copyright 2018 Yiancar + * Copyright 2020 MelGeek + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" +#include "util.h" + +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef ISSI_TIMEOUT +# define IS31FL3741_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3741_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_CONFIGURATION +# define IS31FL3741_CONFIGURATION ISSI_CONFIGURATION +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3741_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3741_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3741_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif + +#define PUR_0R IS31FL3741_PUR_0_OHM +#define PUR_05KR IS31FL3741_PUR_0K5_OHM +#define PUR_1KR IS31FL3741_PUR_1K_OHM +#define PUR_2KR IS31FL3741_PUR_2K_OHM +#define PUR_4KR IS31FL3741_PUR_4K_OHM +#define PUR_8KR IS31FL3741_PUR_8K_OHM +#define PUR_16KR IS31FL3741_PUR_16K_OHM +#define PUR_32KR IS31FL3741_PUR_32K_OHM +// ======== + +#define IS31FL3741_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3741_REG_INTERRUPT_STATUS 0xF1 +#define IS31FL3741_REG_ID 0xFC + +#define IS31FL3741_REG_COMMAND 0xFD + +#define IS31FL3741_COMMAND_PWM_0 0x00 +#define IS31FL3741_COMMAND_PWM_1 0x01 +#define IS31FL3741_COMMAND_SCALING_0 0x02 +#define IS31FL3741_COMMAND_SCALING_1 0x03 +#define IS31FL3741_COMMAND_FUNCTION 0x04 + +#define IS31FL3741_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3741_FUNCTION_REG_PULLDOWNUP 0x02 +#define IS31FL3741_FUNCTION_REG_PWM_FREQUENCY 0x36 +#define IS31FL3741_FUNCTION_REG_RESET 0x3F + +#define IS31FL3741_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3741_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3741_I2C_ADDRESS_GND 0x30 +#define IS31FL3741_I2C_ADDRESS_SCL 0x31 +#define IS31FL3741_I2C_ADDRESS_SDA 0x32 +#define IS31FL3741_I2C_ADDRESS_VCC 0x33 + +#if defined(LED_MATRIX_IS31FL3741) +# define IS31FL3741_LED_COUNT LED_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3741_I2C_ADDRESS_4) +# define IS31FL3741_DRIVER_COUNT 4 +#elif defined(IS31FL3741_I2C_ADDRESS_3) +# define IS31FL3741_DRIVER_COUNT 3 +#elif defined(IS31FL3741_I2C_ADDRESS_2) +# define IS31FL3741_DRIVER_COUNT 2 +#elif defined(IS31FL3741_I2C_ADDRESS_1) +# define IS31FL3741_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3741_led_t { + uint8_t driver : 2; + uint16_t v : 9; +} PACKED is31fl3741_led_t; + +extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT]; + +void is31fl3741_init_drivers(void); +void is31fl3741_init(uint8_t addr); +void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data); +bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); + +void is31fl3741_set_value(int index, uint8_t value); +void is31fl3741_set_value_all(uint8_t value); + +void is31fl3741_set_led_control_register(uint8_t index, bool value); + +// 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 is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index); +void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index); +void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t value); + +void is31fl3741_set_pwm_buffer(const is31fl3741_led *pled, uint8_t value); + +void is31fl3741_flush(void); + +#define IS31FL3741_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3741_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3741_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3741_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3741_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3741_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3741_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3741_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3741_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3741_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3741_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3741_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3741_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3741_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3741_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3741_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3741_PWM_FREQUENCY_29K_HZ 0b0000 +#define IS31FL3741_PWM_FREQUENCY_3K6_HZ 0b0011 +#define IS31FL3741_PWM_FREQUENCY_1K8_HZ 0b0111 +#define IS31FL3741_PWM_FREQUENCY_900_HZ 0b1011 + +#define CS1_SW1 0x00 +#define CS2_SW1 0x01 +#define CS3_SW1 0x02 +#define CS4_SW1 0x03 +#define CS5_SW1 0x04 +#define CS6_SW1 0x05 +#define CS7_SW1 0x06 +#define CS8_SW1 0x07 +#define CS9_SW1 0x08 +#define CS10_SW1 0x09 +#define CS11_SW1 0x0A +#define CS12_SW1 0x0B +#define CS13_SW1 0x0C +#define CS14_SW1 0x0D +#define CS15_SW1 0x0E +#define CS16_SW1 0x0F +#define CS17_SW1 0x10 +#define CS18_SW1 0x11 +#define CS19_SW1 0x12 +#define CS20_SW1 0x13 +#define CS21_SW1 0x14 +#define CS22_SW1 0x15 +#define CS23_SW1 0x16 +#define CS24_SW1 0x17 +#define CS25_SW1 0x18 +#define CS26_SW1 0x19 +#define CS27_SW1 0x1A +#define CS28_SW1 0x1B +#define CS29_SW1 0x1C +#define CS30_SW1 0x1D + +#define CS1_SW2 0x1E +#define CS2_SW2 0x1F +#define CS3_SW2 0x20 +#define CS4_SW2 0x21 +#define CS5_SW2 0x22 +#define CS6_SW2 0x23 +#define CS7_SW2 0x24 +#define CS8_SW2 0x25 +#define CS9_SW2 0x26 +#define CS10_SW2 0x27 +#define CS11_SW2 0x28 +#define CS12_SW2 0x29 +#define CS13_SW2 0x2A +#define CS14_SW2 0x2B +#define CS15_SW2 0x2C +#define CS16_SW2 0x2D +#define CS17_SW2 0x2E +#define CS18_SW2 0x2F +#define CS19_SW2 0x30 +#define CS20_SW2 0x31 +#define CS21_SW2 0x32 +#define CS22_SW2 0x33 +#define CS23_SW2 0x34 +#define CS24_SW2 0x35 +#define CS25_SW2 0x36 +#define CS26_SW2 0x37 +#define CS27_SW2 0x38 +#define CS28_SW2 0x39 +#define CS29_SW2 0x3A +#define CS30_SW2 0x3B + +#define CS1_SW3 0x3C +#define CS2_SW3 0x3D +#define CS3_SW3 0x3E +#define CS4_SW3 0x3F +#define CS5_SW3 0x40 +#define CS6_SW3 0x41 +#define CS7_SW3 0x42 +#define CS8_SW3 0x43 +#define CS9_SW3 0x44 +#define CS10_SW3 0x45 +#define CS11_SW3 0x46 +#define CS12_SW3 0x47 +#define CS13_SW3 0x48 +#define CS14_SW3 0x49 +#define CS15_SW3 0x4A +#define CS16_SW3 0x4B +#define CS17_SW3 0x4C +#define CS18_SW3 0x4D +#define CS19_SW3 0x4E +#define CS20_SW3 0x4F +#define CS21_SW3 0x50 +#define CS22_SW3 0x51 +#define CS23_SW3 0x52 +#define CS24_SW3 0x53 +#define CS25_SW3 0x54 +#define CS26_SW3 0x55 +#define CS27_SW3 0x56 +#define CS28_SW3 0x57 +#define CS29_SW3 0x58 +#define CS30_SW3 0x59 + +#define CS1_SW4 0x5A +#define CS2_SW4 0x5B +#define CS3_SW4 0x5C +#define CS4_SW4 0x5D +#define CS5_SW4 0x5E +#define CS6_SW4 0x5F +#define CS7_SW4 0x60 +#define CS8_SW4 0x61 +#define CS9_SW4 0x62 +#define CS10_SW4 0x63 +#define CS11_SW4 0x64 +#define CS12_SW4 0x65 +#define CS13_SW4 0x66 +#define CS14_SW4 0x67 +#define CS15_SW4 0x68 +#define CS16_SW4 0x69 +#define CS17_SW4 0x6A +#define CS18_SW4 0x6B +#define CS19_SW4 0x6C +#define CS20_SW4 0x6D +#define CS21_SW4 0x6E +#define CS22_SW4 0x6F +#define CS23_SW4 0x70 +#define CS24_SW4 0x71 +#define CS25_SW4 0x72 +#define CS26_SW4 0x73 +#define CS27_SW4 0x74 +#define CS28_SW4 0x75 +#define CS29_SW4 0x76 +#define CS30_SW4 0x77 + +#define CS1_SW5 0x78 +#define CS2_SW5 0x79 +#define CS3_SW5 0x7A +#define CS4_SW5 0x7B +#define CS5_SW5 0x7C +#define CS6_SW5 0x7D +#define CS7_SW5 0x7E +#define CS8_SW5 0x7F +#define CS9_SW5 0x80 +#define CS10_SW5 0x81 +#define CS11_SW5 0x82 +#define CS12_SW5 0x83 +#define CS13_SW5 0x84 +#define CS14_SW5 0x85 +#define CS15_SW5 0x86 +#define CS16_SW5 0x87 +#define CS17_SW5 0x88 +#define CS18_SW5 0x89 +#define CS19_SW5 0x8A +#define CS20_SW5 0x8B +#define CS21_SW5 0x8C +#define CS22_SW5 0x8D +#define CS23_SW5 0x8E +#define CS24_SW5 0x8F +#define CS25_SW5 0x90 +#define CS26_SW5 0x91 +#define CS27_SW5 0x92 +#define CS28_SW5 0x93 +#define CS29_SW5 0x94 +#define CS30_SW5 0x95 + +#define CS1_SW6 0x96 +#define CS2_SW6 0x97 +#define CS3_SW6 0x98 +#define CS4_SW6 0x99 +#define CS5_SW6 0x9A +#define CS6_SW6 0x9B +#define CS7_SW6 0x9C +#define CS8_SW6 0x9D +#define CS9_SW6 0x9E +#define CS10_SW6 0x9F +#define CS11_SW6 0xA0 +#define CS12_SW6 0xA1 +#define CS13_SW6 0xA2 +#define CS14_SW6 0xA3 +#define CS15_SW6 0xA4 +#define CS16_SW6 0xA5 +#define CS17_SW6 0xA6 +#define CS18_SW6 0xA7 +#define CS19_SW6 0xA8 +#define CS20_SW6 0xA9 +#define CS21_SW6 0xAA +#define CS22_SW6 0xAB +#define CS23_SW6 0xAC +#define CS24_SW6 0xAD +#define CS25_SW6 0xAE +#define CS26_SW6 0xAF +#define CS27_SW6 0xB0 +#define CS28_SW6 0xB1 +#define CS29_SW6 0xB2 +#define CS30_SW6 0xB3 + +#define CS1_SW7 0xB4 +#define CS2_SW7 0xB5 +#define CS3_SW7 0xB6 +#define CS4_SW7 0xB7 +#define CS5_SW7 0xB8 +#define CS6_SW7 0xB9 +#define CS7_SW7 0xBA +#define CS8_SW7 0xBB +#define CS9_SW7 0xBC +#define CS10_SW7 0xBD +#define CS11_SW7 0xBE +#define CS12_SW7 0xBF +#define CS13_SW7 0xC0 +#define CS14_SW7 0xC1 +#define CS15_SW7 0xC2 +#define CS16_SW7 0xC3 +#define CS17_SW7 0xC4 +#define CS18_SW7 0xC5 +#define CS19_SW7 0xC6 +#define CS20_SW7 0xC7 +#define CS21_SW7 0xC8 +#define CS22_SW7 0xC9 +#define CS23_SW7 0xCA +#define CS24_SW7 0xCB +#define CS25_SW7 0xCC +#define CS26_SW7 0xCD +#define CS27_SW7 0xCE +#define CS28_SW7 0xCF +#define CS29_SW7 0xD0 +#define CS30_SW7 0xD1 + +#define CS1_SW8 0xD2 +#define CS2_SW8 0xD3 +#define CS3_SW8 0xD4 +#define CS4_SW8 0xD5 +#define CS5_SW8 0xD6 +#define CS6_SW8 0xD7 +#define CS7_SW8 0xD8 +#define CS8_SW8 0xD9 +#define CS9_SW8 0xDA +#define CS10_SW8 0xDB +#define CS11_SW8 0xDC +#define CS12_SW8 0xDD +#define CS13_SW8 0xDE +#define CS14_SW8 0xDF +#define CS15_SW8 0xE0 +#define CS16_SW8 0xE1 +#define CS17_SW8 0xE2 +#define CS18_SW8 0xE3 +#define CS19_SW8 0xE4 +#define CS20_SW8 0xE5 +#define CS21_SW8 0xE6 +#define CS22_SW8 0xE7 +#define CS23_SW8 0xE8 +#define CS24_SW8 0xE9 +#define CS25_SW8 0xEA +#define CS26_SW8 0xEB +#define CS27_SW8 0xEC +#define CS28_SW8 0xED +#define CS29_SW8 0xEE +#define CS30_SW8 0xEF + +#define CS1_SW9 0xF0 +#define CS2_SW9 0xF1 +#define CS3_SW9 0xF2 +#define CS4_SW9 0xF3 +#define CS5_SW9 0xF4 +#define CS6_SW9 0xF5 +#define CS7_SW9 0xF6 +#define CS8_SW9 0xF7 +#define CS9_SW9 0xF8 +#define CS10_SW9 0xF9 +#define CS11_SW9 0xFA +#define CS12_SW9 0xFB +#define CS13_SW9 0xFC +#define CS14_SW9 0xFD +#define CS15_SW9 0xFE +#define CS16_SW9 0xFF +#define CS17_SW9 0x100 +#define CS18_SW9 0x101 +#define CS19_SW9 0x102 +#define CS20_SW9 0x103 +#define CS21_SW9 0x104 +#define CS22_SW9 0x105 +#define CS23_SW9 0x106 +#define CS24_SW9 0x107 +#define CS25_SW9 0x108 +#define CS26_SW9 0x109 +#define CS27_SW9 0x10A +#define CS28_SW9 0x10B +#define CS29_SW9 0x10C +#define CS30_SW9 0x10D + +#define CS31_SW1 0x10E +#define CS32_SW1 0x10F +#define CS33_SW1 0x110 +#define CS34_SW1 0x111 +#define CS35_SW1 0x112 +#define CS36_SW1 0x113 +#define CS37_SW1 0x114 +#define CS38_SW1 0x115 +#define CS39_SW1 0x116 + +#define CS31_SW2 0x117 +#define CS32_SW2 0x118 +#define CS33_SW2 0x119 +#define CS34_SW2 0x11A +#define CS35_SW2 0x11B +#define CS36_SW2 0x11C +#define CS37_SW2 0x11D +#define CS38_SW2 0x11E +#define CS39_SW2 0x11F + +#define CS31_SW3 0x120 +#define CS32_SW3 0x121 +#define CS33_SW3 0x122 +#define CS34_SW3 0x123 +#define CS35_SW3 0x124 +#define CS36_SW3 0x125 +#define CS37_SW3 0x126 +#define CS38_SW3 0x127 +#define CS39_SW3 0x128 + +#define CS31_SW4 0x129 +#define CS32_SW4 0x12A +#define CS33_SW4 0x12B +#define CS34_SW4 0x12C +#define CS35_SW4 0x12D +#define CS36_SW4 0x12E +#define CS37_SW4 0x12F +#define CS38_SW4 0x130 +#define CS39_SW4 0x131 + +#define CS31_SW5 0x132 +#define CS32_SW5 0x133 +#define CS33_SW5 0x134 +#define CS34_SW5 0x135 +#define CS35_SW5 0x136 +#define CS36_SW5 0x137 +#define CS37_SW5 0x138 +#define CS38_SW5 0x139 +#define CS39_SW5 0x13A + +#define CS31_SW6 0x13B +#define CS32_SW6 0x13C +#define CS33_SW6 0x13D +#define CS34_SW6 0x13E +#define CS35_SW6 0x13F +#define CS36_SW6 0x140 +#define CS37_SW6 0x141 +#define CS38_SW6 0x142 +#define CS39_SW6 0x143 + +#define CS31_SW7 0x144 +#define CS32_SW7 0x145 +#define CS33_SW7 0x146 +#define CS34_SW7 0x147 +#define CS35_SW7 0x148 +#define CS36_SW7 0x149 +#define CS37_SW7 0x14A +#define CS38_SW7 0x14B +#define CS39_SW7 0x14C + +#define CS31_SW8 0x14D +#define CS32_SW8 0x14E +#define CS33_SW8 0x14F +#define CS34_SW8 0x150 +#define CS35_SW8 0x151 +#define CS36_SW8 0x152 +#define CS37_SW8 0x153 +#define CS38_SW8 0x154 +#define CS39_SW8 0x155 + +#define CS31_SW9 0x156 +#define CS32_SW9 0x157 +#define CS33_SW9 0x158 +#define CS34_SW9 0x159 +#define CS35_SW9 0x15A +#define CS36_SW9 0x15B +#define CS37_SW9 0x15C +#define CS38_SW9 0x15D +#define CS39_SW9 0x15E diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c index 70671c2a40fc..efcfa77b468e 100644 --- a/drivers/led/issi/is31fl3741.c +++ b/drivers/led/issi/is31fl3741.c @@ -17,63 +17,40 @@ * along with this program. If not, see . */ -#include "wait.h" - #include "is31fl3741.h" #include #include "i2c_master.h" -#include "progmem.h" - -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC -// ADDR1 represents A1:A0 of the 7-bit address. -// ADDR2 represents A3:A2 of the 7-bit address. -// The result is: 0b101(ADDR2)(ADDR1) -#define ISSI_ADDR_DEFAULT 0x60 - -#define ISSI_COMMANDREGISTER 0xFD -#define ISSI_COMMANDREGISTER_WRITELOCK 0xFE -#define ISSI_INTERRUPTMASKREGISTER 0xF0 -#define ISSI_INTERRUPTSTATUSREGISTER 0xF1 -#define ISSI_IDREGISTER 0xFC - -#define ISSI_PAGE_PWM0 0x00 // PG0 -#define ISSI_PAGE_PWM1 0x01 // PG1 -#define ISSI_PAGE_SCALING_0 0x02 // PG2 -#define ISSI_PAGE_SCALING_1 0x03 // PG3 -#define ISSI_PAGE_FUNCTION 0x04 // PG4 - -#define ISSI_REG_CONFIGURATION 0x00 // PG4 -#define ISSI_REG_GLOBALCURRENT 0x01 // PG4 -#define ISSI_REG_PULLDOWNUP 0x02 // PG4 -#define ISSI_REG_RESET 0x3F // PG4 - -#ifndef ISSI_TIMEOUT -# define ISSI_TIMEOUT 100 +#include "wait.h" + +#define IS31FL3741_PWM_REGISTER_COUNT 351 + +#ifndef IS31FL3741_I2C_TIMEOUT +# define IS31FL3741_I2C_TIMEOUT 100 #endif -#ifndef ISSI_PERSISTENCE -# define ISSI_PERSISTENCE 0 +#ifndef IS31FL3741_I2C_PERSISTENCE +# define IS31FL3741_I2C_PERSISTENCE 0 #endif -#ifndef ISSI_SWPULLUP -# define ISSI_SWPULLUP PUR_32KR +#ifndef IS31FL3741_CONFIGURATION +# define IS31FL3741_CONFIGURATION 0x01 #endif -#ifndef ISSI_CSPULLUP -# define ISSI_CSPULLUP PUR_32KR +#ifndef IS31FL3741_PWM_FREQUENCY +# define IS31FL3741_PWM_FREQUENCY IS31FL3741_PWM_FREQUENCY_29K_HZ #endif -#ifndef ISSI_GLOBALCURRENT -# define ISSI_GLOBALCURRENT 0xFF +#ifndef IS31FL3741_SW_PULLUP +# define IS31FL3741_SW_PULLUP IS31FL3741_PUR_32K_OHM #endif -#define ISSI_MAX_LEDS 351 +#ifndef IS31FL3741_CS_PULLDOWN +# define IS31FL3741_CS_PULLDOWN IS31FL3741_PDR_32K_OHM +#endif + +#ifndef IS31FL3741_GLOBAL_CURRENT +# define IS31FL3741_GLOBAL_CURRENT 0xFF +#endif // Transfer buffer for TWITransmitData() uint8_t g_twi_transfer_buffer[20] = {0xFF}; @@ -84,22 +61,22 @@ uint8_t g_twi_transfer_buffer[20] = {0xFF}; // We could optimize this and take out the unused registers from these // buffers and the transfers in is31fl3741_write_pwm_buffer() but it's // probably not worth the extra complexity. -uint8_t g_pwm_buffer[DRIVER_COUNT][ISSI_MAX_LEDS]; -bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false}; -bool g_scaling_registers_update_required[DRIVER_COUNT] = {false}; +uint8_t g_pwm_buffer[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[IS31FL3741_DRIVER_COUNT] = {false}; +bool g_scaling_registers_update_required[IS31FL3741_DRIVER_COUNT] = {false}; -uint8_t g_scaling_registers[DRIVER_COUNT][ISSI_MAX_LEDS]; +uint8_t g_scaling_registers[IS31FL3741_DRIVER_COUNT][IS31FL3741_PWM_REGISTER_COUNT]; void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data) { g_twi_transfer_buffer[0] = reg; g_twi_transfer_buffer[1] = data; -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT) == 0) break; +#if IS31FL3741_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT) == 0) break; } #else - i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, ISSI_TIMEOUT); + i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, IS31FL3741_I2C_TIMEOUT); #endif } @@ -109,21 +86,21 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { for (int i = 0; i < 342; i += 18) { if (i == 180) { // unlock the command register and select PG1 - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM1); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_1); } g_twi_transfer_buffer[0] = i % 180; memcpy(g_twi_transfer_buffer + 1, pwm_buffer + i, 18); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, ISSI_TIMEOUT) != 0) { +#if IS31FL3741_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { return false; } } #else - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, ISSI_TIMEOUT) != 0) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 19, IS31FL3741_I2C_TIMEOUT) != 0) { return false; } #endif @@ -133,14 +110,14 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { g_twi_transfer_buffer[0] = 162; memcpy(g_twi_transfer_buffer + 1, pwm_buffer + 342, 9); -#if ISSI_PERSISTENCE > 0 - for (uint8_t i = 0; i < ISSI_PERSISTENCE; i++) { - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, ISSI_TIMEOUT) != 0) { +#if IS31FL3741_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < IS31FL3741_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { return false; } } #else - if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, ISSI_TIMEOUT) != 0) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 10, IS31FL3741_I2C_TIMEOUT) != 0) { return false; } #endif @@ -148,6 +125,36 @@ bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) { return true; } +void is31fl3741_init_drivers(void) { + i2c_init(); + + is31fl3741_init(IS31FL3741_I2C_ADDRESS_1); +#if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_2); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_3); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_init(IS31FL3741_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { + is31fl3741_set_led_control_register(i, true, true, true); + } + + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_1, 0); +#if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_2, 1); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_3, 2); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_update_led_control_registers(IS31FL3741_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + void is31fl3741_init(uint8_t addr) { // In order to avoid the LEDs being driven with garbage data // in the LED driver's PWM registers, shutdown is enabled last. @@ -156,18 +163,20 @@ void is31fl3741_init(uint8_t addr) { // Unlock the command register. // Unlock the command register. - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); // Select PG4 - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_FUNCTION); // Set to Normal operation - is31fl3741_write_register(addr, ISSI_REG_CONFIGURATION, 0x01); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_CONFIGURATION, IS31FL3741_CONFIGURATION); // Set Golbal Current Control Register - is31fl3741_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT, IS31FL3741_GLOBAL_CURRENT); // Set Pull up & Down for SWx CSy - is31fl3741_write_register(addr, ISSI_REG_PULLDOWNUP, ((ISSI_CSPULLUP << 4) | ISSI_SWPULLUP)); + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PULLDOWNUP, ((IS31FL3741_CS_PULLDOWN << 4) | IS31FL3741_SW_PULLUP)); + // Set PWM frequency + is31fl3741_write_register(addr, IS31FL3741_FUNCTION_REG_PWM_FREQUENCY, (IS31FL3741_PWM_FREQUENCY & 0b1111)); // is31fl3741_update_led_scaling_registers(addr, 0xFF, 0xFF, 0xFF); @@ -176,9 +185,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 < RGB_MATRIX_LED_COUNT) { - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3741_led_t led; + if (index >= 0 && index < IS31FL3741_LED_COUNT) { + memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { return; @@ -191,14 +200,14 @@ void is31fl3741_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { } void is31fl3741_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + for (int i = 0; i < IS31FL3741_LED_COUNT; i++) { is31fl3741_set_color(i, red, green, blue); } } void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { - is31_led led; - memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); + is31fl3741_led_t led; + memcpy_P(&led, (&g_is31fl3741_leds[index]), sizeof(led)); if (red) { g_scaling_registers[led.driver][led.r] = 0xFF; @@ -224,8 +233,8 @@ void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bo void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) { if (g_pwm_buffer_update_required[index]) { // unlock the command register and select PG2 - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_PWM0); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_PWM_0); is31fl3741_write_pwm_buffer(addr, g_pwm_buffer[index]); } @@ -233,7 +242,7 @@ void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index) { g_pwm_buffer_update_required[index] = false; } -void is31fl3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) { +void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) { g_pwm_buffer[pled->driver][pled->r] = red; g_pwm_buffer[pled->driver][pled->g] = green; g_pwm_buffer[pled->driver][pled->b] = blue; @@ -244,8 +253,8 @@ void is31fl3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { if (g_scaling_registers_update_required[index]) { // unlock the command register and select PG2 - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_SCALING_0); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_0); // CS1_SW1 to CS30_SW6 are on PG2 for (int i = CS1_SW1; i <= CS30_SW6; ++i) { @@ -253,8 +262,8 @@ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { } // unlock the command register and select PG3 - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER_WRITELOCK, 0xC5); - is31fl3741_write_register(addr, ISSI_COMMANDREGISTER, ISSI_PAGE_SCALING_1); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND_WRITE_LOCK, IS31FL3741_COMMAND_WRITE_LOCK_MAGIC); + is31fl3741_write_register(addr, IS31FL3741_REG_COMMAND, IS31FL3741_COMMAND_SCALING_1); // CS1_SW7 to CS39_SW9 are on PG3 for (int i = CS1_SW7; i <= CS39_SW9; ++i) { @@ -265,10 +274,23 @@ void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index) { } } -void is31fl3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue) { +void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue) { g_scaling_registers[pled->driver][pled->r] = red; g_scaling_registers[pled->driver][pled->g] = green; g_scaling_registers[pled->driver][pled->b] = blue; g_scaling_registers_update_required[pled->driver] = true; } + +void is31fl3741_flush(void) { + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_1, 0); +#if defined(IS31FL3741_I2C_ADDRESS_2) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_2, 1); +# if defined(IS31FL3741_I2C_ADDRESS_3) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_3, 2); +# if defined(IS31FL3741_I2C_ADDRESS_4) + is31fl3741_update_pwm_buffers(IS31FL3741_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} diff --git a/drivers/led/issi/is31fl3741.h b/drivers/led/issi/is31fl3741.h index 4ae84dc3c65a..6466696b606f 100644 --- a/drivers/led/issi/is31fl3741.h +++ b/drivers/led/issi/is31fl3741.h @@ -22,16 +22,103 @@ #include #include #include "progmem.h" +#include "util.h" -typedef struct is31_led { - uint32_t driver : 2; - uint32_t r : 10; - uint32_t g : 10; - uint32_t b : 10; -} __attribute__((packed)) is31_led; +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef DRIVER_ADDR_1 +# define IS31FL3741_I2C_ADDRESS_1 DRIVER_ADDR_1 +#endif +#ifdef DRIVER_ADDR_2 +# define IS31FL3741_I2C_ADDRESS_2 DRIVER_ADDR_2 +#endif +#ifdef DRIVER_ADDR_3 +# define IS31FL3741_I2C_ADDRESS_3 DRIVER_ADDR_3 +#endif +#ifdef DRIVER_ADDR_4 +# define IS31FL3741_I2C_ADDRESS_4 DRIVER_ADDR_4 +#endif +#ifdef ISSI_TIMEOUT +# define IS31FL3741_I2C_TIMEOUT ISSI_TIMEOUT +#endif +#ifdef ISSI_PERSISTENCE +# define IS31FL3741_I2C_PERSISTENCE ISSI_PERSISTENCE +#endif +#ifdef ISSI_CONFIGURATION +# define IS31FL3741_CONFIGURATION ISSI_CONFIGURATION +#endif +#ifdef ISSI_SWPULLUP +# define IS31FL3741_SW_PULLUP ISSI_SWPULLUP +#endif +#ifdef ISSI_CSPULLUP +# define IS31FL3741_CS_PULLDOWN ISSI_CSPULLUP +#endif +#ifdef ISSI_GLOBALCURRENT +# define IS31FL3741_GLOBAL_CURRENT ISSI_GLOBALCURRENT +#endif -extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT]; +#define is31_led is31fl3741_led_t +#define g_is31_leds g_is31fl3741_leds +#define PUR_0R IS31FL3741_PUR_0_OHM +#define PUR_05KR IS31FL3741_PUR_0K5_OHM +#define PUR_1KR IS31FL3741_PUR_1K_OHM +#define PUR_2KR IS31FL3741_PUR_2K_OHM +#define PUR_4KR IS31FL3741_PUR_4K_OHM +#define PUR_8KR IS31FL3741_PUR_8K_OHM +#define PUR_16KR IS31FL3741_PUR_16K_OHM +#define PUR_32KR IS31FL3741_PUR_32K_OHM +// ======== + +#define IS31FL3741_REG_INTERRUPT_MASK 0xF0 +#define IS31FL3741_REG_INTERRUPT_STATUS 0xF1 +#define IS31FL3741_REG_ID 0xFC + +#define IS31FL3741_REG_COMMAND 0xFD + +#define IS31FL3741_COMMAND_PWM_0 0x00 +#define IS31FL3741_COMMAND_PWM_1 0x01 +#define IS31FL3741_COMMAND_SCALING_0 0x02 +#define IS31FL3741_COMMAND_SCALING_1 0x03 +#define IS31FL3741_COMMAND_FUNCTION 0x04 + +#define IS31FL3741_FUNCTION_REG_CONFIGURATION 0x00 +#define IS31FL3741_FUNCTION_REG_GLOBAL_CURRENT 0x01 +#define IS31FL3741_FUNCTION_REG_PULLDOWNUP 0x02 +#define IS31FL3741_FUNCTION_REG_PWM_FREQUENCY 0x36 +#define IS31FL3741_FUNCTION_REG_RESET 0x3F + +#define IS31FL3741_REG_COMMAND_WRITE_LOCK 0xFE +#define IS31FL3741_COMMAND_WRITE_LOCK_MAGIC 0xC5 + +#define IS31FL3741_I2C_ADDRESS_GND 0x30 +#define IS31FL3741_I2C_ADDRESS_SCL 0x31 +#define IS31FL3741_I2C_ADDRESS_SDA 0x32 +#define IS31FL3741_I2C_ADDRESS_VCC 0x33 + +#if defined(RGB_MATRIX_IS31FL3741) +# define IS31FL3741_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + +#if defined(IS31FL3741_I2C_ADDRESS_4) +# define IS31FL3741_DRIVER_COUNT 4 +#elif defined(IS31FL3741_I2C_ADDRESS_3) +# define IS31FL3741_DRIVER_COUNT 3 +#elif defined(IS31FL3741_I2C_ADDRESS_2) +# define IS31FL3741_DRIVER_COUNT 2 +#elif defined(IS31FL3741_I2C_ADDRESS_1) +# define IS31FL3741_DRIVER_COUNT 1 +#endif + +typedef struct is31fl3741_led_t { + uint8_t driver : 2; + uint16_t r : 9; + uint16_t g : 9; + uint16_t b : 9; +} PACKED is31fl3741_led_t; + +extern const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT]; + +void is31fl3741_init_drivers(void); void is31fl3741_init(uint8_t addr); void is31fl3741_write_register(uint8_t addr, uint8_t reg, uint8_t data); bool is31fl3741_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); @@ -47,18 +134,34 @@ void is31fl3741_set_led_control_register(uint8_t index, bool red, bool green, bo // If the buffer is dirty, it will update the driver with the buffer. void is31fl3741_update_pwm_buffers(uint8_t addr, uint8_t index); void is31fl3741_update_led_control_registers(uint8_t addr, uint8_t index); -void is31fl3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue); - -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 +void is31fl3741_set_scaling_registers(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue); + +void is31fl3741_set_pwm_buffer(const is31fl3741_led_t *pled, uint8_t red, uint8_t green, uint8_t blue); + +void is31fl3741_flush(void); + +#define IS31FL3741_PDR_0_OHM 0b000 // No pull-down resistor +#define IS31FL3741_PDR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3741_PDR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3741_PDR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3741_PDR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3741_PDR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3741_PDR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3741_PDR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3741_PUR_0_OHM 0b000 // No pull-up resistor +#define IS31FL3741_PUR_0K5_OHM 0b001 // 0.5 kOhm resistor +#define IS31FL3741_PUR_1K_OHM 0b010 // 1 kOhm resistor +#define IS31FL3741_PUR_2K_OHM 0b011 // 2 kOhm resistor +#define IS31FL3741_PUR_4K_OHM 0b100 // 4 kOhm resistor +#define IS31FL3741_PUR_8K_OHM 0b101 // 8 kOhm resistor +#define IS31FL3741_PUR_16K_OHM 0b110 // 16 kOhm resistor +#define IS31FL3741_PUR_32K_OHM 0b111 // 32 kOhm resistor + +#define IS31FL3741_PWM_FREQUENCY_29K_HZ 0b0000 +#define IS31FL3741_PWM_FREQUENCY_3K6_HZ 0b0011 +#define IS31FL3741_PWM_FREQUENCY_1K8_HZ 0b0111 +#define IS31FL3741_PWM_FREQUENCY_900_HZ 0b1011 #define CS1_SW1 0x00 #define CS2_SW1 0x01 diff --git a/drivers/led/issi/is31fl3743.h b/drivers/led/issi/is31fl3743.h index d8fcd790963b..706b27125499 100644 --- a/drivers/led/issi/is31fl3743.h +++ b/drivers/led/issi/is31fl3743.h @@ -36,7 +36,7 @@ // Set defaults for Spread Spectrum Register #ifndef ISSI_SSR_1 -# if DRIVER_COUNT == 1 +# ifndef DRIVER_ADDR_2 # define ISSI_SSR_1 0x00 # else # define ISSI_SSR_1 0xC0 diff --git a/drivers/led/issi/is31fl3745.h b/drivers/led/issi/is31fl3745.h index ca5dd4a986a8..1e88aab4a8d9 100644 --- a/drivers/led/issi/is31fl3745.h +++ b/drivers/led/issi/is31fl3745.h @@ -36,7 +36,7 @@ // Set defaults for Spread Spectrum Register #ifndef ISSI_SSR_1 -# if DRIVER_COUNT == 1 +# ifndef DRIVER_ADDR_2 # define ISSI_SSR_1 0x00 # else # define ISSI_SSR_1 0xC0 diff --git a/drivers/led/issi/is31flcommon.c b/drivers/led/issi/is31flcommon.c index 4b78947ada3a..d6b9bce93d7c 100644 --- a/drivers/led/issi/is31flcommon.c +++ b/drivers/led/issi/is31flcommon.c @@ -174,7 +174,55 @@ void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index) { } } +void IS31FL_common_flush(void) { + IS31FL_common_update_pwm_register(DRIVER_ADDR_1, 0); +#if defined(DRIVER_ADDR_2) + IS31FL_common_update_pwm_register(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL_common_update_pwm_register(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + IS31FL_common_update_pwm_register(DRIVER_ADDR_4, 3); +# endif +# endif +#endif +} + #ifdef RGB_MATRIX_ENABLE +void IS31FL_RGB_init_drivers(void) { + i2c_init(); + + IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1); +# if defined(DRIVER_ADDR_2) + IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2); +# if defined(DRIVER_ADDR_3) + IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3); +# if defined(DRIVER_ADDR_4) + IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4); +# endif +# endif +# endif + + for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { + IS31FL_RGB_set_scaling_buffer(i, true, true, true); + } + + // This actually updates the LED drivers +# ifdef ISSI_MANUAL_SCALING + IS31FL_set_manual_scaling_buffer(); +# endif + + IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + // Colour is set by adjusting PWM register void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { if (index >= 0 && index < RGB_MATRIX_LED_COUNT) { @@ -218,6 +266,41 @@ void IS31FL_RGB_set_scaling_buffer(uint8_t index, bool red, bool green, bool blu #elif defined(LED_MATRIX_ENABLE) // LED Matrix Specific scripts +void IS31FL_simple_init_drivers(void) { + i2c_init(); + + IS31FL_common_init(DRIVER_ADDR_1, ISSI_SSR_1); +# if defined(DRIVER_ADDR_2) + IS31FL_common_init(DRIVER_ADDR_2, ISSI_SSR_2); +# if defined(DRIVER_ADDR_3) + IS31FL_common_init(DRIVER_ADDR_3, ISSI_SSR_3); +# if defined(DRIVER_ADDR_4) + IS31FL_common_init(DRIVER_ADDR_4, ISSI_SSR_4); +# endif +# endif +# endif + + for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { + IS31FL_simple_set_scaling_buffer(i, true); + } + +// This actually updates the LED drivers +# ifdef ISSI_MANUAL_SCALING + IS31FL_set_manual_scaling_buffer(); +# endif + + IS31FL_common_update_scaling_register(DRIVER_ADDR_1, 0); +# if defined(DRIVER_ADDR_2) + IS31FL_common_update_scaling_register(DRIVER_ADDR_2, 1); +# if defined(DRIVER_ADDR_3) + IS31FL_common_update_scaling_register(DRIVER_ADDR_3, 2); +# if defined(DRIVER_ADDR_4) + IS31FL_common_update_scaling_register(DRIVER_ADDR_4, 3); +# endif +# endif +# endif +} + void IS31FL_simple_set_scaling_buffer(uint8_t index, bool value) { is31_led led; memcpy_P(&led, (&g_is31_leds[index]), sizeof(led)); diff --git a/drivers/led/issi/is31flcommon.h b/drivers/led/issi/is31flcommon.h index 4b3add558b6b..10613a6eed80 100644 --- a/drivers/led/issi/is31flcommon.h +++ b/drivers/led/issi/is31flcommon.h @@ -23,33 +23,44 @@ #include #include #include "progmem.h" +#include "util.h" // Which variant header file to use -#ifdef IS31FL3742A +#if defined(LED_MATRIX_IS31FL3742A) || defined(RGB_MATRIX_IS31FL3742A) # include "is31fl3742.h" -#elif defined(IS31FL3743A) +#elif defined(LED_MATRIX_IS31FL3743A) || defined(RGB_MATRIX_IS31FL3743A) # include "is31fl3743.h" -#elif defined(IS31FL3745) +#elif defined(LED_MATRIX_IS31FL3745) || defined(RGB_MATRIX_IS31FL3745) # include "is31fl3745.h" -#elif defined(IS31FL3746A) +#elif defined(LED_MATRIX_IS31FL3746A) || defined(RGB_MATRIX_IS31FL3746A) # include "is31fl3746.h" #endif +#if defined DRIVER_ADDR_4 +# define DRIVER_COUNT 4 +#elif defined DRIVER_ADDR_3 +# define DRIVER_COUNT 3 +#elif defined DRIVER_ADDR_2 +# define DRIVER_COUNT 2 +#elif defined DRIVER_ADDR_1 +# define DRIVER_COUNT 1 +#endif + #ifdef RGB_MATRIX_ENABLE typedef struct is31_led { - uint8_t driver; + uint8_t driver : 2; uint8_t r; uint8_t g; uint8_t b; -} __attribute__((packed)) is31_led; +} PACKED is31_led; extern const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT]; #elif defined(LED_MATRIX_ENABLE) typedef struct is31_led { - uint8_t driver; + uint8_t driver : 2; uint8_t v; -} __attribute__((packed)) is31_led; +} PACKED is31_led; extern const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT]; #endif @@ -67,13 +78,17 @@ void IS31FL_common_init(uint8_t addr, uint8_t ssr); void IS31FL_common_update_pwm_register(uint8_t addr, uint8_t index); void IS31FL_common_update_scaling_register(uint8_t addr, uint8_t index); +void IS31FL_common_flush(void); + #ifdef RGB_MATRIX_ENABLE // RGB Matrix Specific scripts +void IS31FL_RGB_init_drivers(void); void IS31FL_RGB_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); void IS31FL_RGB_set_color_all(uint8_t red, uint8_t green, uint8_t blue); void IS31FL_RGB_set_scaling_buffer(uint8_t index, bool red, bool green, bool blue); #elif defined(LED_MATRIX_ENABLE) // LED Matrix Specific scripts +void IS31FL_simple_init_drivers(void); void IS31FL_simple_set_scaling_buffer(uint8_t index, bool value); void IS31FL_simple_set_brightness(int index, uint8_t value); void IS31FL_simple_set_brigntness_all(uint8_t value); diff --git a/drivers/led/snled27351-simple.c b/drivers/led/snled27351-simple.c new file mode 100644 index 000000000000..b2054c96d54f --- /dev/null +++ b/drivers/led/snled27351-simple.c @@ -0,0 +1,266 @@ +/* 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 "snled27351-simple.h" +#include "i2c_master.h" + +#define SNLED27351_PWM_REGISTER_COUNT 192 +#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef SNLED27351_I2C_TIMEOUT +# define SNLED27351_I2C_TIMEOUT 100 +#endif + +#ifndef SNLED27351_I2C_PERSISTENCE +# define SNLED27351_I2C_PERSISTENCE 0 +#endif + +#ifndef SNLED27351_PHASE_CHANNEL +# define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL +#endif + +#ifndef SNLED27351_CURRENT_TUNE +# define SNLED27351_CURRENT_TUNE \ + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } +#endif + +// Transfer buffer for TWITransmitData() +uint8_t g_twi_transfer_buffer[20]; + +// These buffers match the SNLED27351 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 snled27351_write_pwm_buffer() but it's +// probably not worth the extra complexity. +uint8_t g_pwm_buffer[SNLED27351_DRIVER_COUNT][SNLED27351_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false}; + +bool snled27351_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 SNLED27351_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } +#endif + return true; +} + +bool snled27351_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 < SNLED27351_PWM_REGISTER_COUNT; 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 SNLED27351_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } +#endif + } + return true; +} + +void snled27351_init_drivers(void) { + i2c_init(); + + snled27351_init(SNLED27351_I2C_ADDRESS_1); +#if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_init(SNLED27351_I2C_ADDRESS_2); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_init(SNLED27351_I2C_ADDRESS_3); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_init(SNLED27351_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { + snled27351_set_led_control_register(i, true); + } + + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0); +#if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + +void snled27351_init(uint8_t addr) { + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to shutdown mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); + // Setting internal channel pulldown/pullup + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_PULLDOWNUP, SNLED27351_PULLDOWNUP_ALL_ENABLED); + // Select number of scan phase + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL); + // Setting PWM Delay Phase + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1, SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE); + // Setting Driving/Sinking Channel Slew Rate + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2, SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE | SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE); + // Setting Iref + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, 0); + // Set LED CONTROL PAGE (Page 0) + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); + for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { + snled27351_write_register(addr, i, 0x00); + } + + // Set PWM PAGE (Page 1) + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); + for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { + snled27351_write_register(addr, i, 0x00); + } + + // Set CURRENT PAGE (Page 4) + uint8_t current_tune_reg_list[SNLED27351_LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE; + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_CURRENT_TUNE); + for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { + snled27351_write_register(addr, i, current_tune_reg_list[i]); + } + + // Enable LEDs ON/OFF + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); + for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { + snled27351_write_register(addr, i, 0xFF); + } + + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to normal mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); +} + +void snled27351_set_value(int index, uint8_t value) { + snled27351_led_t led; + if (index >= 0 && index < SNLED27351_LED_COUNT) { + memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led)); + + if (g_pwm_buffer[led.driver][led.v] == value) { + return; + } + g_pwm_buffer[led.driver][led.v] = value; + g_pwm_buffer_update_required[led.driver] = true; + } +} + +void snled27351_set_value_all(uint8_t value) { + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { + snled27351_set_value(i, value); + } +} + +void snled27351_set_led_control_register(uint8_t index, bool value) { + snled27351_led_t led; + memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led)); + + uint8_t control_register = led.v / 8; + uint8_t bit_value = led.v % 8; + + if (value) { + g_led_control_registers[led.driver][control_register] |= (1 << bit_value); + } else { + g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value); + } + + g_led_control_registers_update_required[led.driver] = true; +} + +void snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); + + // If any of the transactions fail we risk writing dirty PG0, + // refresh page 0 just in case. + if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) { + g_led_control_registers_update_required[index] = true; + } + } + g_pwm_buffer_update_required[index] = false; +} + +void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); + for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { + snled27351_write_register(addr, i, g_led_control_registers[index][i]); + } + } + g_led_control_registers_update_required[index] = false; +} + +void snled27351_flush(void) { + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0); +#if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + +void snled27351_sw_return_normal(uint8_t addr) { + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to normal mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); +} + +void snled27351_sw_shutdown(uint8_t addr) { + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to shutdown mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); + // Write SW Sleep Register + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, SNLED27351_SOFTWARE_SLEEP_ENABLE); +} diff --git a/drivers/led/snled27351-simple.h b/drivers/led/snled27351-simple.h new file mode 100644 index 000000000000..2fc62a6f0a74 --- /dev/null +++ b/drivers/led/snled27351-simple.h @@ -0,0 +1,380 @@ +/* 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" +#include "util.h" + +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef CKLED2001_TIMEOUT +# define SNLED27351_I2C_TIMEOUT CKLED2001_TIMEOUT +#endif +#ifdef CKLED2001_PERSISTENCE +# define SNLED27351_I2C_PERSISTENCE CKLED2001_PERSISTENCE +#endif +#ifdef PHASE_CHANNEL +# define SNLED27351_PHASE_CHANNEL PHASE_CHANNEL +#endif +#ifdef CKLED2001_CURRENT_TUNE +# define SNLED27351_CURRENT_TUNE CKLED2001_CURRENT_TUNE +#endif + +#define MSKPHASE_12CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL +#define MSKPHASE_11CHANNEL SNLED27351_SCAN_PHASE_11_CHANNEL +#define MSKPHASE_10CHANNEL SNLED27351_SCAN_PHASE_10_CHANNEL +#define MSKPHASE_9CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL +#define MSKPHASE_8CHANNEL SNLED27351_SCAN_PHASE_8_CHANNEL +#define MSKPHASE_7CHANNEL SNLED27351_SCAN_PHASE_7_CHANNEL +#define MSKPHASE_6CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL +#define MSKPHASE_5CHANNEL SNLED27351_SCAN_PHASE_5_CHANNEL +#define MSKPHASE_4CHANNEL SNLED27351_SCAN_PHASE_4_CHANNEL +#define MSKPHASE_3CHANNEL SNLED27351_SCAN_PHASE_3_CHANNEL +#define MSKPHASE_2CHANNEL SNLED27351_SCAN_PHASE_2_CHANNEL +#define MSKPHASE_1CHANNEL SNLED27351_SCAN_PHASE_1_CHANNEL + +#define ckled2001_led snled27351_led_t +#define g_ckled2001_leds g_snled27351_leds +// ======== + +#define SNLED27351_REG_COMMAND 0xFD +#define SNLED27351_COMMAND_LED_CONTROL 0x00 +#define SNLED27351_COMMAND_PWM 0x01 +#define SNLED27351_COMMAND_FUNCTION 0x03 +#define SNLED27351_COMMAND_CURRENT_TUNE 0x04 + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN 0x00 +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN (0x0 << 0) +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL (0x1 << 0) + +#define SNLED27351_FUNCTION_REG_ID 0x11 +#define SNLED27351_DRIVER_ID 0x8A + +#define SNLED27351_FUNCTION_REG_PULLDOWNUP 0x13 +#define SNLED27351_PULLDOWNUP_ALL_ENABLED 0xAA + +#define SNLED27351_FUNCTION_REG_SCAN_PHASE 0x14 +#define SNLED27351_SCAN_PHASE_12_CHANNEL 0x00 +#define SNLED27351_SCAN_PHASE_11_CHANNEL 0x01 +#define SNLED27351_SCAN_PHASE_10_CHANNEL 0x02 +#define SNLED27351_SCAN_PHASE_9_CHANNEL 0x03 +#define SNLED27351_SCAN_PHASE_8_CHANNEL 0x04 +#define SNLED27351_SCAN_PHASE_7_CHANNEL 0x05 +#define SNLED27351_SCAN_PHASE_6_CHANNEL 0x06 +#define SNLED27351_SCAN_PHASE_5_CHANNEL 0x07 +#define SNLED27351_SCAN_PHASE_4_CHANNEL 0x08 +#define SNLED27351_SCAN_PHASE_3_CHANNEL 0x09 +#define SNLED27351_SCAN_PHASE_2_CHANNEL 0x0A +#define SNLED27351_SCAN_PHASE_1_CHANNEL 0x0B + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1 0x15 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE (0b1 << 2) + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2 0x16 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE (0b1 << 6) +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_ENABLE 0x17 +#define SNLED27351_OPEN_SHORT_ENABLE_SDS_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_ENABLE_ODS_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_DUTY 0x18 + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_FLAG 0x19 +#define SNLED27351_OPEN_SHORT_FLAG_OSINT_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_FLAG_ODINT_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP 0x1A +#define SNLED27351_SOFTWARE_SLEEP_ENABLE (0b1 << 1) + +// LED Control Registers +#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 +#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17 +#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18 +#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F +#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30 +#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47 +#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48 + +// LED Control Registers +#define SNLED27351_LED_PWM_FIRST_ADDR 0x00 +#define SNLED27351_LED_PWM_LAST_ADDR 0xBF +#define SNLED27351_LED_PWM_LENGTH 0xC0 + +// Current Tune Registers +#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00 +#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B +#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C + +#define SNLED27351_I2C_ADDRESS_GND 0x74 +#define SNLED27351_I2C_ADDRESS_SCL 0x75 +#define SNLED27351_I2C_ADDRESS_SDA 0x76 +#define SNLED27351_I2C_ADDRESS_VDDIO 0x77 + +#if defined(LED_MATRIX_SNLED27351) +# define SNLED27351_LED_COUNT LED_MATRIX_LED_COUNT +#endif + +#if defined(SNLED27351_I2C_ADDRESS_4) +# define SNLED27351_DRIVER_COUNT 4 +#elif defined(SNLED27351_I2C_ADDRESS_3) +# define SNLED27351_DRIVER_COUNT 3 +#elif defined(SNLED27351_I2C_ADDRESS_2) +# define SNLED27351_DRIVER_COUNT 2 +#elif defined(SNLED27351_I2C_ADDRESS_1) +# define SNLED27351_DRIVER_COUNT 1 +#endif + +typedef struct snled27351_led_t { + uint8_t driver : 2; + uint8_t v; +} PACKED snled27351_led_t; + +extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT]; + +void snled27351_init_drivers(void); +void snled27351_init(uint8_t addr); +bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data); +bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); + +void snled27351_set_value(int index, uint8_t value); +void snled27351_set_value_all(uint8_t value); + +void snled27351_set_led_control_register(uint8_t index, bool value); + +// 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 snled27351_update_pwm_buffers(uint8_t addr, uint8_t index); +void snled27351_update_led_control_registers(uint8_t addr, uint8_t index); + +void snled27351_flush(void); + +void snled27351_sw_return_normal(uint8_t addr); +void snled27351_sw_shutdown(uint8_t addr); + +#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 diff --git a/drivers/led/snled27351.c b/drivers/led/snled27351.c new file mode 100644 index 000000000000..71992b73224b --- /dev/null +++ b/drivers/led/snled27351.c @@ -0,0 +1,281 @@ +/* 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 "snled27351.h" +#include "i2c_master.h" + +#define SNLED27351_PWM_REGISTER_COUNT 192 +#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24 + +#ifndef SNLED27351_I2C_TIMEOUT +# define SNLED27351_I2C_TIMEOUT 100 +#endif + +#ifndef SNLED27351_I2C_PERSISTENCE +# define SNLED27351_I2C_PERSISTENCE 0 +#endif + +#ifndef SNLED27351_PHASE_CHANNEL +# define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL +#endif + +#ifndef SNLED27351_CURRENT_TUNE +# define SNLED27351_CURRENT_TUNE \ + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } +#endif + +// Transfer buffer for TWITransmitData() +uint8_t g_twi_transfer_buffer[65]; + +// These buffers match the SNLED27351 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 snled27351_write_pwm_buffer() but it's +// probably not worth the extra complexity. +uint8_t g_pwm_buffer[SNLED27351_DRIVER_COUNT][SNLED27351_PWM_REGISTER_COUNT]; +bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false}; + +uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0}; +bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false}; + +bool snled27351_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 SNLED27351_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } +#endif + return true; +} + +bool snled27351_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 3 transfers of 64 bytes. + + // Iterate over the pwm_buffer contents at 64 byte intervals. + for (uint8_t i = 0; i < SNLED27351_PWM_REGISTER_COUNT; i += 64) { + g_twi_transfer_buffer[0] = i; + // Copy the data from i to i+63. + // Device will auto-increment register for data after the first byte + // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer. + for (uint8_t j = 0; j < 64; j++) { + g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j]; + } + +#if SNLED27351_I2C_PERSISTENCE > 0 + for (uint8_t i = 0; i < SNLED27351_I2C_PERSISTENCE; i++) { + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } + } +#else + if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 65, SNLED27351_I2C_TIMEOUT) != 0) { + return false; + } +#endif + } + return true; +} + +void snled27351_init_drivers(void) { + i2c_init(); + + snled27351_init(SNLED27351_I2C_ADDRESS_1); +#if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_init(SNLED27351_I2C_ADDRESS_2); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_init(SNLED27351_I2C_ADDRESS_3); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_init(SNLED27351_I2C_ADDRESS_4); +# endif +# endif +#endif + + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { + snled27351_set_led_control_register(i, true, true, true); + } + + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_1, 0); +#if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_2, 1); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_3, 2); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_update_led_control_registers(SNLED27351_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + +void snled27351_init(uint8_t addr) { + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to shutdown mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); + // Setting internal channel pulldown/pullup + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_PULLDOWNUP, SNLED27351_PULLDOWNUP_ALL_ENABLED); + // Select number of scan phase + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SCAN_PHASE, SNLED27351_PHASE_CHANNEL); + // Setting PWM Delay Phase + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1, SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE); + // Setting Driving/Sinking Channel Slew Rate + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2, SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE | SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE); + // Setting Iref + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, 0); + // Set LED CONTROL PAGE (Page 0) + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); + for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { + snled27351_write_register(addr, i, 0x00); + } + + // Set PWM PAGE (Page 1) + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); + for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { + snled27351_write_register(addr, i, 0x00); + } + + // Set CURRENT PAGE (Page 4) + uint8_t current_tune_reg_list[SNLED27351_LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE; + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_CURRENT_TUNE); + for (int i = 0; i < SNLED27351_LED_CURRENT_TUNE_LENGTH; i++) { + snled27351_write_register(addr, i, current_tune_reg_list[i]); + } + + // Enable LEDs ON/OFF + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); + for (int i = 0; i < SNLED27351_LED_CONTROL_ON_OFF_LENGTH; i++) { + snled27351_write_register(addr, i, 0xFF); + } + + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to normal mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); +} + +void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { + snled27351_led_t led; + if (index >= 0 && index < SNLED27351_LED_COUNT) { + memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led)); + + if (g_pwm_buffer[led.driver][led.r] == red && g_pwm_buffer[led.driver][led.g] == green && g_pwm_buffer[led.driver][led.b] == blue) { + return; + } + 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 snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { + for (int i = 0; i < SNLED27351_LED_COUNT; i++) { + snled27351_set_color(i, red, green, blue); + } +} + +void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue) { + snled27351_led_t led; + memcpy_P(&led, (&g_snled27351_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 snled27351_update_pwm_buffers(uint8_t addr, uint8_t index) { + if (g_pwm_buffer_update_required[index]) { + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_PWM); + + // If any of the transactions fail we risk writing dirty PG0, + // refresh page 0 just in case. + if (!snled27351_write_pwm_buffer(addr, g_pwm_buffer[index])) { + g_led_control_registers_update_required[index] = true; + } + } + g_pwm_buffer_update_required[index] = false; +} + +void snled27351_update_led_control_registers(uint8_t addr, uint8_t index) { + if (g_led_control_registers_update_required[index]) { + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_LED_CONTROL); + for (int i = 0; i < SNLED27351_LED_CONTROL_REGISTER_COUNT; i++) { + snled27351_write_register(addr, i, g_led_control_registers[index][i]); + } + } + g_led_control_registers_update_required[index] = false; +} + +void snled27351_flush(void) { + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_1, 0); +#if defined(SNLED27351_I2C_ADDRESS_2) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_2, 1); +# if defined(SNLED27351_I2C_ADDRESS_3) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_3, 2); +# if defined(SNLED27351_I2C_ADDRESS_4) + snled27351_update_pwm_buffers(SNLED27351_I2C_ADDRESS_4, 3); +# endif +# endif +#endif +} + +void snled27351_sw_return_normal(uint8_t addr) { + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to normal mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL); +} + +void snled27351_sw_shutdown(uint8_t addr) { + // Select to function page + snled27351_write_register(addr, SNLED27351_REG_COMMAND, SNLED27351_COMMAND_FUNCTION); + // Setting LED driver to shutdown mode + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN, SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN); + // Write SW Sleep Register + snled27351_write_register(addr, SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP, SNLED27351_SOFTWARE_SLEEP_ENABLE); +} diff --git a/drivers/led/snled27351.h b/drivers/led/snled27351.h new file mode 100644 index 000000000000..77337f177b77 --- /dev/null +++ b/drivers/led/snled27351.h @@ -0,0 +1,394 @@ +/* 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" +#include "util.h" + +// ======== DEPRECATED DEFINES - DO NOT USE ======== +#ifdef DRIVER_ADDR_1 +# define SNLED27351_I2C_ADDRESS_1 DRIVER_ADDR_1 +#endif +#ifdef DRIVER_ADDR_2 +# define SNLED27351_I2C_ADDRESS_2 DRIVER_ADDR_2 +#endif +#ifdef DRIVER_ADDR_3 +# define SNLED27351_I2C_ADDRESS_3 DRIVER_ADDR_3 +#endif +#ifdef DRIVER_ADDR_4 +# define SNLED27351_I2C_ADDRESS_4 DRIVER_ADDR_4 +#endif +#ifdef CKLED2001_TIMEOUT +# define SNLED27351_I2C_TIMEOUT CKLED2001_TIMEOUT +#endif +#ifdef CKLED2001_PERSISTENCE +# define SNLED27351_I2C_PERSISTENCE CKLED2001_PERSISTENCE +#endif +#ifdef PHASE_CHANNEL +# define SNLED27351_PHASE_CHANNEL PHASE_CHANNEL +#endif +#ifdef CKLED2001_CURRENT_TUNE +# define SNLED27351_CURRENT_TUNE CKLED2001_CURRENT_TUNE +#endif + +#define MSKPHASE_12CHANNEL SNLED27351_SCAN_PHASE_12_CHANNEL +#define MSKPHASE_11CHANNEL SNLED27351_SCAN_PHASE_11_CHANNEL +#define MSKPHASE_10CHANNEL SNLED27351_SCAN_PHASE_10_CHANNEL +#define MSKPHASE_9CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL +#define MSKPHASE_8CHANNEL SNLED27351_SCAN_PHASE_8_CHANNEL +#define MSKPHASE_7CHANNEL SNLED27351_SCAN_PHASE_7_CHANNEL +#define MSKPHASE_6CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL +#define MSKPHASE_5CHANNEL SNLED27351_SCAN_PHASE_5_CHANNEL +#define MSKPHASE_4CHANNEL SNLED27351_SCAN_PHASE_4_CHANNEL +#define MSKPHASE_3CHANNEL SNLED27351_SCAN_PHASE_3_CHANNEL +#define MSKPHASE_2CHANNEL SNLED27351_SCAN_PHASE_2_CHANNEL +#define MSKPHASE_1CHANNEL SNLED27351_SCAN_PHASE_1_CHANNEL + +#define ckled2001_led snled27351_led_t +#define g_ckled2001_leds g_snled27351_leds +// ======== + +#define SNLED27351_REG_COMMAND 0xFD +#define SNLED27351_COMMAND_LED_CONTROL 0x00 +#define SNLED27351_COMMAND_PWM 0x01 +#define SNLED27351_COMMAND_FUNCTION 0x03 +#define SNLED27351_COMMAND_CURRENT_TUNE 0x04 + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SHUTDOWN 0x00 +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_SHUTDOWN (0x0 << 0) +#define SNLED27351_SOFTWARE_SHUTDOWN_SSD_NORMAL (0x1 << 0) + +#define SNLED27351_FUNCTION_REG_ID 0x11 +#define SNLED27351_DRIVER_ID 0x8A + +#define SNLED27351_FUNCTION_REG_PULLDOWNUP 0x13 +#define SNLED27351_PULLDOWNUP_ALL_ENABLED 0xAA + +#define SNLED27351_FUNCTION_REG_SCAN_PHASE 0x14 +#define SNLED27351_SCAN_PHASE_12_CHANNEL 0x00 +#define SNLED27351_SCAN_PHASE_11_CHANNEL 0x01 +#define SNLED27351_SCAN_PHASE_10_CHANNEL 0x02 +#define SNLED27351_SCAN_PHASE_9_CHANNEL 0x03 +#define SNLED27351_SCAN_PHASE_8_CHANNEL 0x04 +#define SNLED27351_SCAN_PHASE_7_CHANNEL 0x05 +#define SNLED27351_SCAN_PHASE_6_CHANNEL 0x06 +#define SNLED27351_SCAN_PHASE_5_CHANNEL 0x07 +#define SNLED27351_SCAN_PHASE_4_CHANNEL 0x08 +#define SNLED27351_SCAN_PHASE_3_CHANNEL 0x09 +#define SNLED27351_SCAN_PHASE_2_CHANNEL 0x0A +#define SNLED27351_SCAN_PHASE_1_CHANNEL 0x0B + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_1 0x15 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_1_PDP_ENABLE (0b1 << 2) + +#define SNLED27351_FUNCTION_REG_SLEW_RATE_CONTROL_MODE_2 0x16 +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_SSL_ENABLE (0b1 << 6) +#define SNLED27351_SLEW_RATE_CONTROL_MODE_2_DSL_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_ENABLE 0x17 +#define SNLED27351_OPEN_SHORT_ENABLE_SDS_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_ENABLE_ODS_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_DUTY 0x18 + +#define SNLED27351_FUNCTION_REG_OPEN_SHORT_FLAG 0x19 +#define SNLED27351_OPEN_SHORT_FLAG_OSINT_ENABLE (0b1 << 6) +#define SNLED27351_OPEN_SHORT_FLAG_ODINT_ENABLE (0b1 << 7) + +#define SNLED27351_FUNCTION_REG_SOFTWARE_SLEEP 0x1A +#define SNLED27351_SOFTWARE_SLEEP_ENABLE (0b1 << 1) + +// LED Control Registers +#define SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR 0x0 +#define SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR 0x17 +#define SNLED27351_LED_CONTROL_ON_OFF_LENGTH ((SNLED27351_LED_CONTROL_ON_OFF_LAST_ADDR - SNLED27351_LED_CONTROL_ON_OFF_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR 0x18 +#define SNLED27351_LED_CONTROL_OPEN_LAST_ADDR 0x2F +#define SNLED27351_LED_CONTROL_OPEN_LENGTH ((SNLED27351_LED_CONTROL_OPEN_LAST_ADDR - SNLED27351_LED_CONTROL_OPEN_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR 0x30 +#define SNLED27351_LED_CONTROL_SHORT_LAST_ADDR 0x47 +#define SNLED27351_LED_CONTROL_SHORT_LENGTH ((SNLED27351_LED_CONTROL_SHORT_LAST_ADDR - SNLED27351_LED_CONTROL_SHORT_FIRST_ADDR) + 1) + +#define SNLED27351_LED_CONTROL_PAGE_LENGTH 0x48 + +// LED Control Registers +#define SNLED27351_LED_PWM_FIRST_ADDR 0x00 +#define SNLED27351_LED_PWM_LAST_ADDR 0xBF +#define SNLED27351_LED_PWM_LENGTH 0xC0 + +// Current Tune Registers +#define SNLED27351_LED_CURRENT_TUNE_FIRST_ADDR 0x00 +#define SNLED27351_LED_CURRENT_TUNE_LAST_ADDR 0x0B +#define SNLED27351_LED_CURRENT_TUNE_LENGTH 0x0C + +#define SNLED27351_I2C_ADDRESS_GND 0x74 +#define SNLED27351_I2C_ADDRESS_SCL 0x75 +#define SNLED27351_I2C_ADDRESS_SDA 0x76 +#define SNLED27351_I2C_ADDRESS_VDDIO 0x77 + +#if defined(RGB_MATRIX_SNLED27351) +# define SNLED27351_LED_COUNT RGB_MATRIX_LED_COUNT +#endif + +#if defined(SNLED27351_I2C_ADDRESS_4) +# define SNLED27351_DRIVER_COUNT 4 +#elif defined(SNLED27351_I2C_ADDRESS_3) +# define SNLED27351_DRIVER_COUNT 3 +#elif defined(SNLED27351_I2C_ADDRESS_2) +# define SNLED27351_DRIVER_COUNT 2 +#elif defined(SNLED27351_I2C_ADDRESS_1) +# define SNLED27351_DRIVER_COUNT 1 +#endif + +typedef struct snled27351_led_t { + uint8_t driver : 2; + uint8_t r; + uint8_t g; + uint8_t b; +} PACKED snled27351_led_t; + +extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT]; + +void snled27351_init_drivers(void); +void snled27351_init(uint8_t addr); +bool snled27351_write_register(uint8_t addr, uint8_t reg, uint8_t data); +bool snled27351_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer); + +void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue); +void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue); + +void snled27351_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 snled27351_update_pwm_buffers(uint8_t addr, uint8_t index); +void snled27351_update_led_control_registers(uint8_t addr, uint8_t index); + +void snled27351_flush(void); + +void snled27351_sw_return_normal(uint8_t addr); +void snled27351_sw_shutdown(uint8_t addr); + +#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 diff --git a/drivers/oled/oled_driver.c b/drivers/oled/oled_driver.c index 8ff6e0426cb9..4a2121cd7c5c 100644 --- a/drivers/oled/oled_driver.c +++ b/drivers/oled/oled_driver.c @@ -19,6 +19,9 @@ along with this program. If not, see . # include "spi_master.h" #elif defined(OLED_TRANSPORT_I2C) # include "i2c_master.h" +# if defined(USE_I2C) && defined(SPLIT_KEYBOARD) +# include "keyboard.h" +# endif #endif #include "oled_driver.h" #include OLED_FONT_H @@ -448,7 +451,7 @@ static void rotate_90(const uint8_t *src, uint8_t *dest) { } } -void oled_render(void) { +void oled_render_dirty(bool all) { // Do we have work to do? oled_dirty &= OLED_ALL_BLOCKS_MASK; if (!oled_dirty || !oled_initialized || oled_scrolling) { @@ -460,7 +463,7 @@ void oled_render(void) { uint8_t update_start = 0; uint8_t num_processed = 0; - while (oled_dirty && num_processed++ < OLED_UPDATE_PROCESS_LIMIT) { // render all dirty blocks (up to the configured limit) + while (oled_dirty && (num_processed++ < OLED_UPDATE_PROCESS_LIMIT || all)) { // render all dirty blocks (up to the configured limit) // Find next dirty block while (!(oled_dirty & ((OLED_BLOCK_TYPE)1 << update_start))) { ++update_start; diff --git a/drivers/oled/oled_driver.h b/drivers/oled/oled_driver.h index 627a3da0ba59..c3db7e6d977d 100644 --- a/drivers/oled/oled_driver.h +++ b/drivers/oled/oled_driver.h @@ -353,20 +353,24 @@ 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 void oled_clear(void); -// Renders the dirty chunks of the buffer to oled display -void oled_render(void); +// Alias to oled_render_dirty to avoid a change in api. +#define oled_render() oled_render_dirty(false) + +// Renders all dirty blocks to the display at one time or a subset depending on the value of +// all. +void oled_render_dirty(bool all); // Moves cursor to character position indicated by column and line, wraps if out of bounds // Max column denoted by 'oled_max_chars()' and max lines by 'oled_max_lines()' functions void oled_set_cursor(uint8_t col, uint8_t line); // Advances the cursor to the next page, writing ' ' if true -// Wraps to the begining when out of bounds +// Wraps to the beginning when out of bounds void oled_advance_page(bool clearPageRemainder); // Moves the cursor forward 1 character length // Advance page if there is not enough room for the next character -// Wraps to the begining when out of bounds +// Wraps to the beginning when out of bounds void oled_advance_char(void); // Writes a single character to the buffer at current cursor position @@ -433,10 +437,10 @@ bool oled_off(void); // not bool is_oled_on(void); -// Sets the brightness of the display +// Sets the brightness level of the display uint8_t oled_set_brightness(uint8_t level); -// Gets the current brightness of the display +// Gets the current brightness level of the display uint8_t oled_get_brightness(void); // Basically it's oled_render, but with timeout management and oled_task_user calling! @@ -454,16 +458,16 @@ void oled_scroll_set_area(uint8_t start_line, uint8_t end_line); // Sets scroll speed, 0-7, fastest to slowest. Default is three. // Does not take effect until scrolling is either started or restarted // the ssd1306 supports 8 speeds with the delay -// listed below betwen each frame of the scrolling effect +// listed below between each frame of the scrolling effect // 0=2, 1=3, 2=4, 3=5, 4=25, 5=64, 6=128, 7=256 void oled_scroll_set_speed(uint8_t speed); -// Scrolls the entire display right +// Begin scrolling the entire display right // Returns true if the screen was scrolling or starts scrolling // NOTE: display contents cannot be changed while scrolling bool oled_scroll_right(void); -// Scrolls the entire display left +// Begin scrolling the entire display left // Returns true if the screen was scrolling or starts scrolling // NOTE: display contents cannot be changed while scrolling bool oled_scroll_left(void); diff --git a/drivers/painter/comms/qp_comms_dummy.c b/drivers/painter/comms/qp_comms_dummy.c new file mode 100644 index 000000000000..2ed49d223277 --- /dev/null +++ b/drivers/painter/comms/qp_comms_dummy.c @@ -0,0 +1,34 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#ifdef QUANTUM_PAINTER_DUMMY_COMMS_ENABLE + +# include "qp_comms_dummy.h" + +static bool dummy_comms_init(painter_device_t device) { + // No-op. + return true; +} + +static bool dummy_comms_start(painter_device_t device) { + // No-op. + return true; +} + +static void dummy_comms_stop(painter_device_t device) { + // No-op. +} + +uint32_t dummy_comms_send(painter_device_t device, const void *data, uint32_t byte_count) { + // No-op. + return byte_count; +} + +painter_comms_vtable_t dummy_comms_vtable = { + // These are all effective no-op's because they're not actually needed. + .comms_init = dummy_comms_init, + .comms_start = dummy_comms_start, + .comms_stop = dummy_comms_stop, + .comms_send = dummy_comms_send}; + +#endif // QUANTUM_PAINTER_DUMMY_COMMS_ENABLE diff --git a/drivers/painter/comms/qp_comms_dummy.h b/drivers/painter/comms/qp_comms_dummy.h new file mode 100644 index 000000000000..b2d5d6eea5c2 --- /dev/null +++ b/drivers/painter/comms/qp_comms_dummy.h @@ -0,0 +1,11 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#ifdef QUANTUM_PAINTER_DUMMY_COMMS_ENABLE + +# include "qp_internal.h" + +extern painter_comms_vtable_t dummy_comms_vtable; + +#endif // QUANTUM_PAINTER_DUMMY_COMMS_ENABLE diff --git a/drivers/painter/comms/qp_comms_i2c.c b/drivers/painter/comms/qp_comms_i2c.c new file mode 100644 index 000000000000..ec45ddfb3b64 --- /dev/null +++ b/drivers/painter/comms/qp_comms_i2c.c @@ -0,0 +1,94 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#ifdef QUANTUM_PAINTER_I2C_ENABLE + +# include "i2c_master.h" +# include "qp_comms_i2c.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Helpers + +static uint32_t qp_comms_i2c_send_raw(painter_device_t device, const void *data, uint32_t byte_count) { + painter_driver_t * driver = (painter_driver_t *)device; + qp_comms_i2c_config_t *comms_config = (qp_comms_i2c_config_t *)driver->comms_config; + i2c_status_t res = i2c_transmit(comms_config->chip_address << 1, data, byte_count, I2C_TIMEOUT); + if (res < 0) { + return 0; + } + return byte_count; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Base I2C support + +bool qp_comms_i2c_init(painter_device_t device) { + i2c_init(); + return true; +} + +bool qp_comms_i2c_start(painter_device_t device) { + painter_driver_t * driver = (painter_driver_t *)device; + qp_comms_i2c_config_t *comms_config = (qp_comms_i2c_config_t *)driver->comms_config; + return i2c_start(comms_config->chip_address << 1) == I2C_STATUS_SUCCESS; +} + +uint32_t qp_comms_i2c_send_data(painter_device_t device, const void *data, uint32_t byte_count) { + return qp_comms_i2c_send_raw(device, data, byte_count); +} + +void qp_comms_i2c_stop(painter_device_t device) { + i2c_stop(); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Command+Data I2C support + +static const uint8_t cmd_byte = 0x00; +static const uint8_t data_byte = 0x40; + +void qp_comms_i2c_cmddata_send_command(painter_device_t device, uint8_t cmd) { + uint8_t buf[2] = {cmd_byte, cmd}; + qp_comms_i2c_send_raw(device, &buf, 2); +} + +uint32_t qp_comms_i2c_cmddata_send_data(painter_device_t device, const void *data, uint32_t byte_count) { + uint8_t buf[1 + byte_count]; + buf[0] = data_byte; + memcpy(&buf[1], data, byte_count); + if (qp_comms_i2c_send_raw(device, buf, sizeof(buf)) != sizeof(buf)) { + return 0; + } + return byte_count; +} + +void qp_comms_i2c_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { + uint8_t buf[32]; + for (size_t i = 0; i < sequence_len;) { + uint8_t command = sequence[i]; + uint8_t delay = sequence[i + 1]; + uint8_t num_bytes = sequence[i + 2]; + buf[0] = cmd_byte; + buf[1] = command; + memcpy(&buf[2], &sequence[i + 3], num_bytes); + qp_comms_i2c_send_raw(device, buf, num_bytes + 2); + if (delay > 0) { + wait_ms(delay); + } + i += (3 + num_bytes); + } +} + +const painter_comms_with_command_vtable_t i2c_comms_cmddata_vtable = { + .base = + { + .comms_init = qp_comms_i2c_init, + .comms_start = qp_comms_i2c_start, + .comms_send = qp_comms_i2c_cmddata_send_data, + .comms_stop = qp_comms_i2c_stop, + }, + .send_command = qp_comms_i2c_cmddata_send_command, + .bulk_command_sequence = qp_comms_i2c_bulk_command_sequence, +}; + +#endif // QUANTUM_PAINTER_I2C_ENABLE diff --git a/drivers/painter/comms/qp_comms_i2c.h b/drivers/painter/comms/qp_comms_i2c.h new file mode 100644 index 000000000000..70083d6526f2 --- /dev/null +++ b/drivers/painter/comms/qp_comms_i2c.h @@ -0,0 +1,28 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#ifdef QUANTUM_PAINTER_I2C_ENABLE + +# include + +# include "gpio.h" +# include "qp_internal.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Base I2C support + +typedef struct qp_comms_i2c_config_t { + uint8_t chip_address; +} qp_comms_i2c_config_t; + +bool qp_comms_i2c_init(painter_device_t device); +bool qp_comms_i2c_start(painter_device_t device); +uint32_t qp_comms_i2c_send_data(painter_device_t device, const void* data, uint32_t byte_count); +void qp_comms_i2c_stop(painter_device_t device); + +extern const painter_comms_with_command_vtable_t i2c_comms_cmddata_vtable; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#endif // QUANTUM_PAINTER_I2C_ENABLE diff --git a/drivers/painter/comms/qp_comms_spi.c b/drivers/painter/comms/qp_comms_spi.c index 7534e844d838..9f52bc7d1f30 100644 --- a/drivers/painter/comms/qp_comms_spi.c +++ b/drivers/painter/comms/qp_comms_spi.c @@ -105,13 +105,21 @@ void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd) { } void qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) { + painter_driver_t * driver = (painter_driver_t *)device; + qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config; for (size_t i = 0; i < sequence_len;) { uint8_t command = sequence[i]; uint8_t delay = sequence[i + 1]; uint8_t num_bytes = sequence[i + 2]; qp_comms_spi_dc_reset_send_command(device, command); if (num_bytes > 0) { - qp_comms_spi_dc_reset_send_data(device, &sequence[i + 3], num_bytes); + if (comms_config->command_params_uses_command_pin) { + for (uint8_t j = 0; j < num_bytes; j++) { + qp_comms_spi_dc_reset_send_command(device, sequence[i + 3 + j]); + } + } else { + qp_comms_spi_dc_reset_send_data(device, &sequence[i + 3], num_bytes); + } } if (delay > 0) { wait_ms(delay); diff --git a/drivers/painter/comms/qp_comms_spi.h b/drivers/painter/comms/qp_comms_spi.h index b3da86d5733f..ff323c3c10e6 100644 --- a/drivers/painter/comms/qp_comms_spi.h +++ b/drivers/painter/comms/qp_comms_spi.h @@ -1,6 +1,5 @@ // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #ifdef QUANTUM_PAINTER_SPI_ENABLE @@ -36,6 +35,7 @@ typedef struct qp_comms_spi_dc_reset_config_t { qp_comms_spi_config_t spi_config; pin_t dc_pin; pin_t reset_pin; + bool command_params_uses_command_pin; // keep D/C held low when sending command sequences for data bytes } qp_comms_spi_dc_reset_config_t; void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd); diff --git a/drivers/painter/gc9a01/qp_gc9a01.c b/drivers/painter/gc9a01/qp_gc9a01.c index a2eb2cf57c03..fe6fa7a9d024 100644 --- a/drivers/painter/gc9a01/qp_gc9a01.c +++ b/drivers/painter/gc9a01/qp_gc9a01.c @@ -2,7 +2,6 @@ // Copyright 2023 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later -#include #include "qp_internal.h" #include "qp_comms.h" #include "qp_gc9a01.h" @@ -135,13 +134,14 @@ painter_device_t qp_gc9a01_make_spi_device(uint16_t panel_width, uint16_t panel_ driver->base.offset_y = 0; // SPI and other pin configuration - driver->base.comms_config = &driver->spi_dc_reset_config; - driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; - driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; - driver->spi_dc_reset_config.spi_config.lsb_first = false; - driver->spi_dc_reset_config.spi_config.mode = spi_mode; - driver->spi_dc_reset_config.dc_pin = dc_pin; - driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->base.comms_config = &driver->spi_dc_reset_config; + driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->spi_dc_reset_config.spi_config.lsb_first = false; + driver->spi_dc_reset_config.spi_config.mode = spi_mode; + driver->spi_dc_reset_config.dc_pin = dc_pin; + driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->spi_dc_reset_config.command_params_uses_command_pin = false; if (!qp_internal_register_device((painter_device_t)driver)) { memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t)); diff --git a/drivers/painter/gc9a01/qp_gc9a01.h b/drivers/painter/gc9a01/qp_gc9a01.h index e2b193956405..31a3804b504f 100644 --- a/drivers/painter/gc9a01/qp_gc9a01.h +++ b/drivers/painter/gc9a01/qp_gc9a01.h @@ -1,6 +1,5 @@ // Copyright 2021 Paul Cotter (@gr1mr3aver) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #include "gpio.h" diff --git a/drivers/painter/gc9a01/qp_gc9a01_opcodes.h b/drivers/painter/gc9a01/qp_gc9a01_opcodes.h index 6ff4efe7a8ac..828e42752b0c 100644 --- a/drivers/painter/gc9a01/qp_gc9a01_opcodes.h +++ b/drivers/painter/gc9a01/qp_gc9a01_opcodes.h @@ -1,6 +1,5 @@ // Copyright 2021 Paul Cotter (@gr1mr3aver) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/generic/qp_rgb565_surface.c b/drivers/painter/generic/qp_rgb565_surface.c deleted file mode 100644 index 9c283e06872d..000000000000 --- a/drivers/painter/generic/qp_rgb565_surface.c +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright 2022 Nick Brassel (@tzarc) -// SPDX-License-Identifier: GPL-2.0-or-later -#include "color.h" -#include "qp_rgb565_surface.h" -#include "qp_draw.h" - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Common - -// Device definition -typedef struct rgb565_surface_painter_device_t { - painter_driver_t base; // must be first, so it can be cast to/from the painter_device_t* type - - // The target buffer - uint16_t *buffer; - - // Manually manage the viewport for streaming pixel data to the display - uint16_t viewport_l; - uint16_t viewport_t; - uint16_t viewport_r; - uint16_t viewport_b; - - // Current write location to the display when streaming pixel data - uint16_t pixdata_x; - uint16_t pixdata_y; - - // Maintain a dirty region so we can stream only what we need - bool is_dirty; - uint16_t dirty_l; - uint16_t dirty_t; - uint16_t dirty_r; - uint16_t dirty_b; - -} rgb565_surface_painter_device_t; - -// Driver storage -rgb565_surface_painter_device_t surface_drivers[RGB565_SURFACE_NUM_DEVICES] = {0}; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Helpers - -static inline void increment_pixdata_location(rgb565_surface_painter_device_t *surface) { - // Increment the X-position - surface->pixdata_x++; - - // If the x-coord has gone past the right-side edge, loop it back around and increment the y-coord - if (surface->pixdata_x > surface->viewport_r) { - surface->pixdata_x = surface->viewport_l; - surface->pixdata_y++; - } - - // If the y-coord has gone past the bottom, loop it back to the top - if (surface->pixdata_y > surface->viewport_b) { - surface->pixdata_y = surface->viewport_t; - } -} - -static inline void setpixel(rgb565_surface_painter_device_t *surface, uint16_t x, uint16_t y, uint16_t rgb565) { - // Skip messing with the dirty info if the original value already matches - if (surface->buffer[y * surface->base.panel_width + x] != rgb565) { - // Maintain dirty region - if (surface->dirty_l > x) { - surface->dirty_l = x; - } - if (surface->dirty_r < x) { - surface->dirty_r = x; - } - if (surface->dirty_t > y) { - surface->dirty_t = y; - } - if (surface->dirty_b < y) { - surface->dirty_b = y; - } - - // Always dirty after a setpixel - surface->is_dirty = true; - - // Update the pixel data in the buffer - surface->buffer[y * surface->base.panel_width + x] = rgb565; - } -} - -static inline void append_pixel(rgb565_surface_painter_device_t *surface, uint16_t rgb565) { - setpixel(surface, surface->pixdata_x, surface->pixdata_y, rgb565); - increment_pixdata_location(surface); -} - -static inline void stream_pixdata(rgb565_surface_painter_device_t *surface, const uint16_t *data, uint32_t native_pixel_count) { - for (uint32_t pixel_counter = 0; pixel_counter < native_pixel_count; ++pixel_counter) { - append_pixel(surface, data[pixel_counter]); - } -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Driver vtable - -static bool qp_rgb565_surface_init(painter_device_t device, painter_rotation_t rotation) { - painter_driver_t * driver = (painter_driver_t *)device; - rgb565_surface_painter_device_t *surface = (rgb565_surface_painter_device_t *)driver; - memset(surface->buffer, 0, driver->panel_width * driver->panel_height * driver->native_bits_per_pixel / 8); - return true; -} - -static bool qp_rgb565_surface_power(painter_device_t device, bool power_on) { - // No-op. - return true; -} - -static bool qp_rgb565_surface_clear(painter_device_t device) { - painter_driver_t *driver = (painter_driver_t *)device; - driver->driver_vtable->init(device, driver->rotation); // Re-init the surface - return true; -} - -static bool qp_rgb565_surface_flush(painter_device_t device) { - painter_driver_t * driver = (painter_driver_t *)device; - rgb565_surface_painter_device_t *surface = (rgb565_surface_painter_device_t *)driver; - surface->dirty_l = surface->dirty_t = UINT16_MAX; - surface->dirty_r = surface->dirty_b = 0; - surface->is_dirty = false; - return true; -} - -static bool qp_rgb565_surface_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) { - painter_driver_t * driver = (painter_driver_t *)device; - rgb565_surface_painter_device_t *surface = (rgb565_surface_painter_device_t *)driver; - - // Set the viewport locations - surface->viewport_l = left; - surface->viewport_t = top; - surface->viewport_r = right; - surface->viewport_b = bottom; - - // Reset the write location to the top left - surface->pixdata_x = left; - surface->pixdata_y = top; - return true; -} - -// Stream pixel data to the current write position in GRAM -static bool qp_rgb565_surface_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) { - painter_driver_t * driver = (painter_driver_t *)device; - rgb565_surface_painter_device_t *surface = (rgb565_surface_painter_device_t *)driver; - stream_pixdata(surface, (const uint16_t *)pixel_data, native_pixel_count); - return true; -} - -// Pixel colour conversion -static bool qp_rgb565_surface_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) { - for (int16_t i = 0; i < palette_size; ++i) { - RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v}); - uint16_t rgb565 = (((uint16_t)rgb.r) >> 3) << 11 | (((uint16_t)rgb.g) >> 2) << 5 | (((uint16_t)rgb.b) >> 3); - palette[i].rgb565 = __builtin_bswap16(rgb565); - } - return true; -} - -// Append pixels to the target location, keyed by the pixel index -static bool qp_rgb565_surface_append_pixels_rgb565(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) { - uint16_t *buf = (uint16_t *)target_buffer; - for (uint32_t i = 0; i < pixel_count; ++i) { - buf[pixel_offset + i] = palette[palette_indices[i]].rgb565; - } - return true; -} - -// Append data to the target location -static bool qp_rgb565_surface_append_pixdata(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) { - target_buffer[pixdata_offset] = pixdata_byte; - return true; -} - -const painter_driver_vtable_t rgb565_surface_driver_vtable = { - .init = qp_rgb565_surface_init, - .power = qp_rgb565_surface_power, - .clear = qp_rgb565_surface_clear, - .flush = qp_rgb565_surface_flush, - .pixdata = qp_rgb565_surface_pixdata, - .viewport = qp_rgb565_surface_viewport, - .palette_convert = qp_rgb565_surface_palette_convert_rgb565_swapped, - .append_pixels = qp_rgb565_surface_append_pixels_rgb565, - .append_pixdata = qp_rgb565_surface_append_pixdata, -}; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Comms vtable - -static bool qp_rgb565_surface_comms_init(painter_device_t device) { - // No-op. - return true; -} -static bool qp_rgb565_surface_comms_start(painter_device_t device) { - // No-op. - return true; -} -static void qp_rgb565_surface_comms_stop(painter_device_t device) { - // No-op. -} -uint32_t qp_rgb565_surface_comms_send(painter_device_t device, const void *data, uint32_t byte_count) { - // No-op. - return byte_count; -} - -painter_comms_vtable_t rgb565_surface_driver_comms_vtable = { - // These are all effective no-op's because they're not actually needed. - .comms_init = qp_rgb565_surface_comms_init, - .comms_start = qp_rgb565_surface_comms_start, - .comms_stop = qp_rgb565_surface_comms_stop, - .comms_send = qp_rgb565_surface_comms_send}; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Factory function for creating a handle to an rgb565 surface - -painter_device_t qp_rgb565_make_surface(uint16_t panel_width, uint16_t panel_height, void *buffer) { - for (uint32_t i = 0; i < RGB565_SURFACE_NUM_DEVICES; ++i) { - rgb565_surface_painter_device_t *driver = &surface_drivers[i]; - if (!driver->base.driver_vtable) { - driver->base.driver_vtable = &rgb565_surface_driver_vtable; - driver->base.comms_vtable = &rgb565_surface_driver_comms_vtable; - driver->base.native_bits_per_pixel = 16; // RGB565 - driver->base.panel_width = panel_width; - driver->base.panel_height = panel_height; - driver->base.rotation = QP_ROTATION_0; - driver->base.offset_x = 0; - driver->base.offset_y = 0; - driver->buffer = (uint16_t *)buffer; - return (painter_device_t)driver; - } - } - return NULL; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Drawing routine to copy out the dirty region and send it to another device - -bool qp_rgb565_surface_draw(painter_device_t surface, painter_device_t display, uint16_t x, uint16_t y) { - painter_driver_t * surface_driver = (painter_driver_t *)surface; - rgb565_surface_painter_device_t *surface_handle = (rgb565_surface_painter_device_t *)surface_driver; - - // If we're not dirty... we're done. - if (!surface_handle->is_dirty) { - return true; - } - - // Set the target drawing area - bool ok = qp_viewport(display, x + surface_handle->dirty_l, y + surface_handle->dirty_t, x + surface_handle->dirty_r, y + surface_handle->dirty_b); - if (!ok) { - return false; - } - - // Housekeeping of the amount of pixels to transfer - uint32_t total_pixel_count = QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE / sizeof(uint16_t); - uint32_t pixel_counter = 0; - uint16_t *target_buffer = (uint16_t *)qp_internal_global_pixdata_buffer; - - // Fill the global pixdata area so that we can start transferring to the panel - for (uint16_t y = surface_handle->dirty_t; y <= surface_handle->dirty_b; ++y) { - for (uint16_t x = surface_handle->dirty_l; x <= surface_handle->dirty_r; ++x) { - // Update the target buffer - target_buffer[pixel_counter++] = surface_handle->buffer[y * surface_handle->base.panel_width + x]; - - // If we've accumulated enough data, send it - if (pixel_counter == total_pixel_count) { - ok = qp_pixdata(display, qp_internal_global_pixdata_buffer, pixel_counter); - if (!ok) { - return false; - } - // Reset the counter - pixel_counter = 0; - } - } - } - - // If there's any leftover data, send it - if (pixel_counter > 0) { - ok = qp_pixdata(display, qp_internal_global_pixdata_buffer, pixel_counter); - if (!ok) { - return false; - } - } - - // Clear the dirty info for the surface - return qp_flush(surface); -} diff --git a/drivers/painter/generic/qp_rgb565_surface.h b/drivers/painter/generic/qp_rgb565_surface.h deleted file mode 100644 index 19e919bb913c..000000000000 --- a/drivers/painter/generic/qp_rgb565_surface.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2022 Nick Brassel (@tzarc) -// SPDX-License-Identifier: GPL-2.0-or-later -#include "qp_internal.h" - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Quantum Painter RGB565 surface configurables (add to your keyboard's config.h) - -#ifndef RGB565_SURFACE_NUM_DEVICES -/** - * @def This controls the maximum number of surface devices that Quantum Painter can use at any one time. - * Increasing this number allows for multiple framebuffers to be used. Each requires its own RAM allocation. - */ -# define RGB565_SURFACE_NUM_DEVICES 1 -#endif - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Forward declarations - -#ifdef QUANTUM_PAINTER_RGB565_SURFACE_ENABLE -/** - * Factory method for an RGB565 surface (aka framebuffer). - * - * @param panel_width[in] the width of the display panel - * @param panel_height[in] the height of the display panel - * @param buffer[in] pointer to a preallocated buffer of size `(sizeof(uint16_t) * panel_width * panel_height)` - * @return the device handle used with all drawing routines in Quantum Painter - */ -painter_device_t qp_rgb565_make_surface(uint16_t panel_width, uint16_t panel_height, void *buffer); - -/** - * Helper method to draw the dirty contents of the framebuffer to the target device. - * - * After successful completion, the dirty area is reset. - * - * @param surface[in] the surface to copy from - * @param display[in] the display to copy into - * @param x[in] the x-location of the original position of the framebuffer - * @param y[in] the y-location of the original position of the framebuffer - * @return whether the draw operation completed successfully - */ -bool qp_rgb565_surface_draw(painter_device_t surface, painter_device_t display, uint16_t x, uint16_t y); -#endif // QUANTUM_PAINTER_RGB565_SURFACE_ENABLE diff --git a/drivers/painter/generic/qp_surface.h b/drivers/painter/generic/qp_surface.h new file mode 100644 index 000000000000..a2917936492d --- /dev/null +++ b/drivers/painter/generic/qp_surface.h @@ -0,0 +1,67 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include "qp_internal.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Quantum Painter surface helpers + +// Helper for determining buffer size required for a surface +#define SURFACE_REQUIRED_BUFFER_BYTE_SIZE(w, h, bpp) ((((w) * (h) * (bpp)) + 7) / 8) + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Quantum Painter surface configurables (add to your keyboard's config.h) + +#ifndef SURFACE_NUM_DEVICES +/** + * @def This controls the maximum number of surface devices that Quantum Painter can use at any one time. + * Increasing this number allows for multiple framebuffers to be used. Each requires its own RAM allocation. + */ +# define SURFACE_NUM_DEVICES 1 +#endif + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Forward declarations + +#ifdef QUANTUM_PAINTER_SURFACE_ENABLE + +// Surface struct +struct surface_painter_device_t; +typedef struct surface_painter_device_t surface_painter_device_t; + +/** + * Factory method for an RGB565 surface (aka framebuffer). + * + * @param panel_width[in] the width of the display panel + * @param panel_height[in] the height of the display panel + * @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 16)` + * @return the device handle used with all drawing routines in Quantum Painter + */ +painter_device_t qp_make_rgb565_surface(uint16_t panel_width, uint16_t panel_height, void *buffer); + +/** + * Factory method for a 1bpp monochrome surface (aka framebuffer). + * + * @param panel_width[in] the width of the display panel + * @param panel_height[in] the height of the display panel + * @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 1)` + * @return the device handle used with all drawing routines in Quantum Painter + */ +painter_device_t qp_make_mono1bpp_surface(uint16_t panel_width, uint16_t panel_height, void *buffer); + +/** + * Helper method to draw the contents of the framebuffer to the target device. + * + * After successful completion, the dirty area is reset. + * + * @param surface[in] the surface to copy from + * @param target[in] the target device to copy into + * @param x[in] the x-location of the original position of the framebuffer + * @param y[in] the y-location of the original position of the framebuffer + * @param entire_surface[in] whether the entire surface should be drawn, instead of just the dirty region + * @return whether the draw operation completed successfully + */ +bool qp_surface_draw(painter_device_t surface, painter_device_t target, uint16_t x, uint16_t y, bool entire_surface); + +#endif // QUANTUM_PAINTER_SURFACE_ENABLE diff --git a/drivers/painter/generic/qp_surface_common.c b/drivers/painter/generic/qp_surface_common.c new file mode 100644 index 000000000000..2da96c73ac77 --- /dev/null +++ b/drivers/painter/generic/qp_surface_common.c @@ -0,0 +1,141 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "color.h" +#include "qp_draw.h" +#include "qp_surface_internal.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Driver storage + +surface_painter_device_t surface_drivers[SURFACE_NUM_DEVICES] = {0}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Helpers + +void qp_surface_increment_pixdata_location(surface_viewport_data_t *viewport) { + // Increment the X-position + viewport->pixdata_x++; + + // If the x-coord has gone past the right-side edge, loop it back around and increment the y-coord + if (viewport->pixdata_x > viewport->viewport_r) { + viewport->pixdata_x = viewport->viewport_l; + viewport->pixdata_y++; + } + + // If the y-coord has gone past the bottom, loop it back to the top + if (viewport->pixdata_y > viewport->viewport_b) { + viewport->pixdata_y = viewport->viewport_t; + } +} + +void qp_surface_update_dirty(surface_dirty_data_t *dirty, uint16_t x, uint16_t y) { + // Maintain dirty region + if (dirty->l > x) { + dirty->l = x; + dirty->is_dirty = true; + } + if (dirty->r < x) { + dirty->r = x; + dirty->is_dirty = true; + } + if (dirty->t > y) { + dirty->t = y; + dirty->is_dirty = true; + } + if (dirty->b < y) { + dirty->b = y; + dirty->is_dirty = true; + } +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Driver vtable + +bool qp_surface_init(painter_device_t device, painter_rotation_t rotation) { + painter_driver_t * driver = (painter_driver_t *)device; + surface_painter_device_t *surface = (surface_painter_device_t *)driver; + memset(surface->buffer, 0, SURFACE_REQUIRED_BUFFER_BYTE_SIZE(driver->panel_width, driver->panel_height, driver->native_bits_per_pixel)); + + surface->dirty.l = 0; + surface->dirty.t = 0; + surface->dirty.r = surface->base.panel_width - 1; + surface->dirty.b = surface->base.panel_height - 1; + surface->dirty.is_dirty = true; + + return true; +} + +bool qp_surface_power(painter_device_t device, bool power_on) { + // No-op. + return true; +} + +bool qp_surface_clear(painter_device_t device) { + painter_driver_t *driver = (painter_driver_t *)device; + driver->driver_vtable->init(device, driver->rotation); // Re-init the surface + return true; +} + +bool qp_surface_flush(painter_device_t device) { + painter_driver_t * driver = (painter_driver_t *)device; + surface_painter_device_t *surface = (surface_painter_device_t *)driver; + surface->dirty.l = surface->dirty.t = UINT16_MAX; + surface->dirty.r = surface->dirty.b = 0; + surface->dirty.is_dirty = false; + return true; +} + +bool qp_surface_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) { + painter_driver_t * driver = (painter_driver_t *)device; + surface_painter_device_t *surface = (surface_painter_device_t *)driver; + + // Set the viewport locations + surface->viewport.viewport_l = left; + surface->viewport.viewport_t = top; + surface->viewport.viewport_r = right; + surface->viewport.viewport_b = bottom; + + // Reset the write location to the top left + surface->viewport.pixdata_x = left; + surface->viewport.pixdata_y = top; + return true; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Drawing routine to copy out the dirty region and send it to another device + +bool qp_surface_draw(painter_device_t surface, painter_device_t target, uint16_t x, uint16_t y, bool entire_surface) { + painter_driver_t * surface_driver = (painter_driver_t *)surface; + surface_painter_device_t *surface_handle = (surface_painter_device_t *)surface_driver; + painter_driver_t * target_driver = (painter_driver_t *)target; + + // If we're not dirty... we're done. + if (!surface_handle->dirty.is_dirty) { + qp_dprintf("qp_surface_draw: ok (not dirty, skipping)\n"); + return true; + } + + // If we have incompatible bit depths, drop out + if (surface_driver->native_bits_per_pixel != target_driver->native_bits_per_pixel) { + qp_dprintf("qp_surface_draw: fail (incompatible bpp: surface=%d, target=%d)\n", (int)surface_driver->native_bits_per_pixel, (int)target_driver->native_bits_per_pixel); + return false; + } + + // Offload to the pixdata transfer function + surface_painter_driver_vtable_t *vtable = (surface_painter_driver_vtable_t *)surface_driver->driver_vtable; + bool ok = vtable->target_pixdata_transfer(surface_driver, target_driver, x, y, entire_surface); + if (!ok) { + qp_dprintf("qp_surface_draw: fail (could not transfer pixel data)\n"); + return false; + } + + // Clear the dirty info for the surface + ok = qp_flush(surface); + if (!ok) { + qp_dprintf("qp_surface_draw: fail (could not flush)\n"); + return false; + } + qp_dprintf("qp_surface_draw: ok\n"); + return true; +} diff --git a/drivers/painter/generic/qp_surface_internal.h b/drivers/painter/generic/qp_surface_internal.h new file mode 100644 index 000000000000..71f82e924d14 --- /dev/null +++ b/drivers/painter/generic/qp_surface_internal.h @@ -0,0 +1,119 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#ifdef QUANTUM_PAINTER_SURFACE_ENABLE + +# include "qp_surface.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Internal declarations + +// Surface vtable +typedef struct surface_painter_driver_vtable_t { + painter_driver_vtable_t base; // must be first, so it can be cast to/from the painter_driver_vtable_t* type + + bool (*target_pixdata_transfer)(painter_driver_t *surface_driver, painter_driver_t *target_driver, uint16_t x, uint16_t y, bool entire_surface); +} surface_painter_driver_vtable_t; + +typedef struct surface_dirty_data_t { + bool is_dirty; + uint16_t l; + uint16_t t; + uint16_t r; + uint16_t b; +} surface_dirty_data_t; + +typedef struct surface_viewport_data_t { + // Manually manage the viewport for streaming pixel data to the display + uint16_t viewport_l; + uint16_t viewport_t; + uint16_t viewport_r; + uint16_t viewport_b; + + // Current write location to the display when streaming pixel data + uint16_t pixdata_x; + uint16_t pixdata_y; +} surface_viewport_data_t; + +// Surface struct +typedef struct surface_painter_device_t { + painter_driver_t base; // must be first, so it can be cast to/from the painter_device_t* type + + // The target buffer + union { + void * buffer; + uint8_t * u8buffer; + uint16_t *u16buffer; + }; + + // Manually manage the viewport for streaming pixel data to the display + surface_viewport_data_t viewport; + + // Maintain a dirty region so we can stream only what we need + surface_dirty_data_t dirty; +} surface_painter_device_t; + +/** + * Factory method for an RGB565 surface (aka framebuffer). Accepts an external device table. + * + * @param device_table[in] the table of devices to use for instantiation + * @param device_table_len[in] the length of the table of devices + * @param panel_width[in] the width of the display panel + * @param panel_height[in] the height of the display panel + * @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 16)` + * @return the device handle used with all drawing routines in Quantum Painter + */ +painter_device_t qp_make_rgb565_surface_advanced(surface_painter_device_t *device_table, size_t device_table_len, uint16_t panel_width, uint16_t panel_height, void *buffer); + +/** + * Factory method for a 1bpp monochrome surface (aka framebuffer). + * + * @param device_table[in] the table of devices to use for instantiation + * @param device_table_len[in] the length of the table of devices + * @param panel_width[in] the width of the display panel + * @param panel_height[in] the height of the display panel + * @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 16)` + * @return the device handle used with all drawing routines in Quantum Painter + */ +painter_device_t qp_make_mono1bpp_surface_advanced(surface_painter_device_t *device_table, size_t device_table_len, uint16_t panel_width, uint16_t panel_height, void *buffer); + +// Driver storage +extern surface_painter_device_t surface_drivers[SURFACE_NUM_DEVICES]; + +// Surface common APIs +bool qp_surface_init(painter_device_t device, painter_rotation_t rotation); +bool qp_surface_power(painter_device_t device, bool power_on); +bool qp_surface_clear(painter_device_t device); +bool qp_surface_flush(painter_device_t device); +bool qp_surface_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom); +void qp_surface_increment_pixdata_location(surface_viewport_data_t *viewport); +void qp_surface_update_dirty(surface_dirty_data_t *dirty, uint16_t x, uint16_t y); + +#endif // QUANTUM_PAINTER_SURFACE_ENABLE + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Factory functions for creating a handle to a surface + +#define SURFACE_FACTORY_FUNCTION_IMPL(function_name, vtable, bpp) \ + painter_device_t(function_name##_advanced)(surface_painter_device_t * device_table, size_t device_table_len, uint16_t panel_width, uint16_t panel_height, void *buffer) { \ + for (uint32_t i = 0; i < device_table_len; ++i) { \ + surface_painter_device_t *driver = &device_table[i]; \ + if (!driver->base.driver_vtable) { \ + driver->base.driver_vtable = (painter_driver_vtable_t *)&(vtable); \ + driver->base.native_bits_per_pixel = (bpp); \ + driver->base.comms_vtable = &dummy_comms_vtable; \ + driver->base.panel_width = panel_width; \ + driver->base.panel_height = panel_height; \ + driver->base.rotation = QP_ROTATION_0; \ + driver->base.offset_x = 0; \ + driver->base.offset_y = 0; \ + driver->buffer = buffer; \ + return (painter_device_t)driver; \ + } \ + } \ + return NULL; \ + } \ + painter_device_t(function_name)(uint16_t panel_width, uint16_t panel_height, void *buffer) { \ + return (function_name##_advanced)(surface_drivers, SURFACE_NUM_DEVICES, panel_width, panel_height, buffer); \ + } diff --git a/drivers/painter/generic/qp_surface_mono1bpp.c b/drivers/painter/generic/qp_surface_mono1bpp.c new file mode 100644 index 000000000000..c66b56519da4 --- /dev/null +++ b/drivers/painter/generic/qp_surface_mono1bpp.c @@ -0,0 +1,113 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#ifdef QUANTUM_PAINTER_SURFACE_ENABLE + +# include "color.h" +# include "qp_draw.h" +# include "qp_surface_internal.h" +# include "qp_comms_dummy.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Surface driver impl: mono1bpp + +static inline void setpixel_mono1bpp(surface_painter_device_t *surface, uint16_t x, uint16_t y, bool mono_pixel) { + uint16_t w = surface->base.panel_width; + uint16_t h = surface->base.panel_height; + + // Drop out if it's off-screen + if (x >= w || y >= h) { + return; + } + + // Figure out which location needs to be updated + uint32_t pixel_num = y * w + x; + uint32_t byte_offset = pixel_num / 8; + uint8_t bit_offset = pixel_num % 8; + bool curr_val = (surface->u8buffer[byte_offset] & (1 << bit_offset)) ? true : false; + + // Skip messing with the dirty info if the original value already matches + if (curr_val != mono_pixel) { + // Update the dirty region + qp_surface_update_dirty(&surface->dirty, x, y); + + // Update the pixel data in the buffer + if (mono_pixel) { + surface->u8buffer[byte_offset] |= (1 << bit_offset); + } else { + surface->u8buffer[byte_offset] &= ~(1 << bit_offset); + } + } +} + +static inline void append_pixel_mono1bpp(surface_painter_device_t *surface, bool mono_pixel) { + setpixel_mono1bpp(surface, surface->viewport.pixdata_x, surface->viewport.pixdata_y, mono_pixel); + qp_surface_increment_pixdata_location(&surface->viewport); +} + +static inline void stream_pixdata_mono1bpp(surface_painter_device_t *surface, const uint8_t *data, uint32_t native_pixel_count) { + for (uint32_t pixel_counter = 0; pixel_counter < native_pixel_count; ++pixel_counter) { + uint32_t byte_offset = pixel_counter / 8; + uint8_t bit_offset = pixel_counter % 8; + append_pixel_mono1bpp(surface, (data[byte_offset] & (1 << bit_offset)) ? true : false); + } +} + +// Stream pixel data to the current write position in GRAM +static bool qp_surface_pixdata_mono1bpp(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) { + painter_driver_t * driver = (painter_driver_t *)device; + surface_painter_device_t *surface = (surface_painter_device_t *)driver; + stream_pixdata_mono1bpp(surface, (const uint8_t *)pixel_data, native_pixel_count); + return true; +} + +// Pixel colour conversion +static bool qp_surface_palette_convert_mono1bpp(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) { + for (int16_t i = 0; i < palette_size; ++i) { + palette[i].mono = (palette[i].hsv888.v > 127) ? 1 : 0; + } + return true; +} + +// Append pixels to the target location, keyed by the pixel index +static bool qp_surface_append_pixels_mono1bpp(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) { + for (uint32_t i = 0; i < pixel_count; ++i) { + uint32_t pixel_num = pixel_offset + i; + uint32_t byte_offset = pixel_num / 8; + uint8_t bit_offset = pixel_num % 8; + if (palette[palette_indices[i]].mono) { + target_buffer[byte_offset] |= (1 << bit_offset); + } else { + target_buffer[byte_offset] &= ~(1 << bit_offset); + } + } + return true; +} + +static bool mono1bpp_target_pixdata_transfer(painter_driver_t *surface_driver, painter_driver_t *target_driver, uint16_t x, uint16_t y, bool entire_surface) { + return false; // Not yet supported. +} + +static bool qp_surface_append_pixdata_mono1bpp(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) { + return false; // Just use 1bpp images. +} + +const surface_painter_driver_vtable_t mono1bpp_surface_driver_vtable = { + .base = + { + .init = qp_surface_init, + .power = qp_surface_power, + .clear = qp_surface_clear, + .flush = qp_surface_flush, + .pixdata = qp_surface_pixdata_mono1bpp, + .viewport = qp_surface_viewport, + .palette_convert = qp_surface_palette_convert_mono1bpp, + .append_pixels = qp_surface_append_pixels_mono1bpp, + .append_pixdata = qp_surface_append_pixdata_mono1bpp, + }, + .target_pixdata_transfer = mono1bpp_target_pixdata_transfer, +}; + +SURFACE_FACTORY_FUNCTION_IMPL(qp_make_mono1bpp_surface, mono1bpp_surface_driver_vtable, 1); + +#endif // QUANTUM_PAINTER_SURFACE_ENABLE diff --git a/drivers/painter/generic/qp_surface_rgb565.c b/drivers/painter/generic/qp_surface_rgb565.c new file mode 100644 index 000000000000..8883ed541d82 --- /dev/null +++ b/drivers/painter/generic/qp_surface_rgb565.c @@ -0,0 +1,145 @@ +// Copyright 2022 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#ifdef QUANTUM_PAINTER_SURFACE_ENABLE + +# include "color.h" +# include "qp_draw.h" +# include "qp_surface_internal.h" +# include "qp_comms_dummy.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Surface driver impl: rgb565 + +static inline void setpixel_rgb565(surface_painter_device_t *surface, uint16_t x, uint16_t y, uint16_t rgb565) { + uint16_t w = surface->base.panel_width; + uint16_t h = surface->base.panel_height; + + // Drop out if it's off-screen + if (x >= w || y >= h) { + return; + } + + // Skip messing with the dirty info if the original value already matches + if (surface->u16buffer[y * w + x] != rgb565) { + // Update the dirty region + qp_surface_update_dirty(&surface->dirty, x, y); + + // Update the pixel data in the buffer + surface->u16buffer[y * w + x] = rgb565; + } +} + +static inline void append_pixel_rgb565(surface_painter_device_t *surface, uint16_t rgb565) { + setpixel_rgb565(surface, surface->viewport.pixdata_x, surface->viewport.pixdata_y, rgb565); + qp_surface_increment_pixdata_location(&surface->viewport); +} + +static inline void stream_pixdata_rgb565(surface_painter_device_t *surface, const uint16_t *data, uint32_t native_pixel_count) { + for (uint32_t pixel_counter = 0; pixel_counter < native_pixel_count; ++pixel_counter) { + append_pixel_rgb565(surface, data[pixel_counter]); + } +} + +// Stream pixel data to the current write position in GRAM +static bool qp_surface_pixdata_rgb565(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) { + painter_driver_t * driver = (painter_driver_t *)device; + surface_painter_device_t *surface = (surface_painter_device_t *)driver; + stream_pixdata_rgb565(surface, (const uint16_t *)pixel_data, native_pixel_count); + return true; +} + +// Pixel colour conversion +static bool qp_surface_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) { + for (int16_t i = 0; i < palette_size; ++i) { + RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v}); + uint16_t rgb565 = (((uint16_t)rgb.r) >> 3) << 11 | (((uint16_t)rgb.g) >> 2) << 5 | (((uint16_t)rgb.b) >> 3); + palette[i].rgb565 = __builtin_bswap16(rgb565); + } + return true; +} + +// Append pixels to the target location, keyed by the pixel index +static bool qp_surface_append_pixels_rgb565(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) { + uint16_t *buf = (uint16_t *)target_buffer; + for (uint32_t i = 0; i < pixel_count; ++i) { + buf[pixel_offset + i] = palette[palette_indices[i]].rgb565; + } + return true; +} + +static bool rgb565_target_pixdata_transfer(painter_driver_t *surface_driver, painter_driver_t *target_driver, uint16_t x, uint16_t y, bool entire_surface) { + surface_painter_device_t *surface_handle = (surface_painter_device_t *)surface_driver; + + uint16_t l = entire_surface ? 0 : surface_handle->dirty.l; + uint16_t t = entire_surface ? 0 : surface_handle->dirty.t; + uint16_t r = entire_surface ? (surface_handle->base.panel_width - 1) : surface_handle->dirty.r; + uint16_t b = entire_surface ? (surface_handle->base.panel_height - 1) : surface_handle->dirty.b; + + // Set the target drawing area + bool ok = qp_viewport((painter_device_t)target_driver, x + l, y + t, x + r, y + b); + if (!ok) { + qp_dprintf("rgb565_target_pixdata_transfer: fail (could not set target viewport)\n"); + return false; + } + + // Housekeeping of the amount of pixels to transfer + uint32_t total_pixel_count = (8 * QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE) / surface_driver->native_bits_per_pixel; + uint32_t pixel_counter = 0; + uint16_t *target_buffer = (uint16_t *)qp_internal_global_pixdata_buffer; + + // Fill the global pixdata area so that we can start transferring to the panel + for (uint16_t y = t; y <= b; ++y) { + for (uint16_t x = l; x <= r; ++x) { + // Update the target buffer + target_buffer[pixel_counter++] = surface_handle->u16buffer[y * surface_handle->base.panel_width + x]; + + // If we've accumulated enough data, send it + if (pixel_counter == total_pixel_count) { + ok = qp_pixdata((painter_device_t)target_driver, qp_internal_global_pixdata_buffer, pixel_counter); + if (!ok) { + qp_dprintf("rgb565_target_pixdata_transfer: fail (could not stream pixdata to target)\n"); + return false; + } + // Reset the counter + pixel_counter = 0; + } + } + } + + // If there's any leftover data, send it + if (pixel_counter > 0) { + ok = qp_pixdata((painter_device_t)target_driver, qp_internal_global_pixdata_buffer, pixel_counter); + if (!ok) { + qp_dprintf("rgb565_target_pixdata_transfer: fail (could not stream pixdata to target)\n"); + return false; + } + } + + return true; +} + +static bool qp_surface_append_pixdata_rgb565(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) { + target_buffer[pixdata_offset] = pixdata_byte; + return true; +} + +const surface_painter_driver_vtable_t rgb565_surface_driver_vtable = { + .base = + { + .init = qp_surface_init, + .power = qp_surface_power, + .clear = qp_surface_clear, + .flush = qp_surface_flush, + .pixdata = qp_surface_pixdata_rgb565, + .viewport = qp_surface_viewport, + .palette_convert = qp_surface_palette_convert_rgb565_swapped, + .append_pixels = qp_surface_append_pixels_rgb565, + .append_pixdata = qp_surface_append_pixdata_rgb565, + }, + .target_pixdata_transfer = rgb565_target_pixdata_transfer, +}; + +SURFACE_FACTORY_FUNCTION_IMPL(qp_make_rgb565_surface, rgb565_surface_driver_vtable, 16); + +#endif // QUANTUM_PAINTER_SURFACE_ENABLE diff --git a/drivers/painter/ili9xxx/qp_ili9163.c b/drivers/painter/ili9xxx/qp_ili9163.c index a75be5790486..7f439dc317ab 100644 --- a/drivers/painter/ili9xxx/qp_ili9163.c +++ b/drivers/painter/ili9xxx/qp_ili9163.c @@ -103,13 +103,14 @@ painter_device_t qp_ili9163_make_spi_device(uint16_t panel_width, uint16_t panel driver->base.native_bits_per_pixel = 16; // RGB565 // SPI and other pin configuration - driver->base.comms_config = &driver->spi_dc_reset_config; - driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; - driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; - driver->spi_dc_reset_config.spi_config.lsb_first = false; - driver->spi_dc_reset_config.spi_config.mode = spi_mode; - driver->spi_dc_reset_config.dc_pin = dc_pin; - driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->base.comms_config = &driver->spi_dc_reset_config; + driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->spi_dc_reset_config.spi_config.lsb_first = false; + driver->spi_dc_reset_config.spi_config.mode = spi_mode; + driver->spi_dc_reset_config.dc_pin = dc_pin; + driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->spi_dc_reset_config.command_params_uses_command_pin = false; if (!qp_internal_register_device((painter_device_t)driver)) { memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t)); diff --git a/drivers/painter/ili9xxx/qp_ili9163.h b/drivers/painter/ili9xxx/qp_ili9163.h index 88d23629a92a..a9b3befd48a4 100644 --- a/drivers/painter/ili9xxx/qp_ili9163.h +++ b/drivers/painter/ili9xxx/qp_ili9163.h @@ -1,6 +1,5 @@ // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #include "gpio.h" diff --git a/drivers/painter/ili9xxx/qp_ili9341.c b/drivers/painter/ili9xxx/qp_ili9341.c index 4130271f71b4..a101b292aa04 100644 --- a/drivers/painter/ili9xxx/qp_ili9341.c +++ b/drivers/painter/ili9xxx/qp_ili9341.c @@ -110,13 +110,14 @@ painter_device_t qp_ili9341_make_spi_device(uint16_t panel_width, uint16_t panel driver->base.offset_y = 0; // SPI and other pin configuration - driver->base.comms_config = &driver->spi_dc_reset_config; - driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; - driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; - driver->spi_dc_reset_config.spi_config.lsb_first = false; - driver->spi_dc_reset_config.spi_config.mode = spi_mode; - driver->spi_dc_reset_config.dc_pin = dc_pin; - driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->base.comms_config = &driver->spi_dc_reset_config; + driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->spi_dc_reset_config.spi_config.lsb_first = false; + driver->spi_dc_reset_config.spi_config.mode = spi_mode; + driver->spi_dc_reset_config.dc_pin = dc_pin; + driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->spi_dc_reset_config.command_params_uses_command_pin = false; if (!qp_internal_register_device((painter_device_t)driver)) { memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t)); diff --git a/drivers/painter/ili9xxx/qp_ili9341.h b/drivers/painter/ili9xxx/qp_ili9341.h index 28b0152a84cb..d850aba1146a 100644 --- a/drivers/painter/ili9xxx/qp_ili9341.h +++ b/drivers/painter/ili9xxx/qp_ili9341.h @@ -1,6 +1,5 @@ // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #include "gpio.h" diff --git a/drivers/painter/ili9xxx/qp_ili9488.c b/drivers/painter/ili9xxx/qp_ili9488.c index a8da52132e0f..63deaf5f2e99 100644 --- a/drivers/painter/ili9xxx/qp_ili9488.c +++ b/drivers/painter/ili9xxx/qp_ili9488.c @@ -103,13 +103,14 @@ painter_device_t qp_ili9488_make_spi_device(uint16_t panel_width, uint16_t panel driver->base.offset_y = 0; // SPI and other pin configuration - driver->base.comms_config = &driver->spi_dc_reset_config; - driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; - driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; - driver->spi_dc_reset_config.spi_config.lsb_first = false; - driver->spi_dc_reset_config.spi_config.mode = spi_mode; - driver->spi_dc_reset_config.dc_pin = dc_pin; - driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->base.comms_config = &driver->spi_dc_reset_config; + driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->spi_dc_reset_config.spi_config.lsb_first = false; + driver->spi_dc_reset_config.spi_config.mode = spi_mode; + driver->spi_dc_reset_config.dc_pin = dc_pin; + driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->spi_dc_reset_config.command_params_uses_command_pin = false; if (!qp_internal_register_device((painter_device_t)driver)) { memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t)); diff --git a/drivers/painter/ili9xxx/qp_ili9488.h b/drivers/painter/ili9xxx/qp_ili9488.h index 21b8f0332280..da56f1090fd0 100644 --- a/drivers/painter/ili9xxx/qp_ili9488.h +++ b/drivers/painter/ili9xxx/qp_ili9488.h @@ -1,6 +1,5 @@ // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #include "gpio.h" diff --git a/drivers/painter/oled_panel/qp_oled_panel.c b/drivers/painter/oled_panel/qp_oled_panel.c new file mode 100644 index 000000000000..eefee3f13f5c --- /dev/null +++ b/drivers/painter/oled_panel/qp_oled_panel.c @@ -0,0 +1,195 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "color.h" +#include "qp_internal.h" +#include "qp_comms.h" +#include "qp_draw.h" +#include "qp_oled_panel.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Quantum Painter API implementations + +// Power control +bool qp_oled_panel_power(painter_device_t device, bool power_on) { + painter_driver_t * driver = (painter_driver_t *)device; + oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable; + qp_comms_command(device, power_on ? vtable->opcodes.display_on : vtable->opcodes.display_off); + return true; +} + +// Screen clear +bool qp_oled_panel_clear(painter_device_t device) { + painter_driver_t *driver = (painter_driver_t *)device; + driver->driver_vtable->init(device, driver->rotation); // Re-init the display + return true; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Surface passthru +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +bool qp_oled_panel_passthru_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) { + oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device; + return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->pixdata(&driver->surface.base, pixel_data, native_pixel_count); +} + +bool qp_oled_panel_passthru_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom) { + oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device; + return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->viewport(&driver->surface.base, left, top, right, bottom); +} + +bool qp_oled_panel_passthru_palette_convert(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) { + oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device; + return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->palette_convert(&driver->surface.base, palette_size, palette); +} + +bool qp_oled_panel_passthru_append_pixels(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) { + oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device; + return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->append_pixels(&driver->surface.base, target_buffer, palette, pixel_offset, pixel_count, palette_indices); +} + +bool qp_oled_panel_passthru_append_pixdata(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) { + oled_panel_painter_device_t *driver = (oled_panel_painter_device_t *)device; + return driver->surface.base.validate_ok && driver->surface.base.driver_vtable->append_pixdata(&driver->surface.base, target_buffer, pixdata_offset, pixdata_byte); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Flush helpers +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +void qp_oled_panel_page_column_flush_rot0(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) { + painter_driver_t * driver = (painter_driver_t *)device; + oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable; + + // TODO: account for offset_x/y in base driver + int min_page = dirty->t / 8; + int max_page = dirty->b / 8; + int min_column = dirty->l; + int max_column = dirty->r; + + for (int page = min_page; page <= max_page; ++page) { + int cols_required = max_column - min_column + 1; + uint8_t column_data[cols_required]; + memset(column_data, 0, cols_required); + for (int x = min_column; x <= max_column; ++x) { + uint16_t data_offset = x - min_column; + for (int y = 0; y < 8; ++y) { + uint32_t pixel_num = ((page * 8) + y) * driver->panel_width + x; + uint32_t byte_offset = pixel_num / 8; + uint8_t bit_offset = pixel_num % 8; + column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << y; + } + } + + int actual_page = page; + int start_column = min_column; + qp_comms_command(device, vtable->opcodes.set_page | actual_page); + qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F)); + qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4); + qp_comms_send(device, column_data, cols_required); + } +} + +void qp_oled_panel_page_column_flush_rot90(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) { + painter_driver_t * driver = (painter_driver_t *)device; + oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable; + + // TODO: account for offset_x/y in base driver + int num_columns = driver->panel_width; + int min_page = dirty->l / 8; + int max_page = dirty->r / 8; + int min_column = dirty->t; + int max_column = dirty->b; + + for (int page = min_page; page <= max_page; ++page) { + int cols_required = max_column - min_column + 1; + uint8_t column_data[cols_required]; + memset(column_data, 0, cols_required); + for (int y = min_column; y <= max_column; ++y) { + uint16_t data_offset = cols_required - 1 - (y - min_column); + for (int x = 0; x < 8; ++x) { + uint32_t pixel_num = y * driver->panel_height + ((page * 8) + x); + uint32_t byte_offset = pixel_num / 8; + uint8_t bit_offset = pixel_num % 8; + column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << x; + } + } + + int actual_page = page; + int start_column = num_columns - 1 - max_column; + qp_comms_command(device, vtable->opcodes.set_page | actual_page); + qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F)); + qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4); + qp_comms_send(device, column_data, cols_required); + } +} + +void qp_oled_panel_page_column_flush_rot180(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) { + painter_driver_t * driver = (painter_driver_t *)device; + oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable; + + // TODO: account for offset_x/y in base driver + int num_pages = driver->panel_height / 8; + int num_columns = driver->panel_width; + int min_page = dirty->t / 8; + int max_page = dirty->b / 8; + int min_column = dirty->l; + int max_column = dirty->r; + + for (int page = min_page; page <= max_page; ++page) { + int cols_required = max_column - min_column + 1; + uint8_t column_data[cols_required]; + memset(column_data, 0, cols_required); + for (int x = min_column; x <= max_column; ++x) { + uint16_t data_offset = cols_required - 1 - (x - min_column); + for (int y = 0; y < 8; ++y) { + uint32_t pixel_num = ((page * 8) + y) * driver->panel_width + x; + uint32_t byte_offset = pixel_num / 8; + uint8_t bit_offset = pixel_num % 8; + column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << (7 - y); + } + } + + int actual_page = num_pages - 1 - page; + int start_column = num_columns - 1 - max_column; + qp_comms_command(device, vtable->opcodes.set_page | actual_page); + qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F)); + qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4); + qp_comms_send(device, column_data, cols_required); + } +} + +void qp_oled_panel_page_column_flush_rot270(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer) { + painter_driver_t * driver = (painter_driver_t *)device; + oled_panel_painter_driver_vtable_t *vtable = (oled_panel_painter_driver_vtable_t *)driver->driver_vtable; + + // TODO: account for offset_x/y in base driver + int num_pages = driver->panel_height / 8; + int min_page = dirty->l / 8; + int max_page = dirty->r / 8; + int min_column = dirty->t; + int max_column = dirty->b; + + for (int page = min_page; page <= max_page; ++page) { + int cols_required = max_column - min_column + 1; + uint8_t column_data[cols_required]; + memset(column_data, 0, cols_required); + for (int y = min_column; y <= max_column; ++y) { + uint16_t data_offset = y - min_column; + for (int x = 0; x < 8; ++x) { + uint32_t pixel_num = y * driver->panel_height + ((page * 8) + x); + uint32_t byte_offset = pixel_num / 8; + uint8_t bit_offset = pixel_num % 8; + column_data[data_offset] |= ((framebuffer[byte_offset] & (1 << bit_offset)) >> bit_offset) << (7 - x); + } + } + + int actual_page = num_pages - 1 - page; + int start_column = min_column; + qp_comms_command(device, vtable->opcodes.set_page | actual_page); + qp_comms_command(device, vtable->opcodes.set_column_lsb | (start_column & 0x0F)); + qp_comms_command(device, vtable->opcodes.set_column_msb | (start_column & 0xF0) >> 4); + qp_comms_send(device, column_data, cols_required); + } +} diff --git a/drivers/painter/oled_panel/qp_oled_panel.h b/drivers/painter/oled_panel/qp_oled_panel.h new file mode 100644 index 000000000000..ccc7ab92048c --- /dev/null +++ b/drivers/painter/oled_panel/qp_oled_panel.h @@ -0,0 +1,68 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include "color.h" +#include "qp_internal.h" +#include "qp_surface_internal.h" + +#ifdef QUANTUM_PAINTER_SPI_ENABLE +# include "qp_comms_spi.h" +#endif // QUANTUM_PAINTER_SPI_ENABLE + +#ifdef QUANTUM_PAINTER_I2C_ENABLE +# include "qp_comms_i2c.h" +#endif // QUANTUM_PAINTER_I2C_ENABLE + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Common OLED panel implementation + +// Driver vtable with extras +typedef struct oled_panel_painter_driver_vtable_t { + painter_driver_vtable_t base; // must be first, so it can be cast to/from the painter_driver_vtable_t* type + + // Opcodes for normal display operation + struct { + uint8_t display_on; + uint8_t display_off; + uint8_t set_page; + uint8_t set_column_lsb; + uint8_t set_column_msb; + } opcodes; +} oled_panel_painter_driver_vtable_t; + +// Device definition +typedef struct oled_panel_painter_device_t { + painter_driver_t base; // must be first, so it can be cast to/from the painter_device_t* type + + union { +#ifdef QUANTUM_PAINTER_SPI_ENABLE + // SPI-based configurables + qp_comms_spi_dc_reset_config_t spi_dc_reset_config; +#endif // QUANTUM_PAINTER_SPI_ENABLE +#ifdef QUANTUM_PAINTER_I2C_ENABLE + // I2C-based configurables + qp_comms_i2c_config_t i2c_config; +#endif // QUANTUM_PAINTER_I2C_ENABLE + }; + + surface_painter_device_t surface; +} oled_panel_painter_device_t; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Forward declarations for injecting into concrete driver vtables + +bool qp_oled_panel_power(painter_device_t device, bool power_on); +bool qp_oled_panel_clear(painter_device_t device); + +bool qp_oled_panel_passthru_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count); +bool qp_oled_panel_passthru_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom); +bool qp_oled_panel_passthru_palette_convert(painter_device_t device, int16_t palette_size, qp_pixel_t *palette); +bool qp_oled_panel_passthru_append_pixels(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices); +bool qp_oled_panel_passthru_append_pixdata(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte); + +// Helpers for flushing data from the dirty region to the correct location on the OLED +void qp_oled_panel_page_column_flush_rot0(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer); +void qp_oled_panel_page_column_flush_rot90(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer); +void qp_oled_panel_page_column_flush_rot180(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer); +void qp_oled_panel_page_column_flush_rot270(painter_device_t device, surface_dirty_data_t *dirty, const uint8_t *framebuffer); diff --git a/drivers/painter/sh1106/qp_sh1106.c b/drivers/painter/sh1106/qp_sh1106.c new file mode 100644 index 000000000000..7cb6e398fac5 --- /dev/null +++ b/drivers/painter/sh1106/qp_sh1106.c @@ -0,0 +1,206 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "qp_internal.h" +#include "qp_comms.h" +#include "qp_oled_panel.h" +#include "qp_sh1106.h" +#include "qp_sh1106_opcodes.h" +#include "qp_surface.h" +#include "qp_surface_internal.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Driver storage +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +typedef struct sh1106_device_t { + oled_panel_painter_device_t oled; + + uint8_t framebuffer[SURFACE_REQUIRED_BUFFER_BYTE_SIZE(128, 64, 1)]; +} sh1106_device_t; + +static sh1106_device_t sh1106_drivers[SH1106_NUM_DEVICES] = {0}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Quantum Painter API implementations + +// Initialisation +__attribute__((weak)) bool qp_sh1106_init(painter_device_t device, painter_rotation_t rotation) { + sh1106_device_t *driver = (sh1106_device_t *)device; + + // Change the surface geometry based on the panel rotation + if (rotation == QP_ROTATION_90 || rotation == QP_ROTATION_270) { + driver->oled.surface.base.panel_width = driver->oled.base.panel_height; + driver->oled.surface.base.panel_height = driver->oled.base.panel_width; + } else { + driver->oled.surface.base.panel_width = driver->oled.base.panel_width; + driver->oled.surface.base.panel_height = driver->oled.base.panel_height; + } + + // Init the internal surface + if (!qp_init(&driver->oled.surface.base, QP_ROTATION_0)) { + qp_dprintf("Failed to init internal surface in qp_sh1106_init\n"); + return false; + } + + // clang-format off + const uint8_t sh1106_init_sequence[] = { + // Command, Delay, N, Data[N] + SH1106_SET_MUX_RATIO, 0, 1, 0x3F, + SH1106_DISPLAY_OFFSET, 0, 1, 0x00, + SH1106_DISPLAY_START_LINE, 0, 0, + SH1106_SET_SEGMENT_REMAP_INV, 0, 0, + SH1106_COM_SCAN_DIR_DEC, 0, 0, + SH1106_COM_PADS_HW_CFG, 0, 1, 0x12, + SH1106_SET_CONTRAST, 0, 1, 0x7F, + SH1106_ALL_ON_RESUME, 0, 0, + SH1106_NON_INVERTING_DISPLAY, 0, 0, + SH1106_SET_OSC_DIVFREQ, 0, 1, 0x80, + SH1106_SET_CHARGE_PUMP, 0, 1, 0x14, + SH1106_DISPLAY_ON, 0, 0, + }; + // clang-format on + + qp_comms_bulk_command_sequence(device, sh1106_init_sequence, sizeof(sh1106_init_sequence)); + return true; +} + +// Screen flush +bool qp_sh1106_flush(painter_device_t device) { + sh1106_device_t *driver = (sh1106_device_t *)device; + + if (!driver->oled.surface.dirty.is_dirty) { + return true; + } + + switch (driver->oled.base.rotation) { + default: + case QP_ROTATION_0: + qp_oled_panel_page_column_flush_rot0(device, &driver->oled.surface.dirty, driver->framebuffer); + break; + case QP_ROTATION_90: + qp_oled_panel_page_column_flush_rot90(device, &driver->oled.surface.dirty, driver->framebuffer); + break; + case QP_ROTATION_180: + qp_oled_panel_page_column_flush_rot180(device, &driver->oled.surface.dirty, driver->framebuffer); + break; + case QP_ROTATION_270: + qp_oled_panel_page_column_flush_rot270(device, &driver->oled.surface.dirty, driver->framebuffer); + break; + } + + // Clear the dirty area + qp_flush(&driver->oled.surface); + + return true; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Driver vtable +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +const oled_panel_painter_driver_vtable_t sh1106_driver_vtable = { + .base = + { + .init = qp_sh1106_init, + .power = qp_oled_panel_power, + .clear = qp_oled_panel_clear, + .flush = qp_sh1106_flush, + .pixdata = qp_oled_panel_passthru_pixdata, + .viewport = qp_oled_panel_passthru_viewport, + .palette_convert = qp_oled_panel_passthru_palette_convert, + .append_pixels = qp_oled_panel_passthru_append_pixels, + .append_pixdata = qp_oled_panel_passthru_append_pixdata, + }, + .opcodes = + { + .display_on = SH1106_DISPLAY_ON, + .display_off = SH1106_DISPLAY_OFF, + .set_page = SH1106_PAGE_ADDR, + .set_column_lsb = SH1106_SETCOLUMN_LSB, + .set_column_msb = SH1106_SETCOLUMN_MSB, + }, +}; + +#ifdef QUANTUM_PAINTER_SH1106_SPI_ENABLE +// Factory function for creating a handle to the SH1106 device +painter_device_t qp_sh1106_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) { + for (uint32_t i = 0; i < SH1106_NUM_DEVICES; ++i) { + sh1106_device_t *driver = &sh1106_drivers[i]; + if (!driver->oled.base.driver_vtable) { + painter_device_t surface = qp_make_mono1bpp_surface_advanced(&driver->oled.surface, 1, panel_width, panel_height, driver->framebuffer); + if (!surface) { + return NULL; + } + + // Setup the OLED device + driver->oled.base.driver_vtable = (const painter_driver_vtable_t *)&sh1106_driver_vtable; + driver->oled.base.comms_vtable = (const painter_comms_vtable_t *)&spi_comms_with_dc_vtable; + driver->oled.base.native_bits_per_pixel = 1; // 1bpp mono + driver->oled.base.panel_width = panel_width; + driver->oled.base.panel_height = panel_height; + driver->oled.base.rotation = QP_ROTATION_0; + driver->oled.base.offset_x = 0; + driver->oled.base.offset_y = 0; + + // SPI and other pin configuration + driver->oled.base.comms_config = &driver->oled.spi_dc_reset_config; + driver->oled.spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->oled.spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->oled.spi_dc_reset_config.spi_config.lsb_first = false; + driver->oled.spi_dc_reset_config.spi_config.mode = spi_mode; + driver->oled.spi_dc_reset_config.dc_pin = dc_pin; + driver->oled.spi_dc_reset_config.reset_pin = reset_pin; + driver->oled.spi_dc_reset_config.command_params_uses_command_pin = true; + + if (!qp_internal_register_device((painter_device_t)driver)) { + memset(driver, 0, sizeof(sh1106_device_t)); + return NULL; + } + + return (painter_device_t)driver; + } + } + return NULL; +} + +#endif // QUANTUM_PAINTER_SH1106_SPI_ENABLE + +#ifdef QUANTUM_PAINTER_SH1106_I2C_ENABLE +// Factory function for creating a handle to the SH1106 device +painter_device_t qp_sh1106_make_i2c_device(uint16_t panel_width, uint16_t panel_height, uint8_t i2c_address) { + for (uint32_t i = 0; i < SH1106_NUM_DEVICES; ++i) { + sh1106_device_t *driver = &sh1106_drivers[i]; + if (!driver->oled.base.driver_vtable) { + // Instantiate the surface, intentional swap of width/high due to transpose + painter_device_t surface = qp_make_mono1bpp_surface_advanced(&driver->oled.surface, 1, panel_width, panel_height, driver->framebuffer); + if (!surface) { + return NULL; + } + + // Setup the OLED device + driver->oled.base.driver_vtable = (const painter_driver_vtable_t *)&sh1106_driver_vtable; + driver->oled.base.comms_vtable = (const painter_comms_vtable_t *)&i2c_comms_cmddata_vtable; + driver->oled.base.native_bits_per_pixel = 1; // 1bpp mono + driver->oled.base.panel_width = panel_width; + driver->oled.base.panel_height = panel_height; + driver->oled.base.rotation = QP_ROTATION_0; + driver->oled.base.offset_x = 0; + driver->oled.base.offset_y = 0; + + // I2C configuration + driver->oled.base.comms_config = &driver->oled.i2c_config; + driver->oled.i2c_config.chip_address = i2c_address; + + if (!qp_internal_register_device((painter_device_t)driver)) { + memset(driver, 0, sizeof(sh1106_device_t)); + return NULL; + } + + return (painter_device_t)driver; + } + } + return NULL; +} + +#endif // QUANTUM_PAINTER_SH1106_SPI_ENABLE diff --git a/drivers/painter/sh1106/qp_sh1106.h b/drivers/painter/sh1106/qp_sh1106.h new file mode 100644 index 000000000000..6c325dba4ba1 --- /dev/null +++ b/drivers/painter/sh1106/qp_sh1106.h @@ -0,0 +1,66 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include "gpio.h" +#include "qp_internal.h" + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Quantum Painter SH1106 configurables (add to your keyboard's config.h) + +#if defined(QUANTUM_PAINTER_SH1106_SPI_ENABLE) && !defined(SH1106_NUM_SPI_DEVICES) +/** + * @def This controls the maximum number of SPI SH1106 devices that Quantum Painter can communicate with at any one time. + * Increasing this number allows for multiple displays to be used. + */ +# define SH1106_NUM_SPI_DEVICES 1 +#else +# define SH1106_NUM_SPI_DEVICES 0 +#endif + +#if defined(QUANTUM_PAINTER_SH1106_I2C_ENABLE) && !defined(SH1106_NUM_I2C_DEVICES) +/** + * @def This controls the maximum number of I2C SH1106 devices that Quantum Painter can communicate with at any one time. + * Increasing this number allows for multiple displays to be used. + */ +# define SH1106_NUM_I2C_DEVICES 1 +#else +# define SH1106_NUM_I2C_DEVICES 0 +#endif + +#define SH1106_NUM_DEVICES ((SH1106_NUM_SPI_DEVICES) + (SH1106_NUM_I2C_DEVICES)) + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Quantum Painter SH1106 device factories + +#ifdef QUANTUM_PAINTER_SH1106_SPI_ENABLE + +/** + * Factory method for an SH1106 SPI LCD device. + * + * @param panel_width[in] the width of the display in pixels (usually 128) + * @param panel_height[in] the height of the display in pixels (usually 64) + * @param chip_select_pin[in] the GPIO pin used for SPI chip select + * @param dc_pin[in] the GPIO pin used for D/C control + * @param reset_pin[in] the GPIO pin used for RST + * @param spi_divisor[in] the SPI divisor to use when communicating with the display + * @param spi_mode[in] the SPI mode to use when communicating with the display + * @return the device handle used with all drawing routines in Quantum Painter + */ +painter_device_t qp_sh1106_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode); + +#endif // QUANTUM_PAINTER_SH1106_SPI_ENABLE + +#ifdef QUANTUM_PAINTER_SH1106_I2C_ENABLE + +/** + * Factory method for an SH1106 I2C LCD device. + * + * @param panel_width[in] the width of the display in pixels (usually 128) + * @param panel_height[in] the height of the display in pixels (usually 64) + * @param i2c_address[in] the I2C address to use + * @return the device handle used with all drawing routines in Quantum Painter + */ +painter_device_t qp_sh1106_make_i2c_device(uint16_t panel_width, uint16_t panel_height, uint8_t i2c_address); + +#endif // QUANTUM_PAINTER_SH1106_I2C_ENABLE diff --git a/drivers/painter/sh1106/qp_sh1106_opcodes.h b/drivers/painter/sh1106/qp_sh1106_opcodes.h new file mode 100644 index 000000000000..a2e100d7702c --- /dev/null +++ b/drivers/painter/sh1106/qp_sh1106_opcodes.h @@ -0,0 +1,26 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define SH1106_DISPLAY_ON 0xAF +#define SH1106_DISPLAY_OFF 0xAE +#define SH1106_SET_OSC_DIVFREQ 0xD5 +#define SH1106_SET_MUX_RATIO 0xA8 +#define SH1106_DISPLAY_OFFSET 0xD3 +#define SH1106_DISPLAY_START_LINE 0x40 +#define SH1106_SET_CHARGE_PUMP 0x8D +#define SH1106_SET_SEGMENT_REMAP_NORMAL 0xA0 +#define SH1106_SET_SEGMENT_REMAP_INV 0xA1 +#define SH1106_COM_SCAN_DIR_INC 0xC0 +#define SH1106_COM_SCAN_DIR_DEC 0xC8 +#define SH1106_COM_PADS_HW_CFG 0xDA +#define SH1106_SET_CONTRAST 0x81 +#define SH1106_SET_PRECHARGE_PERIOD 0xD9 +#define SH1106_VCOM_DETECT 0xDB +#define SH1106_ALL_ON_RESUME 0xA4 +#define SH1106_NON_INVERTING_DISPLAY 0xA6 +#define SH1106_DEACTIVATE_SCROLL 0x2E + +#define SH1106_SETCOLUMN_LSB 0x00 +#define SH1106_SETCOLUMN_MSB 0x10 +#define SH1106_PAGE_ADDR 0xB0 diff --git a/drivers/painter/ssd1351/qp_ssd1351.c b/drivers/painter/ssd1351/qp_ssd1351.c index 434b7f032781..3270a362c2f1 100644 --- a/drivers/painter/ssd1351/qp_ssd1351.c +++ b/drivers/painter/ssd1351/qp_ssd1351.c @@ -107,13 +107,14 @@ painter_device_t qp_ssd1351_make_spi_device(uint16_t panel_width, uint16_t panel driver->base.native_bits_per_pixel = 16; // RGB565 // SPI and other pin configuration - driver->base.comms_config = &driver->spi_dc_reset_config; - driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; - driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; - driver->spi_dc_reset_config.spi_config.lsb_first = false; - driver->spi_dc_reset_config.spi_config.mode = spi_mode; - driver->spi_dc_reset_config.dc_pin = dc_pin; - driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->base.comms_config = &driver->spi_dc_reset_config; + driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->spi_dc_reset_config.spi_config.lsb_first = false; + driver->spi_dc_reset_config.spi_config.mode = spi_mode; + driver->spi_dc_reset_config.dc_pin = dc_pin; + driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->spi_dc_reset_config.command_params_uses_command_pin = false; if (!qp_internal_register_device((painter_device_t)driver)) { memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t)); diff --git a/drivers/painter/ssd1351/qp_ssd1351.h b/drivers/painter/ssd1351/qp_ssd1351.h index 0df34f204d5c..0045c4926b88 100644 --- a/drivers/painter/ssd1351/qp_ssd1351.h +++ b/drivers/painter/ssd1351/qp_ssd1351.h @@ -1,6 +1,5 @@ // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #include "gpio.h" diff --git a/drivers/painter/ssd1351/qp_ssd1351_opcodes.h b/drivers/painter/ssd1351/qp_ssd1351_opcodes.h index 48ed2a3a7c2c..ca8e2bf77eb8 100644 --- a/drivers/painter/ssd1351/qp_ssd1351_opcodes.h +++ b/drivers/painter/ssd1351/qp_ssd1351_opcodes.h @@ -1,6 +1,5 @@ // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/st77xx/qp_st7735.c b/drivers/painter/st77xx/qp_st7735.c index 98baf400abfb..1db0d01dcbcd 100644 --- a/drivers/painter/st77xx/qp_st7735.c +++ b/drivers/painter/st77xx/qp_st7735.c @@ -58,6 +58,8 @@ __attribute__((weak)) bool qp_st7735_init(painter_device_t device, painter_rotat ST77XX_SET_PIX_FMT, 0, 1, 0x55, ST77XX_CMD_INVERT_OFF, 0, 0, ST77XX_CMD_NORMAL_ON, 0, 0, + ST7735_SET_PGAMMA, 0, 16, 0x02, 0x1C, 0x07, 0x12, 0x37, 0x32, 0x29, 0x2D, 0x29, 0x25, 0x2B, 0x39, 0x00, 0x01, 0x03, 0x10, + ST7735_SET_NGAMMA, 0, 16, 0x03, 0x1D, 0x07, 0x06, 0x2E, 0x2C, 0x29, 0x2D, 0x2E, 0x2E, 0x37, 0x3F, 0x00, 0x00, 0x02, 0x10, ST77XX_CMD_DISPLAY_ON, 20, 0 }; // clang-format on @@ -127,13 +129,14 @@ painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_ driver->base.native_bits_per_pixel = 16; // RGB565 // SPI and other pin configuration - driver->base.comms_config = &driver->spi_dc_reset_config; - driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; - driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; - driver->spi_dc_reset_config.spi_config.lsb_first = false; - driver->spi_dc_reset_config.spi_config.mode = spi_mode; - driver->spi_dc_reset_config.dc_pin = dc_pin; - driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->base.comms_config = &driver->spi_dc_reset_config; + driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->spi_dc_reset_config.spi_config.lsb_first = false; + driver->spi_dc_reset_config.spi_config.mode = spi_mode; + driver->spi_dc_reset_config.dc_pin = dc_pin; + driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->spi_dc_reset_config.command_params_uses_command_pin = false; if (!qp_internal_register_device((painter_device_t)driver)) { memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t)); diff --git a/drivers/painter/st77xx/qp_st7735.h b/drivers/painter/st77xx/qp_st7735.h index a9ce16bef199..e65b7ca70607 100644 --- a/drivers/painter/st77xx/qp_st7735.h +++ b/drivers/painter/st77xx/qp_st7735.h @@ -2,7 +2,6 @@ // Copyright 2021 Nick Brassel (@tzarc) // Copyright 2022 David Hoelscher (@customMK) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #include "gpio.h" @@ -42,4 +41,4 @@ * @return the device handle used with all drawing routines in Quantum Painter */ painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode); -#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE \ No newline at end of file +#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE diff --git a/drivers/painter/st77xx/qp_st7735_opcodes.h b/drivers/painter/st77xx/qp_st7735_opcodes.h index 816e32f3d763..f390d113c5da 100644 --- a/drivers/painter/st77xx/qp_st7735_opcodes.h +++ b/drivers/painter/st77xx/qp_st7735_opcodes.h @@ -1,6 +1,5 @@ // Copyright 2022 David Hoelscher (@customMK) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/st77xx/qp_st7789.c b/drivers/painter/st77xx/qp_st7789.c index f9065f5178b0..855a9cc0c86c 100644 --- a/drivers/painter/st77xx/qp_st7789.c +++ b/drivers/painter/st77xx/qp_st7789.c @@ -126,13 +126,14 @@ painter_device_t qp_st7789_make_spi_device(uint16_t panel_width, uint16_t panel_ driver->base.native_bits_per_pixel = 16; // RGB565 // SPI and other pin configuration - driver->base.comms_config = &driver->spi_dc_reset_config; - driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; - driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; - driver->spi_dc_reset_config.spi_config.lsb_first = false; - driver->spi_dc_reset_config.spi_config.mode = spi_mode; - driver->spi_dc_reset_config.dc_pin = dc_pin; - driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->base.comms_config = &driver->spi_dc_reset_config; + driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin; + driver->spi_dc_reset_config.spi_config.divisor = spi_divisor; + driver->spi_dc_reset_config.spi_config.lsb_first = false; + driver->spi_dc_reset_config.spi_config.mode = spi_mode; + driver->spi_dc_reset_config.dc_pin = dc_pin; + driver->spi_dc_reset_config.reset_pin = reset_pin; + driver->spi_dc_reset_config.command_params_uses_command_pin = false; if (!qp_internal_register_device((painter_device_t)driver)) { memset(driver, 0, sizeof(tft_panel_dc_reset_painter_device_t)); diff --git a/drivers/painter/st77xx/qp_st7789.h b/drivers/painter/st77xx/qp_st7789.h index ec61f5d70b7e..03d618cae416 100644 --- a/drivers/painter/st77xx/qp_st7789.h +++ b/drivers/painter/st77xx/qp_st7789.h @@ -1,7 +1,6 @@ // Copyright 2021 Paul Cotter (@gr1mr3aver) // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once #include "gpio.h" diff --git a/drivers/painter/st77xx/qp_st7789_opcodes.h b/drivers/painter/st77xx/qp_st7789_opcodes.h index b5baba718469..4b46f994b481 100644 --- a/drivers/painter/st77xx/qp_st7789_opcodes.h +++ b/drivers/painter/st77xx/qp_st7789_opcodes.h @@ -1,6 +1,5 @@ // Copyright 2021 Paul Cotter (@gr1mr3aver) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/st77xx/qp_st77xx_opcodes.h b/drivers/painter/st77xx/qp_st77xx_opcodes.h index 131378d8328e..c01e2b21e62d 100644 --- a/drivers/painter/st77xx/qp_st77xx_opcodes.h +++ b/drivers/painter/st77xx/qp_st77xx_opcodes.h @@ -1,6 +1,5 @@ // Copyright 2021 Paul Cotter (@gr1mr3aver) // SPDX-License-Identifier: GPL-2.0-or-later - #pragma once //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/drivers/painter/tft_panel/qp_tft_panel.h b/drivers/painter/tft_panel/qp_tft_panel.h index 67168645b7e2..3b184f2eba97 100644 --- a/drivers/painter/tft_panel/qp_tft_panel.h +++ b/drivers/painter/tft_panel/qp_tft_panel.h @@ -1,5 +1,6 @@ // Copyright 2021 Nick Brassel (@tzarc) // SPDX-License-Identifier: GPL-2.0-or-later +#pragma once #include "color.h" #include "qp_internal.h" diff --git a/drivers/ps2/ps2_mouse.c b/drivers/ps2/ps2_mouse.c index ae594c94bc5e..88c9bdcebef0 100644 --- a/drivers/ps2/ps2_mouse.c +++ b/drivers/ps2/ps2_mouse.c @@ -265,6 +265,7 @@ static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) { SCROLL_SENT, } scroll_state = SCROLL_NONE; static uint16_t scroll_button_time = 0; + static int16_t scroll_x, scroll_y; if (PS2_MOUSE_SCROLL_BTN_MASK == (mouse_report->buttons & (PS2_MOUSE_SCROLL_BTN_MASK))) { // All scroll buttons are pressed @@ -272,13 +273,19 @@ static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) { if (scroll_state == SCROLL_NONE) { scroll_button_time = timer_read(); scroll_state = SCROLL_BTN; + scroll_x = 0; + scroll_y = 0; } // 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); + scroll_state = SCROLL_SENT; + scroll_y += mouse_report->y; + scroll_x += mouse_report->x; + mouse_report->v = -scroll_y / (PS2_MOUSE_SCROLL_DIVISOR_V); + mouse_report->h = scroll_x / (PS2_MOUSE_SCROLL_DIVISOR_H); + scroll_y += (mouse_report->v * (PS2_MOUSE_SCROLL_DIVISOR_V)); + scroll_x -= (mouse_report->h * (PS2_MOUSE_SCROLL_DIVISOR_H)); mouse_report->x = 0; mouse_report->y = 0; #ifdef PS2_MOUSE_INVERT_H diff --git a/drivers/sensors/azoteq_iqs5xx.c b/drivers/sensors/azoteq_iqs5xx.c new file mode 100644 index 000000000000..521f558b5f31 --- /dev/null +++ b/drivers/sensors/azoteq_iqs5xx.c @@ -0,0 +1,315 @@ +// Copyright 2023 Dasky (@daskygit) +// Copyright 2023 George Norton (@george-norton) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "azoteq_iqs5xx.h" +#include "pointing_device_internal.h" +#include "wait.h" + +#ifndef AZOTEQ_IQS5XX_ADDRESS +# define AZOTEQ_IQS5XX_ADDRESS (0x74 << 1) +#endif +#ifndef AZOTEQ_IQS5XX_TIMEOUT_MS +# define AZOTEQ_IQS5XX_TIMEOUT_MS 10 +#endif + +#define AZOTEQ_IQS5XX_REG_PRODUCT_NUMBER 0x0000 +#define AZOTEQ_IQS5XX_REG_PREVIOUS_CYCLE_TIME 0x000C +#define AZOTEQ_IQS5XX_REG_SYSTEM_CONTROL_1 0x0432 +#define AZOTEQ_IQS5XX_REG_REPORT_RATE_ACTIVE 0x057A +#define AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_0 0x058E +#define AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_1 0x058F +#define AZOTEQ_IQS5XX_REG_X_RESOLUTION 0x066E +#define AZOTEQ_IQS5XX_REG_XY_CONFIG_0 0x0669 +#define AZOTEQ_IQS5XX_REG_Y_RESOLUTION 0x0670 +#define AZOTEQ_IQS5XX_REG_SINGLE_FINGER_GESTURES 0x06B7 +#define AZOTEQ_IQS5XX_REG_END_COMMS 0xEEEE + +// Gesture configuration +#ifndef AZOTEQ_IQS5XX_TAP_ENABLE +# define AZOTEQ_IQS5XX_TAP_ENABLE true +#endif +#ifndef AZOTEQ_IQS5XX_PRESS_AND_HOLD_ENABLE +# define AZOTEQ_IQS5XX_PRESS_AND_HOLD_ENABLE false +#endif +#ifndef AZOTEQ_IQS5XX_TWO_FINGER_TAP_ENABLE +# define AZOTEQ_IQS5XX_TWO_FINGER_TAP_ENABLE true +#endif +#ifndef AZOTEQ_IQS5XX_SCROLL_ENABLE +# define AZOTEQ_IQS5XX_SCROLL_ENABLE true +#endif +#ifndef AZOTEQ_IQS5XX_SWIPE_X_ENABLE +# define AZOTEQ_IQS5XX_SWIPE_X_ENABLE false +#endif +#ifndef AZOTEQ_IQS5XX_SWIPE_Y_ENABLE +# define AZOTEQ_IQS5XX_SWIPE_Y_ENABLE false +#endif +#ifndef AZOTEQ_IQS5XX_ZOOM_ENABLE +# define AZOTEQ_IQS5XX_ZOOM_ENABLE false +#endif +#ifndef AZOTEQ_IQS5XX_TAP_TIME +# define AZOTEQ_IQS5XX_TAP_TIME 0x96 +#endif +#ifndef AZOTEQ_IQS5XX_TAP_DISTANCE +# define AZOTEQ_IQS5XX_TAP_DISTANCE 0x19 +#endif +#ifndef AZOTEQ_IQS5XX_HOLD_TIME +# define AZOTEQ_IQS5XX_HOLD_TIME 0x12C +#endif +#ifndef AZOTEQ_IQS5XX_SWIPE_INITIAL_TIME +# define AZOTEQ_IQS5XX_SWIPE_INITIAL_TIME 0x64 // 0x96 +#endif +#ifndef AZOTEQ_IQS5XX_SWIPE_INITIAL_DISTANCE +# define AZOTEQ_IQS5XX_SWIPE_INITIAL_DISTANCE 0x12C +#endif +#ifndef AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_TIME +# define AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_TIME 0x0 +#endif +#ifndef AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_DISTANCE +# define AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_DISTANCE 0x7D0 +#endif +#ifndef AZOTEQ_IQS5XX_SCROLL_INITIAL_DISTANCE +# define AZOTEQ_IQS5XX_SCROLL_INITIAL_DISTANCE 0x32 +#endif +#ifndef AZOTEQ_IQS5XX_ZOOM_INITIAL_DISTANCE +# define AZOTEQ_IQS5XX_ZOOM_INITIAL_DISTANCE 0x32 +#endif +#ifndef AZOTEQ_IQS5XX_ZOOM_CONSECUTIVE_DISTANCE +# define AZOTEQ_IQS5XX_ZOOM_CONSECUTIVE_DISTANCE 0x19 +#endif + +#if defined(AZOTEQ_IQS5XX_TPS43) +# define AZOTEQ_IQS5XX_WIDTH_MM 43 +# define AZOTEQ_IQS5XX_HEIGHT_MM 40 +# define AZOTEQ_IQS5XX_RESOLUTION_X 2048 +# define AZOTEQ_IQS5XX_RESOLUTION_Y 1792 +#elif defined(AZOTEQ_IQS5XX_TPS65) +# define AZOTEQ_IQS5XX_WIDTH_MM 65 +# define AZOTEQ_IQS5XX_HEIGHT_MM 49 +# define AZOTEQ_IQS5XX_RESOLUTION_X 3072 +# define AZOTEQ_IQS5XX_RESOLUTION_Y 2048 +#elif !defined(AZOTEQ_IQS5XX_WIDTH_MM) && !defined(AZOTEQ_IQS5XX_HEIGHT_MM) +# error "You must define one of the available azoteq trackpads or specify at least the width and height" +#endif + +#define DIVIDE_UNSIGNED_ROUND(numerator, denominator) (((numerator) + ((denominator) / 2)) / (denominator)) +#define AZOTEQ_IQS5XX_INCH_TO_RESOLUTION_X(inch) (DIVIDE_UNSIGNED_ROUND((inch) * (uint32_t)AZOTEQ_IQS5XX_WIDTH_MM * 10, 254)) +#define AZOTEQ_IQS5XX_RESOLUTION_X_TO_INCH(px) (DIVIDE_UNSIGNED_ROUND((px) * (uint32_t)254, AZOTEQ_IQS5XX_WIDTH_MM * 10)) +#define AZOTEQ_IQS5XX_INCH_TO_RESOLUTION_Y(inch) (DIVIDE_UNSIGNED_ROUND((inch) * (uint32_t)AZOTEQ_IQS5XX_HEIGHT_MM * 10, 254)) +#define AZOTEQ_IQS5XX_RESOLUTION_Y_TO_INCH(px) (DIVIDE_UNSIGNED_ROUND((px) * (uint32_t)254, AZOTEQ_IQS5XX_HEIGHT_MM * 10)) + +static uint16_t azoteq_iqs5xx_product_number = AZOTEQ_IQS5XX_UNKNOWN; + +static struct { + uint16_t resolution_x; + uint16_t resolution_y; +} azoteq_iqs5xx_device_resolution_t; + +i2c_status_t azoteq_iqs5xx_wake(void) { + uint8_t data = 0; + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PREVIOUS_CYCLE_TIME, (uint8_t *)&data, sizeof(data), 1); + i2c_stop(); + wait_us(150); + return status; +} +i2c_status_t azoteq_iqs5xx_end_session(void) { + const uint8_t END_BYTE = 1; // any data + return i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_END_COMMS, &END_BYTE, 1, AZOTEQ_IQS5XX_TIMEOUT_MS); +} + +i2c_status_t azoteq_iqs5xx_get_base_data(azoteq_iqs5xx_base_data_t *base_data) { + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PREVIOUS_CYCLE_TIME, (uint8_t *)base_data, 10, AZOTEQ_IQS5XX_TIMEOUT_MS); + if (status == I2C_STATUS_SUCCESS) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +i2c_status_t azoteq_iqs5xx_get_report_rate(azoteq_iqs5xx_report_rate_t *report_rate, azoteq_iqs5xx_charging_modes_t mode, bool end_session) { + if (mode > AZOTEQ_IQS5XX_LP2) { + pd_dprintf("IQS5XX - Invalid mode for get report rate.\n"); + return I2C_STATUS_ERROR; + } + uint16_t selected_reg = AZOTEQ_IQS5XX_REG_REPORT_RATE_ACTIVE + (2 * mode); + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, selected_reg, (uint8_t *)report_rate, 2, AZOTEQ_IQS5XX_TIMEOUT_MS); + if (end_session) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +i2c_status_t azoteq_iqs5xx_set_report_rate(uint16_t report_rate_ms, azoteq_iqs5xx_charging_modes_t mode, bool end_session) { + if (mode > AZOTEQ_IQS5XX_LP2) { + pd_dprintf("IQS5XX - Invalid mode for set report rate.\n"); + return I2C_STATUS_ERROR; + } + uint16_t selected_reg = AZOTEQ_IQS5XX_REG_REPORT_RATE_ACTIVE + (2 * mode); + azoteq_iqs5xx_report_rate_t report_rate = {0}; + report_rate.h = (uint8_t)((report_rate_ms >> 8) & 0xFF); + report_rate.l = (uint8_t)(report_rate_ms & 0xFF); + i2c_status_t status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, selected_reg, (uint8_t *)&report_rate, 2, AZOTEQ_IQS5XX_TIMEOUT_MS); + if (end_session) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +i2c_status_t azoteq_iqs5xx_set_reati(bool enabled, bool end_session) { + azoteq_iqs5xx_system_config_0_t config = {0}; + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + if (status == I2C_STATUS_SUCCESS) { + config.reati = enabled; + status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + } + if (end_session) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +i2c_status_t azoteq_iqs5xx_set_event_mode(bool enabled, bool end_session) { + azoteq_iqs5xx_system_config_1_t config = {0}; + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + if (status == I2C_STATUS_SUCCESS) { + config.event_mode = enabled; + config.touch_event = true; + config.tp_event = true; + config.prox_event = false; + config.snap_event = false; + config.reati_event = false; + config.alp_prox_event = false; + config.gesture_event = true; + status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONFIG_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_config_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + } + if (end_session) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +i2c_status_t azoteq_iqs5xx_set_gesture_config(bool end_session) { + azoteq_iqs5xx_gesture_config_t config = {0}; + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SINGLE_FINGER_GESTURES, (uint8_t *)&config, sizeof(azoteq_iqs5xx_gesture_config_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + pd_dprintf("azo scroll: %d\n", config.multi_finger_gestures.scroll); + if (status == I2C_STATUS_SUCCESS) { + config.single_finger_gestures.single_tap = AZOTEQ_IQS5XX_TAP_ENABLE; + config.single_finger_gestures.press_and_hold = AZOTEQ_IQS5XX_PRESS_AND_HOLD_ENABLE; + config.single_finger_gestures.swipe_x_plus = AZOTEQ_IQS5XX_SWIPE_X_ENABLE; + config.single_finger_gestures.swipe_x_minus = AZOTEQ_IQS5XX_SWIPE_X_ENABLE; + config.single_finger_gestures.swipe_y_plus = AZOTEQ_IQS5XX_SWIPE_Y_ENABLE; + config.single_finger_gestures.swipe_y_minus = AZOTEQ_IQS5XX_SWIPE_Y_ENABLE; + config.multi_finger_gestures.two_finger_tap = AZOTEQ_IQS5XX_TWO_FINGER_TAP_ENABLE; + config.multi_finger_gestures.scroll = AZOTEQ_IQS5XX_SCROLL_ENABLE; + config.multi_finger_gestures.zoom = AZOTEQ_IQS5XX_ZOOM_ENABLE; + config.tap_time = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_TAP_TIME); + config.tap_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_TAP_DISTANCE); + config.hold_time = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_HOLD_TIME); + config.swipe_initial_time = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_SWIPE_INITIAL_TIME); + config.swipe_initial_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_SWIPE_INITIAL_DISTANCE); + config.swipe_consecutive_time = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_TIME); + config.swipe_consecutive_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_SWIPE_CONSECUTIVE_DISTANCE); + config.scroll_initial_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_SCROLL_INITIAL_DISTANCE); + config.zoom_initial_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_ZOOM_INITIAL_DISTANCE); + config.zoom_consecutive_distance = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(AZOTEQ_IQS5XX_ZOOM_CONSECUTIVE_DISTANCE); + status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SINGLE_FINGER_GESTURES, (uint8_t *)&config, sizeof(azoteq_iqs5xx_gesture_config_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + } + if (end_session) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +i2c_status_t azoteq_iqs5xx_set_xy_config(bool flip_x, bool flip_y, bool switch_xy, bool palm_reject, bool end_session) { + azoteq_iqs5xx_xy_config_0_t config = {0}; + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_XY_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_xy_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + if (status == I2C_STATUS_SUCCESS) { + if (flip_x) { + config.flip_x = !config.flip_x; + } + if (flip_y) { + config.flip_y = !config.flip_y; + } + if (switch_xy) { + config.switch_xy_axis = !config.switch_xy_axis; + } + config.palm_reject = palm_reject; + status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_XY_CONFIG_0, (uint8_t *)&config, sizeof(azoteq_iqs5xx_xy_config_0_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + } + if (end_session) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +i2c_status_t azoteq_iqs5xx_reset_suspend(bool reset, bool suspend, bool end_session) { + azoteq_iqs5xx_system_control_1_t config = {0}; + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONTROL_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_control_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + if (status == I2C_STATUS_SUCCESS) { + config.reset = reset; + config.suspend = suspend; + status = i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_SYSTEM_CONTROL_1, (uint8_t *)&config, sizeof(azoteq_iqs5xx_system_control_1_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + } + if (end_session) { + azoteq_iqs5xx_end_session(); + } + return status; +} + +void azoteq_iqs5xx_set_cpi(uint16_t cpi) { + if (azoteq_iqs5xx_product_number != AZOTEQ_IQS5XX_UNKNOWN) { + azoteq_iqs5xx_resolution_t resolution = {0}; + resolution.x_resolution = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(MIN(azoteq_iqs5xx_device_resolution_t.resolution_x, AZOTEQ_IQS5XX_INCH_TO_RESOLUTION_X(cpi))); + resolution.y_resolution = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(MIN(azoteq_iqs5xx_device_resolution_t.resolution_y, AZOTEQ_IQS5XX_INCH_TO_RESOLUTION_Y(cpi))); + i2c_writeReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_X_RESOLUTION, (uint8_t *)&resolution, sizeof(azoteq_iqs5xx_resolution_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + } +} + +uint16_t azoteq_iqs5xx_get_cpi(void) { + if (azoteq_iqs5xx_product_number != AZOTEQ_IQS5XX_UNKNOWN) { + azoteq_iqs5xx_resolution_t resolution = {0}; + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_X_RESOLUTION, (uint8_t *)&resolution, sizeof(azoteq_iqs5xx_resolution_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + if (status == I2C_STATUS_SUCCESS) { + return AZOTEQ_IQS5XX_RESOLUTION_X_TO_INCH(AZOTEQ_IQS5XX_SWAP_H_L_BYTES(resolution.x_resolution)); + } + } + return 0; +} + +uint16_t azoteq_iqs5xx_get_product(void) { + i2c_status_t status = i2c_readReg16(AZOTEQ_IQS5XX_ADDRESS, AZOTEQ_IQS5XX_REG_PRODUCT_NUMBER, (uint8_t *)&azoteq_iqs5xx_product_number, sizeof(uint16_t), AZOTEQ_IQS5XX_TIMEOUT_MS); + if (status == I2C_STATUS_SUCCESS) { + azoteq_iqs5xx_product_number = AZOTEQ_IQS5XX_SWAP_H_L_BYTES(azoteq_iqs5xx_product_number); + } + pd_dprintf("AZOTEQ: Product number %u\n", azoteq_iqs5xx_product_number); + return azoteq_iqs5xx_product_number; +} + +void azoteq_iqs5xx_setup_resolution(void) { +#if !defined(AZOTEQ_IQS5XX_RESOLUTION_X) && !defined(AZOTEQ_IQS5XX_RESOLUTION_Y) + switch (azoteq_iqs5xx_product_number) { + case AZOTEQ_IQS550: + azoteq_iqs5xx_device_resolution_t.resolution_x = 3584; + azoteq_iqs5xx_device_resolution_t.resolution_y = 2304; + break; + case AZOTEQ_IQS572: + azoteq_iqs5xx_device_resolution_t.resolution_x = 2048; + azoteq_iqs5xx_device_resolution_t.resolution_y = 1792; + break; + case AZOTEQ_IQS525: + azoteq_iqs5xx_device_resolution_t.resolution_x = 1280; + azoteq_iqs5xx_device_resolution_t.resolution_y = 768; + break; + default: + // shouldn't be here + azoteq_iqs5xx_device_resolution_t.resolution_x = 0; + azoteq_iqs5xx_device_resolution_t.resolution_y = 0; + break; + } +#endif +#ifdef AZOTEQ_IQS5XX_RESOLUTION_X + azoteq_iqs5xx_device_resolution_t.resolution_x = AZOTEQ_IQS5XX_RESOLUTION_X; +#endif +#ifdef AZOTEQ_IQS5XX_RESOLUTION_Y + azoteq_iqs5xx_device_resolution_t.resolution_y = AZOTEQ_IQS5XX_RESOLUTION_Y; +#endif +} diff --git a/drivers/sensors/azoteq_iqs5xx.h b/drivers/sensors/azoteq_iqs5xx.h new file mode 100644 index 000000000000..704ec2bab3bd --- /dev/null +++ b/drivers/sensors/azoteq_iqs5xx.h @@ -0,0 +1,193 @@ +// Copyright 2023 Dasky (@daskygit) +// Copyright 2023 George Norton (@george-norton) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "i2c_master.h" +#include "pointing_device.h" +#include "util.h" + +typedef enum { + AZOTEQ_IQS5XX_UNKNOWN, + AZOTEQ_IQS550 = 40, + AZOTEQ_IQS525 = 52, + AZOTEQ_IQS572 = 58, +} azoteq_iqs5xx_product_numbers_t; +typedef enum { + AZOTEQ_IQS5XX_ACTIVE, + AZOTEQ_IQS5XX_IDLE_TOUCH, + AZOTEQ_IQS5XX_IDLE, + AZOTEQ_IQS5XX_LP1, + AZOTEQ_IQS5XX_LP2, +} azoteq_iqs5xx_charging_modes_t; + +typedef struct { + uint8_t h : 8; + uint8_t l : 8; +} azoteq_iqs5xx_report_rate_t; + +typedef struct PACKED { + bool single_tap : 1; // Single tap gesture status + bool press_and_hold : 1; // Press and hold gesture status + bool swipe_x_neg : 1; // Swipe in negative X direction status + bool swipe_x_pos : 1; // Swipe in positive X direction status + bool swipe_y_pos : 1; // Swipe in positive Y direction status + bool swipe_y_neg : 1; // Swipe in negative Y direction status + uint8_t _unused : 2; // unused +} azoteq_iqs5xx_gesture_events_0_t; + +typedef struct PACKED { + bool two_finger_tap : 1; // Two finger tap gesture status + bool scroll : 1; // Scroll status + bool zoom : 1; // Zoom gesture status + uint8_t _unused : 5; // unused +} azoteq_iqs5xx_gesture_events_1_t; + +typedef struct PACKED { + azoteq_iqs5xx_charging_modes_t charging_mode : 3; // Indicates current mode + bool ati_error : 1; // + bool reati_occurred : 1; // + bool alp_ati_error : 1; // + bool alp_reati_occurred : 1; // + bool show_reset : 1; // +} azoteq_iqs5xx_system_info_0_t; + +typedef struct PACKED { + bool tp_movement : 1; // + bool palm_detect : 1; // Palm detect status + bool too_many_fingers : 1; // Total finger status + bool rr_missed : 1; // Report rate status + bool snap_toggle : 1; // Change in any snap channel status + bool switch_state : 1; // Status of input pin SW_IN + uint8_t _unused : 2; // unused +} azoteq_iqs5xx_system_info_1_t; + +typedef struct { + uint8_t h : 8; + uint8_t l : 8; +} azoteq_iqs5xx_relative_xy_t; + +typedef struct { + uint8_t previous_cycle_time; + azoteq_iqs5xx_gesture_events_0_t gesture_events_0; + azoteq_iqs5xx_gesture_events_1_t gesture_events_1; + azoteq_iqs5xx_system_info_0_t system_info_0; + azoteq_iqs5xx_system_info_1_t system_info_1; + uint8_t number_of_fingers; + azoteq_iqs5xx_relative_xy_t x; + azoteq_iqs5xx_relative_xy_t y; +} azoteq_iqs5xx_base_data_t; + +_Static_assert(sizeof(azoteq_iqs5xx_base_data_t) == 10, "azoteq_iqs5xx_basic_report_t should be 10 bytes"); + +typedef struct { + uint8_t number_of_fingers; + azoteq_iqs5xx_relative_xy_t x; + azoteq_iqs5xx_relative_xy_t y; +} azoteq_iqs5xx_report_data_t; + +_Static_assert(sizeof(azoteq_iqs5xx_report_data_t) == 5, "azoteq_iqs5xx_report_data_t should be 5 bytes"); + +typedef struct PACKED { + bool sw_input : 1; + bool sw_input_select : 1; + bool reati : 1; + bool alp_reati : 1; + bool sw_input_event : 1; + bool wdt : 1; + bool setup_complete : 1; + bool manual_control : 1; +} azoteq_iqs5xx_system_config_0_t; + +typedef struct PACKED { + bool event_mode : 1; + bool gesture_event : 1; + bool tp_event : 1; + bool reati_event : 1; + bool alp_prox_event : 1; + bool snap_event : 1; + bool touch_event : 1; + bool prox_event : 1; +} azoteq_iqs5xx_system_config_1_t; + +typedef struct PACKED { + bool flip_x : 1; + bool flip_y : 1; + bool switch_xy_axis : 1; + bool palm_reject : 1; + uint8_t _unused : 4; +} azoteq_iqs5xx_xy_config_0_t; + +typedef struct PACKED { + bool suspend : 1; + bool reset : 1; + int8_t _unused : 6; +} azoteq_iqs5xx_system_control_1_t; + +typedef struct PACKED { + bool single_tap : 1; + bool press_and_hold : 1; + bool swipe_x_minus : 1; + bool swipe_x_plus : 1; + bool swipe_y_plus : 1; + bool swipe_y_minus : 1; + int8_t _unused : 2; +} azoteq_iqs5xx_single_finger_gesture_enable_t; + +typedef struct PACKED { + bool two_finger_tap : 1; + bool scroll : 1; + bool zoom : 1; + int8_t _unused : 5; +} azoteq_iqs5xx_multi_finger_gesture_enable_t; + +typedef struct PACKED { + azoteq_iqs5xx_single_finger_gesture_enable_t single_finger_gestures; + azoteq_iqs5xx_multi_finger_gesture_enable_t multi_finger_gestures; + uint16_t tap_time; + uint16_t tap_distance; + uint16_t hold_time; + uint16_t swipe_initial_time; + uint16_t swipe_initial_distance; + uint16_t swipe_consecutive_time; + uint16_t swipe_consecutive_distance; + int8_t swipe_angle; + uint16_t scroll_initial_distance; + int8_t scroll_angle; + uint16_t zoom_initial_distance; + uint16_t zoom_consecutive_distance; +} azoteq_iqs5xx_gesture_config_t; + +_Static_assert(sizeof(azoteq_iqs5xx_gesture_config_t) == 24, "azoteq_iqs5xx_gesture_config_t should be 24 bytes"); + +typedef struct { + uint16_t x_resolution; + uint16_t y_resolution; +} azoteq_iqs5xx_resolution_t; + +#define AZOTEQ_IQS5XX_COMBINE_H_L_BYTES(h, l) ((int16_t)(h << 8) | l) +#define AZOTEQ_IQS5XX_SWAP_H_L_BYTES(b) ((uint16_t)((b & 0xff) << 8) | (b >> 8)) + +#ifndef AZOTEQ_IQS5XX_REPORT_RATE +# define AZOTEQ_IQS5XX_REPORT_RATE 10 +#endif +#if !defined(POINTING_DEVICE_TASK_THROTTLE_MS) && !defined(POINTING_DEVICE_MOTION_PIN) +# define POINTING_DEVICE_TASK_THROTTLE_MS AZOTEQ_IQS5XX_REPORT_RATE +#endif + +void azoteq_iqs5xx_init(void); +i2c_status_t azoteq_iqs5xx_wake(void); +report_mouse_t azoteq_iqs5xx_get_report(report_mouse_t mouse_report); +i2c_status_t azoteq_iqs5xx_get_report_rate(azoteq_iqs5xx_report_rate_t *report_rate, azoteq_iqs5xx_charging_modes_t mode, bool end_session); +i2c_status_t azoteq_iqs5xx_set_report_rate(uint16_t report_rate_ms, azoteq_iqs5xx_charging_modes_t mode, bool end_session); +i2c_status_t azoteq_iqs5xx_set_event_mode(bool enabled, bool end_session); +i2c_status_t azoteq_iqs5xx_set_reati(bool enabled, bool end_session); +i2c_status_t azoteq_iqs5xx_set_gesture_config(bool end_session); +i2c_status_t azoteq_iqs5xx_set_xy_config(bool flip_x, bool flip_y, bool switch_xy, bool palm_reject, bool end_session); +i2c_status_t azoteq_iqs5xx_reset_suspend(bool reset, bool suspend, bool end_session); +i2c_status_t azoteq_iqs5xx_get_base_data(azoteq_iqs5xx_base_data_t *base_data); +void azoteq_iqs5xx_set_cpi(uint16_t cpi); +uint16_t azoteq_iqs5xx_get_cpi(void); +uint16_t azoteq_iqs5xx_get_product(void); +void azoteq_iqs5xx_setup_resolution(void); diff --git a/drivers/sensors/pmw3320.c b/drivers/sensors/pmw3320.c index a4648ef425b0..69a584f4e144 100644 --- a/drivers/sensors/pmw3320.c +++ b/drivers/sensors/pmw3320.c @@ -178,7 +178,7 @@ uint16_t pmw3320_get_cpi(void) { } void pmw3320_set_cpi(uint16_t cpi) { - uint8_t cpival = constrain((cpi / PMW3320_CPI_STEP) - 1U, 0, (PMW3320_CPI_MAX / PMW3320_CPI_STEP) - 1U); + uint8_t cpival = constrain((cpi / PMW3320_CPI_STEP), (PMW3320_CPI_MIN / PMW3320_CPI_STEP), (PMW3320_CPI_MAX / PMW3320_CPI_STEP)) - 1U; // Fifth bit is probably a control bit. // PMW3320 datasheet don't have any info on this, so this is a pure guess. pmw3320_write_reg(REG_Resolution, 0x20 | cpival); diff --git a/drivers/sensors/pmw3360.c b/drivers/sensors/pmw3360.c index 81dca002e2df..a7dc687f50de 100644 --- a/drivers/sensors/pmw3360.c +++ b/drivers/sensors/pmw3360.c @@ -23,7 +23,7 @@ void pmw33xx_set_cpi(uint8_t sensor, uint16_t cpi) { return; } - uint8_t cpival = CONSTRAIN((cpi / PMW33XX_CPI_STEP) - 1, 0, (PMW33XX_CPI_MAX / PMW33XX_CPI_STEP) - 1U); + uint8_t cpival = CONSTRAIN((cpi / PMW33XX_CPI_STEP), (PMW33XX_CPI_MIN / PMW33XX_CPI_STEP), (PMW33XX_CPI_MAX / PMW33XX_CPI_STEP)) - 1U; pmw33xx_write(sensor, REG_Config1, cpival); } diff --git a/drivers/sensors/pmw3389.c b/drivers/sensors/pmw3389.c index c5781a5ffe03..10e578edac6a 100644 --- a/drivers/sensors/pmw3389.c +++ b/drivers/sensors/pmw3389.c @@ -22,7 +22,7 @@ void pmw33xx_set_cpi(uint8_t sensor, uint16_t cpi) { return; } - uint16_t cpival = CONSTRAIN((cpi / PMW33XX_CPI_STEP) - 1, 0, (PMW33XX_CPI_MAX / PMW33XX_CPI_STEP) - 1U); + uint16_t cpival = CONSTRAIN((cpi / PMW33XX_CPI_STEP), (PMW33XX_CPI_MIN / PMW33XX_CPI_STEP), (PMW33XX_CPI_MAX / PMW33XX_CPI_STEP)) - 1U; // Sets upper byte first for more consistent setting of cpi pmw33xx_write(sensor, REG_Resolution_H, (cpival >> 8) & 0xFF); pmw33xx_write(sensor, REG_Resolution_L, cpival & 0xFF); diff --git a/drivers/ws2812.h b/drivers/ws2812.h index 8750b0110eef..1527df23d371 100644 --- a/drivers/ws2812.h +++ b/drivers/ws2812.h @@ -73,4 +73,4 @@ * - Send out the LED data * - Wait 50us to reset the LEDs */ -void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds); +void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds); diff --git a/keyboards/0xcb/splaytoraid/config.h b/keyboards/0xcb/splaytoraid/config.h index 2f2eb82fee34..00674eea11cb 100644 --- a/keyboards/0xcb/splaytoraid/config.h +++ b/keyboards/0xcb/splaytoraid/config.h @@ -8,7 +8,6 @@ #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING #define RGB_MATRIX_DEFAULT_HUE 152 #define RGB_MATRIX_DEFAULT_SAT 232 -#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_DEFAULT_SPD 50 #define ENABLE_RGB_MATRIX_BREATHING diff --git a/keyboards/1k/keymaps/default/rgblite.h b/keyboards/1k/keymaps/default/rgblite.h index e64f49ee0aa3..29d684ac0815 100644 --- a/keyboards/1k/keymaps/default/rgblite.h +++ b/keyboards/1k/keymaps/default/rgblite.h @@ -7,7 +7,7 @@ #include "color.h" static inline void rgblite_setrgb(RGB rgb) { - LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; + rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; ws2812_setleds(leds, RGBLED_NUM); } diff --git a/keyboards/1k/keymaps/media/rgblite.h b/keyboards/1k/keymaps/media/rgblite.h index e64f49ee0aa3..29d684ac0815 100644 --- a/keyboards/1k/keymaps/media/rgblite.h +++ b/keyboards/1k/keymaps/media/rgblite.h @@ -7,7 +7,7 @@ #include "color.h" static inline void rgblite_setrgb(RGB rgb) { - LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; + rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; ws2812_setleds(leds, RGBLED_NUM); } diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/config.h b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/config.h deleted file mode 100644 index 65293382cf69..000000000000 --- a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2018 Chuck "@vosechu" Lauer Vose - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -// place overrides here diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c deleted file mode 100644 index eeca330838ab..000000000000 --- a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright 2018 Chuck "@vosechu" Lauer Vose - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -#define SPACEFN LT(1, KC_SPC) -#define CTL_GRV CTL_T(KC_GRV) -#define ALT_TAB ALT_T(KC_TAB) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_ansi( - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS , KC_EQL , KC_BSPC , - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC , KC_RBRC , KC_BSLS , - KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , KC_ENT , - KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT , - CTL_GRV , ALT_TAB , KC_LGUI , SPACEFN , KC_RALT , KC_RGUI , MO(1) , KC_RCTL - ), - - [1] = LAYOUT_60_ansi( - KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_DEL , - KC_TRNS , KC_TRNS , KC_UP , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_PSCR , KC_SCRL , KC_PAUS , KC_TRNS , - KC_TRNS , KC_LEFT , KC_DOWN , KC_RGHT , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_INS , KC_HOME , KC_PGUP , KC_TRNS , - KC_TRNS , KC_VOLU , KC_VOLD , KC_MUTE , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_END , KC_PGDN , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , MO(2) , KC_TRNS , KC_TRNS - ), - - [2] = LAYOUT_60_ansi( - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , QK_BOOT, - BL_TOGG , BL_UP , BL_DOWN , BL_STEP , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , - RGB_TOG , RGB_MOD , RGB_HUI , RGB_SAI , RGB_VAI , RGB_SPI , RGB_M_P , RGB_M_B , RGB_M_R , RGB_M_SW , KC_TRNS , KC_TRNS , KC_TRNS , - KC_TRNS , RGB_RMOD , RGB_HUD , RGB_SAD , RGB_VAD , RGB_SPD , RGB_M_SN , RGB_M_K , RGB_M_X , RGB_M_G , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS - ) -}; diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/readme.md b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/readme.md deleted file mode 100644 index 97e9453b7c9d..000000000000 --- a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/readme.md +++ /dev/null @@ -1,6 +0,0 @@ -# 1up60hse keymap made by vosechu - -Tweaks from default - -* Add in SpaceFN so arrows are reachable with just left hand (leaving right free for mousing). -* Also add tab/grv under the alt/ctrl keys to make those easier to reach. diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c deleted file mode 100644 index 197c449122fe..000000000000 --- a/keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c +++ /dev/null @@ -1,59 +0,0 @@ -/* -Copyright 2020 Dan White - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "badger.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY_MAC] = LAYOUT_tsangan( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MOVE_MAC, 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, CFG_MAC, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ADJUST, KC_RALT, KC_RGUI), - - [_MOVE_MAC] = LAYOUT_tsangan( - MAC_FRC, MM_LEFT, MM_RGHT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_0, IJ_TOP, IJ_BOTT, _______, _______, - KC_BACK, IJ_STEP, IJ_INTO, IJ_OUT, IJ_RUN, IJ_STOP, _______, WD_BACK, KC_HOME, KC_END, WD_FRWD, IJ_BACK, IJ_FWD, KC_NEXT, - _______, MM_LH, MM_MAX, MM_RH, IJ_FIND, IJ_IMPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CM_RIGHT, CM_DOWN, _______, - _______, MM_UH, MM_BH, MAC_CPY, MAC_PST, IJ_IMPH, _______, IJ_REN, IJ_IMPL, IJ_DECL, IJ_USAG, _______, _______, - _______, _______, _______, _______, _______, _______, _______), - - [_QWERTY_LINUX] = LAYOUT_tsangan( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MOVE, 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, CFG_LNX, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, ADJUST, KC_RALT, KC_RGUI), - - [_MOVE_LINUX] = LAYOUT_tsangan( - KC_GRV, VD_1, VD_2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - KC_BACK, WM_VD1, WM_UH, WM_VD2, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, - _______, WM_LH, WM_MAX, WM_RH, WD_FRWD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, - _______, WM_VD3, WM_BH, OS_COPY, OS_PAST, WD_BACK, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______), - - [_ADJUST] = LAYOUT_tsangan( - 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_WREF, KC_MSTP, KC_MPLY, KC_PGUP, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_INS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_CAPS, _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, KC_WSCH, _______, _______, - _______, _______, _______, _______, _______, _______, _______), - - [_CONFIG] = LAYOUT_tsangan( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - _______, NK_ON, NK_OFF, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, - _______, GE_SWAP, GE_NORM, DB_TOGG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, RGB_M_B, _______, _______, RGB_TOG, _______, - _______, DF_1, DF_2, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, RGB_M_K, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______) -}; diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c deleted file mode 100644 index 214316cd6572..000000000000 --- a/keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c +++ /dev/null @@ -1,59 +0,0 @@ -/* -Copyright 2020 Dan White -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "badger.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY_MAC] = LAYOUT_60_ansi_tsangan_split_rshift( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MOVE_MAC, 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, CFG_MAC, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ADJUST, KC_RALT, KC_RGUI), - - [_MOVE_MAC] = LAYOUT_60_ansi_tsangan_split_rshift( - MAC_FRC, MM_LEFT, MM_RGHT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_0, IJ_TOP, IJ_BOTT, KC_DEL, - KC_BACK, IJ_STEP, IJ_INTO, IJ_OUT, IJ_RUN, IJ_STOP, _______, WD_BACK, KC_HOME, KC_END, WD_FRWD, IJ_BACK, IJ_FWD, KC_NEXT, - _______, MM_LH, MM_MAX, MM_RH, IJ_FIND, IJ_IMPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CM_RIGHT, CM_DOWN, _______, - _______, MM_UH, MM_BH, MAC_CPY, MAC_PST, IJ_IMPH, _______, IJ_REN, IJ_IMPL, IJ_DECL, IJ_USAG, _______, _______, - _______, _______, _______, _______, _______, _______, _______), - - [_QWERTY_LINUX] = LAYOUT_60_ansi_tsangan_split_rshift( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MOVE, 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, CFG_LNX, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, ADJUST, KC_LALT, KC_RGUI), - - [_MOVE_LINUX] = LAYOUT_60_ansi_tsangan_split_rshift( - KC_GRV, VD_1, VD_2, VD_3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - KC_BACK, WM_VD1, WM_UH, WM_VD2, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, - _______, WM_LH, WM_MAX, WM_RH, WD_FRWD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, - _______, WM_VD3, WM_BH, OS_COPY, OS_PAST, WD_BACK, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______), - - [_ADJUST] = LAYOUT_60_ansi_tsangan_split_rshift( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, _______, _______, KC_WREF, KC_MSTP, KC_MPLY, KC_PGUP, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_INS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, DF_1, DF_2, KC_CAPS, _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, KC_WSCH, _______, _______, - _______, _______, _______, _______, _______, _______, _______), - - [_CONFIG] = LAYOUT_60_ansi_tsangan_split_rshift( - _______, 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, - _______, NK_ON, NK_OFF, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, - _______, GE_SWAP, GE_NORM, DB_TOGG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, RGB_M_B, _______, _______, RGB_TOG, _______, - _______, LAG_SWP, LAG_NRM, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, RGB_M_K, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______) -}; - diff --git a/keyboards/1upkeyboards/1upocarina/info.json b/keyboards/1upkeyboards/1upocarina/info.json index fccf9d889981..c6a371808250 100644 --- a/keyboards/1upkeyboards/1upocarina/info.json +++ b/keyboards/1upkeyboards/1upocarina/info.json @@ -37,6 +37,7 @@ ] }, "ws2812": { + "driver": "vendor", "pin": "GP24" }, "rgb_matrix": { diff --git a/keyboards/1upkeyboards/1upocarina/rules.mk b/keyboards/1upkeyboards/1upocarina/rules.mk index 8e853e0af70b..6e7633bfe015 100644 --- a/keyboards/1upkeyboards/1upocarina/rules.mk +++ b/keyboards/1upkeyboards/1upocarina/rules.mk @@ -1 +1 @@ -WS2812_DRIVER = vendor \ No newline at end of file +# This file intentionally left blank diff --git a/keyboards/1upkeyboards/1upslider8/1upslider8.c b/keyboards/1upkeyboards/1upslider8/1upslider8.c new file mode 100644 index 000000000000..e6d6698ee9b7 --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/1upslider8.c @@ -0,0 +1,400 @@ +/* Copyright 2022 ziptyze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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.h" +#include "qmk_midi.h" + +#include "quantum.h" +#include "quantum/midi/midi.h" +#include "quantum/midi/midi_device.h" + +uint8_t divisor = 0; +void slider(void) { + if (divisor++) { // only run the slider function 1/256 times it's called + return; + } + midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3)); + uprintf("%d string", analogReadPin(SLIDER_PIN)); +} + +void housekeeping_task_kb(void) { + slider(); + housekeeping_task_user(); +} + +static uint32_t oled_logo_timer = 0; +static bool clear_logo = true; +static const char PROGMEM my_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, + 0xE0, 0xF0, 0x70, 0x70, 0x70, 0x70, + 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x63, 0xE7, 0xE7, 0xCE, 0xCE, + 0xCE, 0xCE, 0xFC, 0xFC, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC1, + 0x01, 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, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, + 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, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0x1F, 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, + 0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C, + 0x1C, 0x3C, 0xF8, 0xF8, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x70, + 0x70, 0x70, 0x70, 0x78, 0x3F, 0x3F, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xF0, 0xF0, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0xCE, 0xCE, + 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0xC1, 0xC1, 0xC1, + 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x81, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x39, 0x39, 0x79, 0xF9, 0xF9, + 0xDF, 0x9F, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x07, 0x07, 0x06, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1C, 0xBE, + 0xFF, 0x63, 0x63, 0xFF, 0xBE, 0x1C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x0F, 0x1F, 0x18, 0x18, 0x1F, + 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + return OLED_ROTATION_270; +} + + +static const char PROGMEM ou_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFC, 0xFC, 0xCF, 0xCF, + 0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF, + 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, + 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, + 0x03, 0x03, 0xF3, 0xF3, 0x03, 0x03, + 0x0C, 0x0C, 0xFC, 0xFC, 0x00, 0x00, + 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, + 0xFF, 0xFF, 0xF0, 0xF0, 0xC3, 0xC3, + 0xC0, 0xC0, 0xF0, 0xF0, 0xFF, 0xFF, + 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0xFC, + 0x0C, 0x0C, 0x0F, 0x0F, 0x03, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + + +static char PROGMEM caps_on[] = { + 0x00, 0x00, 0x00, 0xF8, 0x04, 0x04, + 0x04, 0x88, 0x00, 0x00, 0xE0, 0x58, + 0x44, 0x58, 0xE0, 0x00, 0x00, 0xFC, + 0x24, 0x24, 0x24, 0x18, 0x00, 0x00, + 0x98, 0x24, 0x24, 0x24, 0xC8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x81, + 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF1, + 0xF0, 0xF1, 0xF0, 0xF0, 0xE0, 0xC0, + 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, + 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + +static char PROGMEM caps_off[] = { + 0x00, 0x00, 0x00, 0xF8, 0x04, 0x04, + 0x04, 0x88, 0x00, 0x00, 0xE0, 0x58, + 0x44, 0x58, 0xE0, 0x00, 0x00, 0xFC, + 0x24, 0x24, 0x24, 0x18, 0x00, 0x00, + 0x98, 0x24, 0x24, 0x24, 0xC8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x81, + 0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x31, + 0x30, 0x31, 0x70, 0xF0, 0xE0, 0xC0, + 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, + 0x3C, 0x38, 0x30, 0x30, 0x30, 0x30, + 0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + +static const char PROGMEM num_on[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0x18, 0x20, 0xC0, 0xFC, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0xFC, 0x18, 0x60, 0x80, + 0x60, 0x18, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, + 0xC0, 0xE0, 0xF0, 0xF0, 0xF1, 0xF1, + 0xF1, 0xF0, 0xF0, 0xF0, 0xE1, 0xC0, + 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, + 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + +static const char PROGMEM num_off[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0x18, 0x20, 0xC0, 0xFC, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0xFC, 0x18, 0x60, 0x80, + 0x60, 0x18, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, + 0xC0, 0xE0, 0xF0, 0x70, 0x31, 0x31, + 0x31, 0x30, 0x70, 0xF0, 0xE1, 0xC0, + 0x80, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, + 0x3C, 0x38, 0x30, 0x30, 0x30, 0x30, + 0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + +static const char PROGMEM scrl_on[] = { + 0x00, 0x00, 0x00, 0x98, 0x24, 0x24, + 0x24, 0xC8, 0x00, 0x00, 0xF8, 0x04, + 0x04, 0x04, 0x88, 0x00, 0x00, 0xFC, + 0x24, 0x24, 0xE4, 0x18, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x80, + 0xC0, 0xE1, 0xF1, 0xF1, 0xF0, 0xF0, + 0xF0, 0xF1, 0xF0, 0xF0, 0xE0, 0xC1, + 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, + 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, + 0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + +static const char PROGMEM scrl_off[] = { + 0x00, 0x00, 0x00, 0x98, 0x24, 0x24, + 0x24, 0xC8, 0x00, 0x00, 0xF8, 0x04, + 0x04, 0x04, 0x88, 0x00, 0x00, 0xFC, + 0x24, 0x24, 0xE4, 0x18, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x80, + 0xC0, 0xE1, 0xF1, 0x71, 0x30, 0x30, + 0x30, 0x31, 0x70, 0xF0, 0xE0, 0xC1, + 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E, + 0x3C, 0x38, 0x30, 0x30, 0x30, 0x30, + 0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + +static void render_oled(void) { + const int combined_size = sizeof(ou_logo) + sizeof(caps_off) + sizeof(num_off) + sizeof(scrl_off); + char combined[combined_size]; + led_t led_state = host_keyboard_led_state(); + + memcpy_P(combined, ou_logo, sizeof(ou_logo)); + + if (led_state.caps_lock) { + memcpy_P(combined + sizeof(ou_logo), caps_on, sizeof(caps_off)); + } + else { + memcpy_P(combined + sizeof(ou_logo), caps_off, sizeof(caps_off)); + } + + if (led_state.num_lock) { + memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off), num_on, sizeof(num_off)); + } + else { + memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off), num_off, sizeof(num_off)); + } + + if (led_state.scroll_lock) { + memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off) + sizeof(num_off), scrl_on, sizeof(scrl_off)); + } + else { + memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off) + sizeof(num_off), scrl_off, sizeof(scrl_off)); + } + + oled_write_raw_P(combined, sizeof(combined)); +} + +void render_logo(void) { + oled_write_raw_P(my_logo, sizeof(my_logo)); +} + +void clear_screen(void) { + if (clear_logo){ + for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) { + for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) { + oled_write_raw_byte(0x0, i*OLED_DISPLAY_WIDTH + j); + } + } + clear_logo = false; + } +} + +#define MIDI_CONTROL_CHANGE 0xB0 + +MidiDevice _midi_device; + +void midi_callback(uint8_t cable, uint8_t *midi_data, uint16_t length) { + // Check if this is a MIDI CC message on channel 2 + if ((midi_data[0] & 0xF0) == MIDI_CONTROL_CHANGE && midi_data[0] & (0x0F == 1)) { + uprintf("%s string", midi_data ); + // ... + } +} + +void slider8_cc_callback(struct _midi_device *dev, uint8_t cable, uint8_t code_index, uint8_t value) { + midi_callback(MIDI_CONTROL_CHANGE, &value, 1); +} + +void init_timer(void){ + oled_logo_timer = timer_read32(); +}; + +void keyboard_post_init_kb(void) { + init_timer(); + + keyboard_post_init_user(); +} + +void matrix_init_kb(void) { + midi_register_cc_callback(&_midi_device, slider8_cc_callback); + matrix_init_user(); +} + +#ifndef SHOW_LOGO +# define SHOW_LOGO 5000 +#endif +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){ + render_logo(); + }else{ + clear_screen(); + render_oled(); + } + return false; +} diff --git a/keyboards/1upkeyboards/1upslider8/config.h b/keyboards/1upkeyboards/1upslider8/config.h new file mode 100644 index 000000000000..059d16f3fab0 --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/config.h @@ -0,0 +1,29 @@ +/* Copyright 2023 Ziptyze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 I2C1_SCL_PIN GP11 +#define I2C1_SDA_PIN GP10 +#define OLED_BRIGHTNESS 128 + +#define SLIDER_PIN GP28 +#define MIDI_ADVANCED + +#define RGB_MATRIX_LED_COUNT 8 +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/1upkeyboards/1upslider8/halconf.h b/keyboards/1upkeyboards/1upslider8/halconf.h new file mode 100644 index 000000000000..bc09e4db56dc --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 ziptyze +// SPDX-License-Identifier: GPL-2.0-or-later#pragma once + +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/1upkeyboards/1upslider8/info.json b/keyboards/1upkeyboards/1upslider8/info.json new file mode 100644 index 000000000000..f2fe65106076 --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/info.json @@ -0,0 +1,115 @@ +{ + "manufacturer": "1upkeyboards", + "keyboard_name": "1upslider8", + "maintainer": "ziptyze", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x5611", + "vid": "0x6F75" + }, + "dynamic_keymap": { + "layer_count": 10 + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "oled": true, + "midi":true, + "rgb_matrix": true, + "encoder": true + }, + "encoder": { + "rotary": [ + { + "pin_a": "GP21", + "pin_b": "GP22" + } + ] + }, + "matrix_pins": { + "direct": [ + ["GP27", "GP17", "GP18", "GP19", "GP20", "GP15", "GP14", "GP13", "GP16"] + ] + }, + "bootmagic": { + "matrix": [0, 1] + }, + "ws2812": { + "pin": "GP26", + "driver": "vendor" + }, + "rgb_matrix": { + "animations": { + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron":true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "driver": "ws2812", + "layout": [ + { "flags": 4, "matrix": [0, 1], "x": 28, "y": 16 }, + { "flags": 4, "matrix": [0, 2], "x": 84, "y": 16 }, + { "flags": 4, "matrix": [0, 3], "x": 140, "y": 16 }, + { "flags": 4, "matrix": [0, 4], "x": 196, "y": 16 }, + { "flags": 4, "matrix": [0, 5], "x": 28, "y": 48 }, + { "flags": 4, "matrix": [0, 6], "x": 84, "y": 48 }, + { "flags": 4, "matrix": [0, 7], "x": 140, "y": 48 }, + { "flags": 4, "matrix": [0, 8], "x": 196, "y": 48 } + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "enc", "matrix": [0, 0], "x": 3, "y": 0 }, + { "label": "1", "matrix": [0, 1], "x": 0, "y": 1 }, + { "label": "2", "matrix": [0, 2], "x": 1, "y": 1 }, + { "label": "3", "matrix": [0, 3], "x": 2, "y": 1 }, + { "label": "4", "matrix": [0, 4], "x": 3, "y": 1 }, + { "label": "5", "matrix": [0, 5], "x": 0, "y": 2 }, + { "label": "6", "matrix": [0, 6], "x": 1, "y": 2 }, + { "label": "7", "matrix": [0, 7], "x": 2, "y": 2 }, + { "label": "8", "matrix": [0, 8], "x": 3, "y": 2 } + ] + } + } +} diff --git a/keyboards/1upkeyboards/1upslider8/keymaps/default/keymap.c b/keyboards/1upkeyboards/1upslider8/keymaps/default/keymap.c new file mode 100644 index 000000000000..9e39f9d3e381 --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2022 ziptyze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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( + RGB_TOG, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)} +}; +#endif diff --git a/keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk b/keyboards/1upkeyboards/1upslider8/keymaps/default/rules.mk similarity index 100% rename from keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk rename to keyboards/1upkeyboards/1upslider8/keymaps/default/rules.mk diff --git a/keyboards/1upkeyboards/1upslider8/keymaps/via/keymap.c b/keyboards/1upkeyboards/1upslider8/keymaps/via/keymap.c new file mode 100644 index 000000000000..4178e7de58db --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2023 ziptyze + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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( + RGB_TOG, + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8 + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)} +}; +#endif diff --git a/keyboards/1upkeyboards/1upslider8/keymaps/via/rules.mk b/keyboards/1upkeyboards/1upslider8/keymaps/via/rules.mk new file mode 100644 index 000000000000..15a5eaf11a11 --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/1upkeyboards/1upslider8/mcuconf.h b/keyboards/1upkeyboards/1upslider8/mcuconf.h new file mode 100644 index 000000000000..df9ddc79ad64 --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/mcuconf.h @@ -0,0 +1,11 @@ +// Copyright 2023 ziptyze +// SPDX-License-Identifier: GPL-2.0-or-later#pragma once + +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C1 +#undef RP_ADC_USE_ADC1 +#define RP_I2C_USE_I2C1 TRUE +#define RP_ADC_USE_ADC1 TRUE diff --git a/keyboards/1upkeyboards/1upslider8/readme.md b/keyboards/1upkeyboards/1upslider8/readme.md new file mode 100644 index 000000000000..d1ad304b463f --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/readme.md @@ -0,0 +1,27 @@ +# slider8 + +![slider8](https://i.imgur.com/AiVQySnh.jpg) + + +This keyboard is the slider8 from 1upkeyboards.com, a small macropad with an oled, slide potentiometer, rotary encoder, and 8 switches in a 2x4 ortholinear arrangement with per-key in-switch rgb leds. + +The slide potentiometer presents to the computer as a midi device and will need a seperate program to map to device control. + +* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze) + +Make example for this keyboard (after setting up your build environment): + + make 1upkeyboards/1upslider8:default + +Flashing example for this keyboard: + + make 1upkeyboards/1upslider8:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical reset button**: Hold down the button on the pi pico and plug in the keyboard diff --git a/keyboards/1upkeyboards/1upslider8/rules.mk b/keyboards/1upkeyboards/1upslider8/rules.mk new file mode 100644 index 000000000000..cc588202788d --- /dev/null +++ b/keyboards/1upkeyboards/1upslider8/rules.mk @@ -0,0 +1 @@ +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/config.h b/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/config.h deleted file mode 100644 index 834b7ee0ab23..000000000000 --- a/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/config.h +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#pragma once - -# define TAPPING_TERM 160 -# define TAPPING_TERM_PER_KEY -# define HOLD_ON_OTHER_KEY_PRESS -# define QUICK_TAP_TERM TAPPING_TERM / 2 -# define QUICK_TAP_TERM_PER_KEY - - - diff --git a/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/keymap.c b/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/keymap.c deleted file mode 100644 index 636aad675bc7..000000000000 --- a/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/keymap.c +++ /dev/null @@ -1,290 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#include "miketronic.h" - - - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Workman - * ┌─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┐ - * │ TAB │ Q │ D │ R │ W │ B │ │ J │ F │ U │ P │ BSPC│ BSPC│ - * │ ESC │ ESC │ │ │ │ SYM │ │ SYM │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┼─────┤ - * │ TAB │ A │ S │ H ┃ T ┃ G │ │ Y ┃ N ┃ E │ O │ I │ │ - * │SHIFT│ │ │ ┃ EX ┃ │ │ ┃ ┃ │ │ENTER│ENTER│ - * ├─────┼─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┼─────┤ - * │SHIFT| Z │ X │ M │ C │ V │ │ K │ L │ SPC │ SPC │ / │ UP | - * │ │ │ │ │ │ │ │ │ │ , │ . │ │RIGHT| - * ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┤ - * │ FN │CTRL │ OS │ ALT │LOWER│ │ │ │RAISE│ SS │CLIP │COPY │ DN │ - * │ │ │ │ │ │ │ │ │ │ │ │PASTE│LEFT │ - * └─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┘ - */ - - [_WM] = LAYOUT_ortho_4x12_wrapper ( - RGB_TOG, - _____________WORKMAN_412_001_L_____________, _____________WORKMAN_412_001_R_____________, - _____________WORKMAN_412_002_L_____________, _____________WORKMAN_412_002_R_____________, - _____________WORKMAN_412_003_L_____________, _____________WORKMAN_412_003_R_____________, - _____________WORKMAN_412_004_L_____________, _____________WORKMAN_412_004_R_____________ - ), - - [_QW] = LAYOUT_ortho_4x12_wrapper ( - RGB_TOG, - KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC, - KC_ESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, - KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_ENT, - _____________WORKMAN_412_004_L_____________, _____________WORKMAN_412_004_R_____________ - ), - - - - - /* Lower - * ┌─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┐ - * │ │ () │ [] │ /\ │ │ │ │ │ 7 │ 8 │ 9 │ │ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┼─────┤ - * │ │ @ # │ & % │ ┃ ┃ │ │ ┃ 4 ┃ 5 │ 6 │ │ │ - * │ │ │ │ ┃ ┃ │ │ ┃ ┃ │ │ │ │ - * ├─────┼─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┼─────┤ - * │ │ │ │ │ │ │ │ 0 │ 1 │ 2 │ 3 │ │ UP │ - * │ │ │ │ │ │ │ │ │ │ 0 │ │ │RIGHT│ - * ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┤ - * │ │ │ │ │LOWER│ │ │ │BPSC │ SPC │ . │ │ DN │ - * │ │ │ │ │ │ │ │ │ │ │ ENT │ │LEFT │ - * └─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┘ - */ - [_LOWER] = LAYOUT_ortho_4x12_wrapper ( - KC_MUTE, - _______________LOWER_412_L1________________, _______________LOWER_412_R1________________, - _______________LOWER_412_L2________________, _______________LOWER_412_R2________________, - _______________LOWER_412_L3________________, _______________LOWER_412_R3________________, - _______________LOWER_412_L4________________, _______________LOWER_412_R4________________ - ), - - - /* RAISE - * ┌─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┐ - * │BOOT │DEBUG│ │ │ │MAKE │ │ │ │ F7 │ F8 │ F9 │ F10 │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┼─────┤ - * │ │ RGB | RGB | RGB ┃ RGB ┃ WM │ │ ┃ / \ ┃ F4 │ F5 │ F6 │ F11 │ - * │ │ TOG │ MOD │ HUI ┃ HUD ┃ │ │ ┃ ┃ │ │ │ │ - * ├─────┼─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┼─────┤ - * │ │ RGB │ RGB │ RGB │ RGB │ QW │ │ │ _ │ F1 | F2 | F3 │ F12 │ - * │ │ SAI │ SAD │ VAI │ VAD │ │ │ │ - │ │ │ │ │ - * ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┤ - * │ │ │ │ │ │ │ │ │RAISE│ │ │ │ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * └─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┘ - */ - [_RAISE] = LAYOUT_ortho_4x12_wrapper ( - KC_MUTE, - _______________RAISE_412_L1________________, _______________RAISE_412_R1________________, - _______________RAISE_412_L2________________, _______________RAISE_412_R2________________, - _______________RAISE_412_L3________________, _______________RAISE_412_R3________________, - _________________BLANK_6___________________, _________________BLANK_6___________________ - ), - - - /* EXTRAS - * ┌─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┐ - * │ │ ! │ │ │ │ │ │ │ /\ | [ | ] | ; │ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┼─────┤ - * │SHIFT│ | |EXTRA┃ ┃ │ │ ┃ @ # ┃ & % | | ' | │ - * │ │ │ │ ┃ ┃ │ │ ┃ ┃ │ │ │ │ - * ├─────┼─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┼─────┤ - * │ │ │ │ │ │ │ │ │ │ , | . | ? │ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * └─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┘ - */ - [_EX] = LAYOUT_ortho_4x12_wrapper ( - KC_MUTE, - ______________EXTRAS_412_L1________________, ______________EXTRAS_412_R1________________, - ______________EXTRAS_412_L2________________, ______________EXTRAS_412_R2________________, - ______________EXTRAS_412_L3________________, ______________EXTRAS_412_R3________________, - ______________EXTRAS_412_L4________________, ______________EXTRAS_412_R4________________ - ), - - - - /* FUNCTION - * ┌─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┐ - * │COPY │CLIP │ SS │ │ │ │ │ │ /\ │ UP │ │ │ DEL │ - * │PASTE│ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┼─────┤ - * │TAB │ M05 | M06 | M07 ┃ M08 ┃ │ │ ┃LEFT ┃DOWN │RIGHT│ │UP │ - * │SHIFT│ │ │ ┃ ┃ │ │ ┃ ┃ │ │ │RIGHT│ - * ├─────┼─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┼─────┤ - * │ │ M01 │ M02 │ M03 │ M04 │ │ │ │ │ , | . | ? │DOWN │ - * │ │ │ │ │ │ │ │ │ │ │ │ │LEFT │ - * ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┤ - * │ │RGB1 │RGB2 │RGB3 │RGB4 │ │ │ │ │ │ │ │ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * └─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┘ - */ - [_FN] = LAYOUT_ortho_4x12_wrapper ( - KC_MUTE, - _____________FUNCTION_412_L1_______________, _____________FUNCTION_412_R1_______________, - _____________FUNCTION_412_L2_______________, _____________FUNCTION_412_R2_______________, - _____________FUNCTION_412_L3_______________, _____________FUNCTION_412_R3_______________, - _____________FUNCTION_412_L4_______________, _____________FUNCTION_412_R4_______________ - ), - - - /* SYMBOLS - * ┌─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┐ - * │ | $ | ^ | < | > │ SYMB│ │ SYMB│ | | [ | ] | - | | - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┼─────┤ - * │ | % | : | ; ┃ + ┃ = │ │ ┃ ┃ ( | ) | _ | | - * │ │ │ │ ┃ ┃ │ │ ┃ ┃ │ │ │ │ - * ├─────┼─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┼─────┤ - * | | & | ' | " | * | # │ │ ! | ? | / | \ | @ | | - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * └─────┴─────┴─────┴─────┴─────┴─────┘ └─────┴─────┴─────┴─────┴─────┴─────┘ - */ - - [_SYMB] = LAYOUT_ortho_4x12_wrapper ( - KC_MUTE, - _______, _____________SYMBOLS_310_L1________________, _____________SYMBOLS_310_R1________________, _______, - _______, _____________SYMBOLS_310_L2________________, _____________SYMBOLS_310_R2________________, _______, - _______, _____________SYMBOLS_310_L3________________, _____________SYMBOLS_310_R3________________, _______, - _________________BLANK_6___________________, _________________BLANK_6___________________ - ) - -}; - -#ifndef NUM_DIRECTIONS -# define NUM_DIRECTIONS 2 -#endif - -#if defined(ENCODER_MAP_ENABLE) && defined(KEYBOARD_1upkeyboards_pi40_mit_v1_0) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_WM] = { ENCODER_CCW_CW(LCTL(KC_V), LCTL(KC_C)) }, - [_QW] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_LOWER] = { ENCODER_CCW_CW(____, ____) }, - [_RAISE] = { ENCODER_CCW_CW(____, ____) }, - [_EX] = { ENCODER_CCW_CW(____, ____) }, - [_FN] = { ENCODER_CCW_CW(RGB_MOD, RGB_RMOD) }, - [_SYMB] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } -}; -#endif - - -#ifdef OLED_ENABLE -bool oled_task_user(void) { - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - - switch (get_highest_layer(layer_state)) { - case _LOWER: - oled_write_P(PSTR("LOWER"), false); - break; - case _RAISE: - oled_write_P(PSTR("RAISE"), false); - break; - case _EX: - oled_write_P(PSTR("EXTRA"), false); - break; - case _FN: - oled_write_P(PSTR("FUNCTION"), false); - break; - case _WM: - oled_write_P(PSTR("WORKMAN"), false); - break; - case _SYMB: - oled_write_P(PSTR("SYMBOLS"), false); - break; - default: - // Or use the write_ln shortcut over adding '\n' to the end of your string - oled_write_ln_P(PSTR("HOME"), false); - } - -// Host Keyboard LED Status - // led_t led_state = host_keyboard_led_state(); - // oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - // oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - // oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); - - return false; -} -#endif - - -bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case SFT_T(KC_A): - // Do not force the mod-tap key press to be handled as a modifier - // if any other key was pressed while the mod-tap key is held down. - return false; - case TEX: - return false; - case CTRLX: - return false; - case FNZ: - return false; - case MGUI: - return false; - case VLOWER: - return false; - case KRAISE: - return false; - default: - // Force the dual-role key press to be handled as a modifier if any - // other key was pressed while the mod-tap key is held down. - return true; - } -} - -#ifdef AUDIO_ENABLE -float leader_start_song[][2] = SONG(ONE_UP_SOUND); -float leader_succeed_song[][2] = SONG(ALL_STAR); -float leader_fail_song[][2] = SONG(RICK_ROLL); -#endif - -void matrix_scan_user(void); - -void leader_start_user(void) { -#ifdef AUDIO_ENABLE - PLAY_SONG(leader_start_song); -#endif -} - -bool did_leader_succeed; - -void leader_end_user(void) { - did_leader_succeed = false; - - if (leader_sequence_one_key(KC_E)) { - SEND_STRING(SS_LCTL(SS_LSFT("t"))); - did_leader_succeed = true; - } else if (leader_sequence_two_keys(KC_E, KC_D)) { - SEND_STRING(SS_LGUI("r") "cmd\n" SS_LCTL("c")); - did_leader_succeed = true; - } else if (leader_sequence_two_keys(KC_A, KC_T)) { - SEND_STRING("@guidehouse.com"); - did_leader_succeed = true; - } - - -#ifdef AUDIO_ENABLE - if (did_leader_succeed) { - PLAY_SONG(leader_succeed_song); - } else { - PLAY_SONG(leader_fail_song); - } -#endif -} \ No newline at end of file diff --git a/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/rules.mk b/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/rules.mk deleted file mode 100644 index b446776377ae..000000000000 --- a/keyboards/1upkeyboards/pi40/mit_v1_0/keymaps/miketronic/rules.mk +++ /dev/null @@ -1,22 +0,0 @@ -# Common feature for all keyboards -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -EXTRAKEY_ENABLE = yes # Audio control and System control -TAP_DANCE_ENABLE = yes # Tap Dance keys -NKRO_ENABLE = yes # Enable N-Key Rollover -MACROS_ENABLED = yes - - -# Keyboard specific -AUTO_SHIFT_ENABLE = no -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -MOUSEKEY_ENABLE = no # Mouse keys - -LEADER_ENABLE = yes -RGB_MATRIX_ENABLE = yes -ENCODER_ENABLE = yes -ENCODER_MAP_ENABLE = yes -OLED_ENABLE = yes diff --git a/keyboards/1upkeyboards/pi60/config.h b/keyboards/1upkeyboards/pi60/config.h index 8940acb0041f..6bbbb2293c0b 100644 --- a/keyboards/1upkeyboards/pi60/config.h +++ b/keyboards/1upkeyboards/pi60/config.h @@ -3,8 +3,6 @@ #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 10 - #define RGB_MATRIX_LED_COUNT 21 //#define RGB_MATRIX_FRAMEBUFFER_EFFECTS //#define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/1upkeyboards/pi60/info.json b/keyboards/1upkeyboards/pi60/info.json index 1f8bdb4592fe..4d0d21ea250a 100644 --- a/keyboards/1upkeyboards/pi60/info.json +++ b/keyboards/1upkeyboards/pi60/info.json @@ -11,6 +11,9 @@ "vid": "0x6F75" }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 10 + }, "features": { "audio": false, "backlight": false, @@ -66,8 +69,19 @@ {"flags": 2, "x": 20, "y": 13} ] }, + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_tsangan_hhkb", + "60_hhkb", + "60_ansi_arrow", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan" + ], "layouts": { - "LAYOUT_60_ansi": { + "LAYOUT_all": { "layout": [ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, @@ -138,6 +152,777 @@ {"label": "Menu", "matrix": [4, 13], "x": 13, "y": 4}, {"label": "RCtrl", "matrix": [4, 14], "x": 14, "y": 4} ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.25}, + {"label": "LGui", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "RAlt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "FN", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BS", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "FN", "matrix": [3, 14], "x": 14, "y": 3}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.25}, + {"label": "LGui", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "RAlt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "FN", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.5}, + {"label": "LGui", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "FN", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BS", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "FN", "matrix": [3, 14], "x": 14, "y": 3}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.5}, + {"label": "LGui", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "FN", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BS", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "FN", "matrix": [3, 14], "x": 14, "y": 3}, + + {"label": "LGui", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "FN", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1}, + + {"label": "Caps", "matrix": [2, 15], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "RShift", "matrix": [3, 12], "x": 13, "y": 3}, + {"label": "FN", "matrix": [3, 14], "x": 14, "y": 3}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.25}, + {"label": "LGui", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "RAlt", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "FN", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "Mid1U", "matrix": [4, 12], "x": 12, "y": 4}, + {"label": "Menu", "matrix": [4, 13], "x": 13, "y": 4}, + {"label": "RCtrl", "matrix": [4, 14], "x": 14, "y": 4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ISO'", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 1.25}, + {"label": "ISO<>", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.25}, + {"label": "LGui", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "RAlt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "FN", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BS", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ISO'", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 1.25}, + {"label": "ISO<>", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "FN", "matrix": [3, 14], "x": 14, "y": 3}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.25}, + {"label": "LGui", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "RAlt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "FN", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ISO'", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 1.25}, + {"label": "ISO<>", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.5}, + {"label": "LGui", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "FN", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BS", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps", "matrix": [2, 15], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ISO'", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 1.25}, + {"label": "ISO<>", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RShift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "FN", "matrix": [3, 14], "x": 14, "y": 3}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.5}, + {"label": "LGui", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "FN", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Menu", "matrix": [4, 13], "x": 12.5, "y": 4}, + {"label": "RCtrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_arrow": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps", "matrix": [2, 15], "w": 1.75, "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ISO'", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "LShift", "matrix": [3, 15], "x": 0, "y": 3, "w": 1.25}, + {"label": "ISO<>", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.75}, + {"label": "RShift", "matrix": [3, 12], "x": 13, "y": 3}, + {"label": "FN", "matrix": [3, 14], "x": 14, "y": 3}, + + {"label": "LCtrl", "matrix": [4, 15], "x": 0, "y": 4, "w": 1.25}, + {"label": "LGui", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "LAlt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "RAlt", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "FN", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "Mid1U", "matrix": [4, 12], "x": 12, "y": 4}, + {"label": "Menu", "matrix": [4, 13], "x": 13, "y": 4}, + {"label": "RCtrl", "matrix": [4, 14], "x": 14, "y": 4} + ] } } } diff --git a/keyboards/1upkeyboards/pi60/keymaps/default/keymap.c b/keyboards/1upkeyboards/pi60/keymaps/default/keymap.c index acf9ce1adb38..8a83e83b5297 100644 --- a/keyboards/1upkeyboards/pi60/keymaps/default/keymap.c +++ b/keyboards/1upkeyboards/pi60/keymaps/default/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_ansi( + [0] = LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_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_TRNS, KC_ENT, @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_TRNS, KC_APP, KC_RCTL ), - [1] = LAYOUT_60_ansi( + [1] = LAYOUT_all( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT_60_ansi( + [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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT_60_ansi( + [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, diff --git a/keyboards/1upkeyboards/pi60/keymaps/via/keymap.c b/keyboards/1upkeyboards/pi60/keymaps/via/keymap.c index 80f9d3a9f6b4..e9af7a7138b0 100644 --- a/keyboards/1upkeyboards/pi60/keymaps/via/keymap.c +++ b/keyboards/1upkeyboards/pi60/keymaps/via/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_60_ansi( + [0] = LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_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_TRNS, KC_ENT, @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_TRNS, KC_APP, KC_RCTL ), - [1] = LAYOUT_60_ansi( + [1] = LAYOUT_all( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [2] = LAYOUT_60_ansi( + [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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [3] = LAYOUT_60_ansi( + [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, @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [4] = LAYOUT_60_ansi( + [4] = 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, @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [5] = LAYOUT_60_ansi( + [5] = 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, @@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [6] = LAYOUT_60_ansi( + [6] = 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, @@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [7] = LAYOUT_60_ansi( + [7] = 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, @@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [8] = LAYOUT_60_ansi( + [8] = 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, @@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), - [9] = LAYOUT_60_ansi( + [9] = 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, diff --git a/keyboards/1upkeyboards/pi60/matrix_diagram.md b/keyboards/1upkeyboards/pi60/matrix_diagram.md new file mode 100644 index 000000000000..2300245bdb9f --- /dev/null +++ b/keyboards/1upkeyboards/pi60/matrix_diagram.md @@ -0,0 +1,60 @@ +# Matrix Diagram for 1upkeyboards pi60 + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ ─ Switch or Encoder +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ ┌─────┐ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │ │1D │ │1D │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter ┌──┴┬────┤ 1u/1.25u Split Enter ┌──┴─┬───┤ 1.25u/1u Split Enter +│2F │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │ │2C │2D │ │2C │2D │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ └───┴────┘ └───┴────┘ └────┴───┘ +│3F │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3E │─┐ +└────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴──────┴───┴───┘ │ +┌────────┐ ┌───┬──────┬───┐ │ +│3F │ 2.25u LShift 1u/1.75u/1u RShift │3B │3C │3E │─┼─ Switch or Encoder +└────────┘ └───┴──────┴───┘ │ + ┌───┐ ┌───┬───┐ │ + 1u/0.75u Gap/1u/1u RShift │3B │ │3C │3E │─┘ + └───┘ └───┴───┘ + +[Bottom Rows]──────────────────────────────────────────────── +────────────────────[6u & 6.25u Spacebar]──────────────────── +┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ +│4F │41 │42 │46 │4A │4B │4D │4E │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌─────┬───┬────┬──────────┬────┬────────┬────┬────┬───┬─────┐ +│4F │41 │42 │44 │46 │48 │4A │4B │4D │4E │ +└─────┴───┴────┴──────────┴────┴────────┴────┴────┴───┴─────┘ + ┌────────┬────┬──────────┬───┬───┬───┬───┬───┐ + │44 │46 │48 │4A │4B │4C │4D │4E │ + └────────┴────┴──────────┴───┴───┴───┴───┴───┘ + ┌───────────────────────┬───┬─────┬────┬────┐ + │46 │4A │4B │4D │4E │ + └───────────────────────┴───┴─────┴────┴────┘ + ┌───┬─────┬───┬─────┐ + │4A │4B │4D │4E │ + └───┴─────┴───┴─────┘ + +────────────────────────[7u Spacebar]──────────────────────── +┌────┬────┬─────┬───────────────────────────┬───┬───┬───┬───┐ +│4F │41 │42 │46 │4B │4C │4D │4E │ +└────┴────┴─────┴───────────────────────────┴───┴───┴───┴───┘ +┌─────┬───┬─────┬──────────┬─────┬──────────┬─────┬────┬────┐ +│4F │41 │42 │44 │46 │48 │4B │4D │4E │ +└─────┴───┴─────┴──────────┴─────┴──────────┴─────┴────┴────┘ + ┌───────────┬───┬───────────┬─────┬───┬─────┐ + │44 │46 │48 │4B │4D │4E │ + └───────────┴───┴───────────┴─────┴───┴─────┘ + └─ Switch or Encoder + +───────────────────────[10u Spacebar]──────────────────────── +┌────┬────┬───────────────────────────────────────┬────┬────┐ +│4F │41 │46 │4D │4E │ +└────┴────┴───────────────────────────────────────┴────┴────┘ +┌─────┬───┬───────────────────────────────────────┬───┬─────┐ +│4F │41 │46 │4D │4E │ +└─────┴───┴───────────────────────────────────────┴───┴─────┘ +``` diff --git a/keyboards/1upkeyboards/pi60_hse/config.h b/keyboards/1upkeyboards/pi60_hse/config.h index a47120f7d39a..b7c4d5e8bc87 100644 --- a/keyboards/1upkeyboards/pi60_hse/config.h +++ b/keyboards/1upkeyboards/pi60_hse/config.h @@ -3,8 +3,6 @@ #pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 10 #define RGB_MATRIX_LED_COUNT 16 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/1upkeyboards/pi60_hse/info.json b/keyboards/1upkeyboards/pi60_hse/info.json index 310ad3d94b0b..5b3e6b35e56e 100644 --- a/keyboards/1upkeyboards/pi60_hse/info.json +++ b/keyboards/1upkeyboards/pi60_hse/info.json @@ -11,6 +11,9 @@ "vid": "0x6F75" }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 10 + }, "features": { "audio": false, "backlight": false, diff --git a/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c b/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c index 5988a7cf0ee6..e92a9fc10d92 100644 --- a/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c +++ b/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c @@ -85,7 +85,7 @@ uint8_t remap[16] = { void refresh_leds(void) { for (uint8_t index = 0; index < 16; ++index) { uint8_t tile = tiles[index]; - setrgb(r[tile], g[tile], b[tile], (LED_TYPE *)&led[remap[index]]); + setrgb(r[tile], g[tile], b[tile], (rgb_led_t *)&led[remap[index]]); } rgblight_set(); } diff --git a/keyboards/1upkeyboards/sweet16v2/kb2040/config.h b/keyboards/1upkeyboards/sweet16v2/kb2040/config.h index 37a85b4711dd..e4609962f1f8 100644 --- a/keyboards/1upkeyboards/sweet16v2/kb2040/config.h +++ b/keyboards/1upkeyboards/sweet16v2/kb2040/config.h @@ -16,8 +16,6 @@ #pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 10 #define RGB_MATRIX_LED_COUNT 20 #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/1upkeyboards/sweet16v2/kb2040/info.json b/keyboards/1upkeyboards/sweet16v2/kb2040/info.json index f1ac861c8c72..928c8106bf98 100644 --- a/keyboards/1upkeyboards/sweet16v2/kb2040/info.json +++ b/keyboards/1upkeyboards/sweet16v2/kb2040/info.json @@ -33,6 +33,9 @@ "rows": ["GP26", "GP1", "GP18", "GP5"] }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 10 + }, "encoder": { "enabled": true, "rotary": [ diff --git a/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h b/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h index f773468d8f1e..e4609962f1f8 100644 --- a/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h +++ b/keyboards/1upkeyboards/sweet16v2/pro_micro/config.h @@ -16,9 +16,6 @@ #pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 10 - #define RGB_MATRIX_LED_COUNT 20 #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json b/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json index a8696ab64c9e..87f2f3574c42 100644 --- a/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json +++ b/keyboards/1upkeyboards/sweet16v2/pro_micro/info.json @@ -31,6 +31,9 @@ "rows": ["D1", "B5", "B4", "E6"] }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 10 + }, "encoder": { "enabled": true, "rotary": [ diff --git a/keyboards/25keys/zinc/keymaps/ginjake/keymap.c b/keyboards/25keys/zinc/keymaps/ginjake/keymap.c index b7d0e5c93a1d..5cadafb4bedc 100644 --- a/keyboards/25keys/zinc/keymaps/ginjake/keymap.c +++ b/keyboards/25keys/zinc/keymaps/ginjake/keymap.c @@ -341,10 +341,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //キー毎に時間差で色が変化していく if (aqours_next_color_timer_count % NEXT_CHANGE_TARGET_TIME == 0) { if (target_col < MATRIX_COLS) { - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[target_col]); - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[11 - target_col]); - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[12 + target_col]); - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[23 - target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[11 - target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[12 + target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[23 - target_col]); target_col++; rgblight_set(); } diff --git a/keyboards/3w6/keymaps/manna-harbour_miryoku/config.h b/keyboards/3w6/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index fb567ad7d3a4..000000000000 --- a/keyboards/3w6/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2021 weteor - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- - -#pragma once - -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -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, \ - K32, K33, K34, K35, K36, K37 \ -) diff --git a/keyboards/3w6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/3w6/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index 74df5e0fe120..000000000000 --- a/keyboards/3w6/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,17 +0,0 @@ -/* Copyright 2021 weteor - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- diff --git a/keyboards/3w6/rev1/rules.mk b/keyboards/3w6/rev1/rules.mk index 2194870d6b94..b7988ce4f55b 100644 --- a/keyboards/3w6/rev1/rules.mk +++ b/keyboards/3w6/rev1/rules.mk @@ -16,4 +16,4 @@ NO_USB_STARTUP_CHECK = yes LTO_ENABLE = no SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/3w6/rev2/rules.mk b/keyboards/3w6/rev2/rules.mk index 2194870d6b94..b7988ce4f55b 100644 --- a/keyboards/3w6/rev2/rules.mk +++ b/keyboards/3w6/rev2/rules.mk @@ -16,4 +16,4 @@ NO_USB_STARTUP_CHECK = yes LTO_ENABLE = no SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c b/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c index 090fd1d29633..3a5cef8fad0f 100644 --- a/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c +++ b/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c @@ -66,15 +66,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef AUDIO_ENABLE -float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); -float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif void persistant_default_layer_set(uint16_t default_layer) { @@ -166,39 +163,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif +void matrix_scan_user(void) { } -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick - PLAY_SONG(tone_startup); -} - -void shutdown_user(void) -{ - PLAY_SONG(tone_goodbye); - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif - //Tap Dance Definitions tap_dance_action_t tap_dance_actions[] = { //Tap once for Esc, twice for Caps Lock diff --git a/keyboards/40percentclub/gherkin/keymaps/steno/keymap.c b/keyboards/40percentclub/gherkin/keymaps/steno/keymap.c index 5f78ba1cde28..ea473fa25fbb 100644 --- a/keyboards/40percentclub/gherkin/keymaps/steno/keymap.c +++ b/keyboards/40percentclub/gherkin/keymaps/steno/keymap.c @@ -1,5 +1,4 @@ #include QMK_KEYBOARD_H -#include "keymap_steno.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_ortho_3x10( diff --git a/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c b/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c index 111264c37822..927192c63c77 100644 --- a/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c +++ b/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c @@ -1,5 +1,4 @@ #include QMK_KEYBOARD_H -#include "keymap_steno.h" #define ST_BOLT QK_STENO_BOLT #define ST_GEM QK_STENO_GEMINI diff --git a/keyboards/40percentclub/nano/keymaps/drashna/config.h b/keyboards/40percentclub/nano/keymaps/drashna/config.h deleted file mode 100644 index 411ee8a81bb4..000000000000 --- a/keyboards/40percentclub/nano/keymaps/drashna/config.h +++ /dev/null @@ -1,22 +0,0 @@ -/* 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 deleted file mode 100644 index 04da4d16ec8e..000000000000 --- a/keyboards/40percentclub/nano/keymaps/drashna/keymap.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" -#include "analog.h" -#include "pointing_device.h" - -#define KC_X0 LT(_FN, KC_ESC) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( - KC_VOLU, KC_MPLY, KC_MPRV, QK_BOOT, - KC_VOLD, KC_MUTE, KC_MNXT, QK_BOOT - ), - -}; -// clang-format on diff --git a/keyboards/40percentclub/nano/keymaps/drashna/rules.mk b/keyboards/40percentclub/nano/keymaps/drashna/rules.mk deleted file mode 100644 index aa7966a8b589..000000000000 --- a/keyboards/40percentclub/nano/keymaps/drashna/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -POINTING_DEVICE_ENABLE = yes -POINTING_DEVICE_DRIVER = analog_joystick -RGBLIGHT_ENABLE = no -CONSOLE_ENABLE = no - -BOOTLOADER = qmk-dfu diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk index 3b1b719e1421..6ba6aa5f6fa2 100644 --- a/keyboards/40percentclub/ut47/rules.mk +++ b/keyboards/40percentclub/ut47/rules.mk @@ -13,4 +13,4 @@ AUDIO_ENABLE = no # Audio output # custom matrix setup CUSTOM_MATRIX = yes SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h index 9bec945f24a8..350b9abad7f9 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h @@ -20,7 +20,7 @@ along with this program. If not, see . #define BACKLIGHT_PWM_CHANNEL 4 /* Underglow */ -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PIN A5 #define WS2812_SPI_SCK_PAL_MODE 0 @@ -41,6 +41,3 @@ along with this program. If not, see . #define LAYER_3 A8 #define LAYER_4 A9 #define LAYER_5 B9 - -/* Added extra layer for use of layer leds */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/info.json b/keyboards/4pplet/eagle_viper_rep/rev_a/info.json index 4be993daea16..baafb58153bf 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/info.json +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/info.json @@ -13,6 +13,9 @@ "rows": ["A2", "A1", "B8", "A10", "C15", "A15", "B7", "B6", "C14", "C13"] }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 5 + }, "backlight": { "pin": "A3", "levels": 10, @@ -41,6 +44,16 @@ }, "processor": "STM32F072", "bootloader": "stm32-dfu", + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_tsangan_hhkb", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan" + ], "layouts": { "LAYOUT_all": { "layout": [ @@ -115,6 +128,75 @@ {"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25} ] }, + "LAYOUT_60_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25} + ] + }, "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, @@ -186,6 +268,74 @@ {"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25} ] }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "#", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5} + ] + }, "LAYOUT_60_tsangan_hhkb": { "layout": [ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, @@ -323,6 +473,288 @@ {"label": "GUI", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, {"label": "Alt", "matrix": [9, 5], "x": 12.5, "y": 4} ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "\"", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "\"", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "|", "matrix": [1, 6], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [3, 6], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "\"", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [1, 0], "x": 1, "y": 0}, + {"label": "\"", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 2], "x": 4, "y": 0}, + {"label": "%", "matrix": [1, 2], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 3], "x": 6, "y": 0}, + {"label": "&", "matrix": [1, 3], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 4], "x": 8, "y": 0}, + {"label": "(", "matrix": [1, 4], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 5], "x": 10, "y": 0}, + {"label": "_", "matrix": [1, 5], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 6], "x": 12, "y": 0}, + {"label": "|", "matrix": [1, 6], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [3, 6], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5} + ] } } } diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md b/keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md index 6a51e0447ea4..8ec59179b018 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/matrix_diagram.md @@ -2,7 +2,7 @@ ``` ┌───────┐ - 2u Backspace │36? │ + 2u Backspace │36 │ └───────┘ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ │00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │16 │36 │ @@ -19,6 +19,6 @@ │60 │ 2.25u LShift 2.75u RShift │66 │ └────────┘ └──────────┘ ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ -│80 │90 │91 │93 │85 │95 │86 │ Tsangan/WKL/HHKB +│80 │90 │91 │93 │85 │95 │86 │ Tsangan/HHKB └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ ``` diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/config.h b/keyboards/4pplet/eagle_viper_rep/rev_b/config.h index 5d5eefda2184..b5957e6f30cc 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_b/config.h +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/config.h @@ -34,6 +34,3 @@ along with this program. If not, see . #define LAYER_3 B0 #define LAYER_4 B9 #define LAYER_5 A9 - -/* Added extra layer for use of layer leds */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/info.json b/keyboards/4pplet/eagle_viper_rep/rev_b/info.json index ad7513c13d6e..2ebb26068693 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_b/info.json +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/info.json @@ -13,6 +13,9 @@ "rows": ["A2", "A1", "B8", "A10", "C15", "A15", "B7", "B6", "C14", "C13"] }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 5 + }, "backlight": { "pin": "A6", "levels": 6, diff --git a/keyboards/4pplet/perk60_iso/rev_a/config.h b/keyboards/4pplet/perk60_iso/rev_a/config.h index e033b1625935..efad0a1718c3 100644 --- a/keyboards/4pplet/perk60_iso/rev_a/config.h +++ b/keyboards/4pplet/perk60_iso/rev_a/config.h @@ -21,10 +21,9 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_COUNT 1 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define RGB_MATRIX_LED_COUNT 62 -#define ISSI_PWM_FREQUENCY 0b010 +#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/4pplet/perk60_iso/rev_a/rev_a.c b/keyboards/4pplet/perk60_iso/rev_a/rev_a.c index 814a8f95d466..e3b8d71a9042 100644 --- a/keyboards/4pplet/perk60_iso/rev_a/rev_a.c +++ b/keyboards/4pplet/perk60_iso/rev_a/rev_a.c @@ -17,7 +17,7 @@ along with this program. If not, see . #include "rev_a.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 0, K_2, J_2, L_2 }, //D402 { 0, K_3, J_3, L_3 }, //D403 { 0, K_4, J_4, L_4 }, //D404 diff --git a/keyboards/4pplet/waffling60/readme.md b/keyboards/4pplet/waffling60/readme.md index acfa174eab93..442de4d36966 100644 --- a/keyboards/4pplet/waffling60/readme.md +++ b/keyboards/4pplet/waffling60/readme.md @@ -12,8 +12,8 @@ Make example for this keyboard (after setting up your build environment): make 4pplet/waffling60/rev_a:default make 4pplet/waffling60/rev_b:default make 4pplet/waffling60/rev_c:default - make 4pplet/waffling60/rev_d:default + make 4pplet/waffling60/rev_e:default make 4pplet/waffling60/rev_d_ansi:default make 4pplet/waffling60/rev_d_iso:default diff --git a/keyboards/4pplet/waffling60/rev_d/keymaps/vial/config.h b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/config.h new file mode 100644 index 000000000000..98404f002412 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/config.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x59, 0xE1, 0x24, 0x06, 0xDB, 0xB0, 0xBB, 0x48} + + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } diff --git a/keyboards/4pplet/waffling60/rev_d/keymaps/vial/keymap.c b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/keymap.c new file mode 100644 index 000000000000..7327ba11e38f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[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_BSLS, 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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, MO(1)), +// basic function layer +[1] = LAYOUT( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/4pplet/waffling60/rev_d/keymaps/vial/rules.mk b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/rules.mk new file mode 100644 index 000000000000..6bc7063adc21 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/4pplet/waffling60/rev_d/keymaps/vial/vial.json b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/vial.json new file mode 100644 index 000000000000..897cbb296f5e --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d/keymaps/vial/vial.json @@ -0,0 +1,424 @@ +{ + "lighting": "qmk_rgblight", + "matrix": {"rows": 5, "cols": 14}, + "layouts": { + "labels": [ + [ + "Bottom row", + "7U WK", + "7U WKL", + "7U WK Split", + "7U WKL Split", + "6.25U WK", + "6.25U WK Split", + "10U WK", + "10U WKL" + ], + "Split backspase", + "ISO Enter", + "Split Left Shift", + "Split Right Shift" + ], + "keymap": [ + [ + { + "x": 3, + "c": "#aaaaaa" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "2,13\n\n\n1,0", + { + "x": 1.5, + "c": "#cccccc" + }, + "0,13\n\n\n1,1", + { + "c": "#aaaaaa" + }, + "2,13\n\n\n1,1" + ], + [ + { + "x": 3, + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "1,13\n\n\n2,0", + { + "x": 2.25, + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "3,13\n\n\n2,1" + ], + [ + { + "x": 3, + "w": 1.75 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + { + "c": "#aaaaaa", + "w": 2.25 + }, + "3,13\n\n\n2,0", + { + "x": 1.25, + "c": "#cccccc" + }, + "2,12\n\n\n2,1" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "3,0\n\n\n3,1", + "3,1\n\n\n3,1", + { + "x": 0.75, + "w": 2.25 + }, + "3,0\n\n\n3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "3,12\n\n\n4,0", + { + "x": 0.75, + "w": 1.75 + }, + "3,12\n\n\n4,1", + "4,13\n\n\n4,1" + ], + [ + { + "x": 3, + "w": 1.5 + }, + "4,0\n\n\n0,0", + "4,1\n\n\n0,0", + { + "w": 1.5 + }, + "4,2\n\n\n0,0", + { + "c": "#cccccc", + "w": 7 + }, + "4,6\n\n\n0,0", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,10\n\n\n0,0", + "4,11\n\n\n0,0", + { + "w": 1.5 + }, + "4,12\n\n\n0,0" + ], + [ + { + "y": 1, + "x": 3, + "w": 1.5 + }, + "4,0\n\n\n0,1", + { + "d": true + }, + "4,1\n\n\n0,1", + { + "w": 1.5 + }, + "4,2\n\n\n0,1", + { + "c": "#cccccc", + "w": 7 + }, + "4,6\n\n\n0,1", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,10\n\n\n0,1", + { + "d": true + }, + "4,11\n\n\n0,1", + { + "w": 1.5 + }, + "4,12\n\n\n0,1" + ], + [ + { + "x": 3, + "w": 1.5 + }, + "4,0\n\n\n0,2", + "4,1\n\n\n0,2", + { + "w": 1.5 + }, + "4,2\n\n\n0,2", + { + "c": "#cccccc", + "w": 3 + }, + "4,4\n\n\n0,2", + "4,6\n\n\n0,2", + { + "w": 3 + }, + "4,8\n\n\n0,2", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,10\n\n\n0,2", + "4,11\n\n\n0,2", + { + "w": 1.5 + }, + "4,12\n\n\n0,2" + ], + [ + { + "x": 3, + "w": 1.5 + }, + "4,0\n\n\n0,3", + { + "d": true + }, + "4,1\n\n\n0,3", + { + "w": 1.5 + }, + "4,2\n\n\n0,3", + { + "c": "#cccccc", + "w": 3 + }, + "4,4\n\n\n0,3", + "4,6\n\n\n0,3", + { + "w": 3 + }, + "4,8\n\n\n0,3", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,10\n\n\n0,3", + { + "d": true + }, + "4,11\n\n\n0,3", + { + "w": 1.5 + }, + "4,12\n\n\n0,3" + ], + [ + { + "x": 3, + "w": 1.25 + }, + "4,0\n\n\n0,4", + { + "w": 1.25 + }, + "4,1\n\n\n0,4", + { + "w": 1.25 + }, + "4,2\n\n\n0,4", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,6\n\n\n0,4", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,9\n\n\n0,4", + { + "w": 1.25 + }, + "4,10\n\n\n0,4", + { + "w": 1.25 + }, + "4,11\n\n\n0,4", + { + "w": 1.25 + }, + "4,12\n\n\n0,4" + ], + [ + { + "x": 3, + "w": 1.25 + }, + "4,0\n\n\n0,5", + { + "w": 1.25 + }, + "4,1\n\n\n0,5", + { + "w": 1.25 + }, + "4,2\n\n\n0,5", + { + "c": "#cccccc", + "w": 2.25 + }, + "4,4\n\n\n0,5", + { + "w": 1.25 + }, + "4,6\n\n\n0,5", + { + "w": 2.75 + }, + "4,8\n\n\n0,5", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,9\n\n\n0,5", + { + "w": 1.25 + }, + "4,10\n\n\n0,5", + { + "w": 1.25 + }, + "4,11\n\n\n0,5", + { + "w": 1.25 + }, + "4,12\n\n\n0,5" + ], + [ + { + "x": 3, + "w": 1.5 + }, + "4,0\n\n\n0,6", + "4,1\n\n\n0,6", + { + "c": "#cccccc", + "w": 10 + }, + "4,6\n\n\n0,6", + { + "c": "#aaaaaa" + }, + "4,11\n\n\n0,6", + { + "w": 1.5 + }, + "4,12\n\n\n0,6" + ], + [ + { + "x": 3, + "w": 1.5 + }, + "4,0\n\n\n0,7", + { + "d": true + }, + "4,1\n\n\n0,7", + { + "c": "#cccccc", + "w": 10 + }, + "4,6\n\n\n0,7", + { + "c": "#aaaaaa", + "d": true + }, + "4,11\n\n\n0,7", + { + "w": 1.5 + }, + "4,12\n\n\n0,7" + ] + ] + } +} diff --git a/keyboards/4pplet/waffling60/rev_d/readme.md b/keyboards/4pplet/waffling60/rev_d/readme.md index 3b6b9c94f2d3..092746325d1d 100644 --- a/keyboards/4pplet/waffling60/rev_d/readme.md +++ b/keyboards/4pplet/waffling60/rev_d/readme.md @@ -9,7 +9,7 @@ More info: https://geekhack.org/index.php?topic=103531.0 Make example for this keyboard (after setting up your build environment): - make 4pplet/waffling60/rev_c:default + make 4pplet/waffling60/rev_d: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/4pplet/waffling60/rev_d_ansi/keymaps/vial/config.h b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/config.h new file mode 100644 index 000000000000..5aab2be5d960 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/config.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + + +#define VIAL_KEYBOARD_UID {0xF0, 0x01, 0x3E, 0x93, 0x0F, 0x17, 0x90, 0x69} + + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } + diff --git a/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/keymap.c b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/keymap.c new file mode 100644 index 000000000000..6b4b4a7566b0 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[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_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), +// basic function layer +[1] = LAYOUT( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/4pplet/waffling60/rev_d_ansi/keymaps/vial/rules.mk b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/rules.mk new file mode 100644 index 000000000000..6bc7063adc21 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/vial.json b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/vial.json new file mode 100644 index 000000000000..79141b6a09b3 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d_ansi/keymaps/vial/vial.json @@ -0,0 +1,219 @@ +{ + "name": "waffling60 Rev D ANSI", + "lighting": "none", + "matrix": {"rows": 5, "cols": 14}, + "layouts": { + "labels": [ + "Split backspase", + ["Modifiers", "WK", "WKL", "HHKB"], + ["Spacebar", "7U", "Split Space", "10U"] + ], + "keymap": [ + [ + { + "c": "#aaaaaa" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "1,13\n\n\n0,0", + { + "x": 0.5, + "c": "#cccccc" + }, + "0,13\n\n\n0,1", + { + "c": "#aaaaaa" + }, + "1,13\n\n\n0,1" + ], + [ + { + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "2,12" + ], + [ + { + "w": 1.75 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + { + "c": "#aaaaaa", + "w": 2.25 + }, + "2,13" + ], + [ + { + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12", + "3,13" + ], + [ + { + "w": 1.5 + }, + "4,0\n\n\n1,0", + "4,1\n\n\n1,0", + { + "w": 1.5 + }, + "4,2\n\n\n2,0", + { + "c": "#cccccc", + "w": 7 + }, + "4,6\n\n\n2,0", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,11\n\n\n2,0", + "4,12\n\n\n1,0", + { + "w": 1.5 + }, + "4,13\n\n\n1,0" + ], + [ + { + "y": 0.5, + "x": 2.5, + "w": 1.5 + }, + "4,2\n\n\n2,1", + { + "c": "#cccccc", + "w": 3 + }, + "4,4\n\n\n2,1", + "4,6\n\n\n2,1", + { + "w": 3 + }, + "4,8\n\n\n2,1", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,11\n\n\n2,1" + ], + [ + { + "x": 2.5, + "c": "#cccccc", + "w": 10 + }, + "4,6\n\n\n2,2" + ], + [ + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,0\n\n\n1,1", + { + "d": true + }, + "4,1\n\n\n1,1", + { + "x": 10, + "d": true + }, + "4,12\n\n\n1,1", + { + "w": 1.5 + }, + "4,13\n\n\n1,1" + ], + [ + { + "w": 1.5, + "d": true + }, + "4,0\n\n\n1,2", + "4,1\n\n\n1,2", + { + "x": 10 + }, + "4,12\n\n\n1,2", + { + "w": 1.5, + "d": true + }, + "4,13\n\n\n1,2" + ] + ] + } +} diff --git a/keyboards/4pplet/waffling60/rev_e/config.h b/keyboards/4pplet/waffling60/rev_e/config.h new file mode 100644 index 000000000000..521ddf96a183 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 WS2812_EXTERNAL_PULLUP + diff --git a/keyboards/4pplet/waffling60/rev_e/info.json b/keyboards/4pplet/waffling60/rev_e/info.json new file mode 100644 index 000000000000..3a75cf3d06ac --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/info.json @@ -0,0 +1,917 @@ +{ + "manufacturer": "4pplet", + "keyboard_name": "waffling60 Rev E", + "maintainer": "4pplet", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "A2", "pin_b": "A1", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "key_lock": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B2", "A5", "A4", "A3", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"], + "rows": ["B14", "A9", "B6", "B5", "B4"] + }, + "processor": "STM32F072", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 17 + }, + "url": "https://github.com/4pplet/waffling60", + "usb": { + "device_version": "0.0.5", + "pid": "0x0014", + "vid": "0x4444" + }, + "ws2812": { + "pin": "A8" + }, + "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_hhkb", "60_iso", "60_iso_split_bs_rshift", "60_iso_tsangan", "60_tsangan_hhkb"], + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 1], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 2], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + + "LAYOUT_6u_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 1], "x":1.5, "y":4}, + {"label": "Alt", "matrix": [4, 2], "x":2.5, "y":4, "w":1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w":6}, + {"label": "Alt", "matrix": [4, 9], "x":10, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 10], "x":11.5, "y":4}, + {"label": "Menu", "matrix": [4, 11], "x":12.5, "y":4}, + {"label": "Fn", "matrix": [4, 12], "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_6u_ansi_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 1], "x":1.5, "y":4}, + {"label": "Alt", "matrix": [4, 2], "x":2.5, "y":4, "w":1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w":6}, + {"label": "Alt", "matrix": [4, 9], "x":10, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 10], "x":11.5, "y":4}, + {"label": "Menu", "matrix": [4, 11], "x":12.5, "y":4}, + {"label": "Fn", "matrix": [4, 12], "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_6u_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 1], "x":1.5, "y":4}, + {"label": "Alt", "matrix": [4, 2], "x":2.5, "y":4, "w":1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w":6}, + {"label": "Alt", "matrix": [4, 9], "x":10, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 10], "x":11.5, "y":4}, + {"label": "Menu", "matrix": [4, 11], "x":12.5, "y":4}, + {"label": "Fn", "matrix": [4, 12], "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_6u_iso_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 1], "x":1.5, "y":4}, + {"label": "Alt", "matrix": [4, 2], "x":2.5, "y":4, "w":1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w":6}, + {"label": "Alt", "matrix": [4, 9], "x":10, "y":4, "w":1.5}, + {"label": "Win", "matrix": [4, 10], "x":11.5, "y":4}, + {"label": "Menu", "matrix": [4, 11], "x":12.5, "y":4}, + {"label": "Fn", "matrix": [4, 12], "x":13.5, "y":4, "w":1.5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [2, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25}, + {"label": "Space", "matrix": [4, 6], "x": 6, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 8], "x": 7.25, "y": 4, "w": 2.75}, + {"label": "Alt", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi/keymap.c b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi/keymap.c new file mode 100644 index 000000000000..1a0147f148c1 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT_6u_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_6u_ansi( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/keychron/q0/rev_0131/keymaps/default/rules.mk b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi/rules.mk similarity index 100% rename from keyboards/keychron/q0/rev_0131/keymaps/default/rules.mk rename to keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi/rules.mk diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi_split_bs_rshift/keymap.c b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..1b68fce40e93 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi_split_bs_rshift/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT_6u_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_6u_ansi_split_bs_rshift( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi_split_bs_rshift/rules.mk b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi_split_bs_rshift/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_ansi_split_bs_rshift/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso/keymap.c b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso/keymap.c new file mode 100644 index 000000000000..919eec54f9f8 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT_6u_iso( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS , + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_6u_iso( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso/rules.mk b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso_split_bs_rshift/keymap.c b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso_split_bs_rshift/keymap.c new file mode 100644 index 000000000000..4731a11d4781 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso_split_bs_rshift/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT_6u_iso_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_6u_iso_split_bs_rshift( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso_split_bs_rshift/rules.mk b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso_split_bs_rshift/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/6u_iso_split_bs_rshift/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/default/keymap.c b/keyboards/4pplet/waffling60/rev_e/keymaps/default/keymap.c new file mode 100644 index 000000000000..8b1bb6a2c4b1 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/default/rules.mk b/keyboards/4pplet/waffling60/rev_e/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/4pplet/waffling60/rev_e/keymaps/via/keymap.c b/keyboards/4pplet/waffling60/rev_e/keymaps/via/keymap.c new file mode 100644 index 000000000000..8b1bb6a2c4b1 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_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, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/rules.mk b/keyboards/4pplet/waffling60/rev_e/keymaps/via/rules.mk similarity index 100% rename from keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/rules.mk rename to keyboards/4pplet/waffling60/rev_e/keymaps/via/rules.mk diff --git a/keyboards/4pplet/waffling60/rev_e/matrix_diagram.md b/keyboards/4pplet/waffling60/rev_e/matrix_diagram.md new file mode 100644 index 000000000000..fb49b758ec3a --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/matrix_diagram.md @@ -0,0 +1,37 @@ +# Matrix Diagram for 4pplet Waffling60 Rev E Solder + +``` + ┌───────┐ + 2u Backspace │2D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐3D │ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │3D │ │2C │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │4D │ ISO Enter +├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤ +│40 │41 │42 │44 │46 │48 │49 │4A │4B │4C │ +└────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘ +┌────────┐ ┌──────────┐ +│30 │ 2.25u LShift 2.75u RShift │3C │ +└────────┘ └──────────┘ +┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ +│40 │41 │42 │46 │49 │4A │4B │4C │ Standard +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │42 │46 │4A │4B │4C │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +┌────┬────┬────┬────────────────────────┬────┬────┬────┬────┐ +│40 │41 │42 │46 │49 │4A │4B │4C │ 6U bottom row +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌─────┬───┬─────┬──────────┬──────┬─────────┬─────┬───┬─────┐ +│40 │41 │42 │44 │46 │48 │4A │4B │4C │ 3U split space +└─────┴───┴─────┴──────────┴──────┴─────────┴─────┴───┴─────┘ +┌─────┬───┬───────────────────────────────────────┬───┬─────┐ +│40 │41 │46 │4B │4C │ 10U space +└─────┴───┴───────────────────────────────────────┴───┴─────┘ + +``` diff --git a/keyboards/4pplet/waffling60/rev_e/readme.md b/keyboards/4pplet/waffling60/rev_e/readme.md new file mode 100644 index 000000000000..ee13539e5d1f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/readme.md @@ -0,0 +1,20 @@ +# waffling60 + +A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent layout support. Revision E adds underglow and 6u space support. + +More info: https://github.com/4pplet/waffling60 + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: [waffling60](https://github.com/4pplet/waffling60) + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/waffling60/rev_e: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). + +How to enter bootloader (DFU): +* Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter DFU. When in DFU, it's ready to flash the firmware. If using a APM MCU it will not automatically reset after flash. Simply short the reset-header for a very short time to just reset the PCB, alternatively unplug and repluck the USB-cable to the keyboard. + +Alternative option if the firmware is already pre-flashed: +* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware. diff --git a/keyboards/4pplet/waffling60/rev_e/rev_e.c b/keyboards/4pplet/waffling60/rev_e/rev_e.c new file mode 100644 index 000000000000..81941d54bed5 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/rev_e.c @@ -0,0 +1,35 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 "rev_e.h" + +void keyboard_pre_init_kb(void) { + rgblight_set_effect_range(0, 16); + keyboard_pre_init_user(); +} + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (CAPS_LOCK_ENABLE && res) { + if(led_state.caps_lock) { + rgblight_sethsv_at(CAPS_LOCK_COLOR, 16); + } + else{ + rgblight_sethsv_at(HSV_OFF, 16); + } + } + return res; +} diff --git a/keyboards/4pplet/waffling60/rev_e/rev_e.h b/keyboards/4pplet/waffling60/rev_e/rev_e.h new file mode 100644 index 000000000000..61ebac191202 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/rev_e.h @@ -0,0 +1,22 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 CAPS_LOCK_ENABLE true +#define CAPS_LOCK_COLOR HSV_GREEN diff --git a/keyboards/4pplet/waffling60/rev_e/rules.mk b/keyboards/4pplet/waffling60/rev_e/rules.mk new file mode 100644 index 000000000000..04fe1eba2acd --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/config.h b/keyboards/4pplet/waffling60/rev_e_ansi/config.h new file mode 100644 index 000000000000..521ddf96a183 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 WS2812_EXTERNAL_PULLUP + diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/info.json b/keyboards/4pplet/waffling60/rev_e_ansi/info.json new file mode 100644 index 000000000000..c2514700ff00 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/info.json @@ -0,0 +1,255 @@ +{ + "manufacturer": "4pplet", + "keyboard_name": "waffling60 Rev E ANSI HS", + "maintainer": "4pplet", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "A2", "pin_b": "A1", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "key_lock": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B2", "A4", "A3", "A0", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"], + "rows": ["B14", "A9", "B6", "B5", "B4"] + }, + "processor": "STM32F072", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 17 + }, + "url": "https://github.com/4pplet/waffling60", + "usb": { + "device_version": "0.0.5", + "pid": "0x0015", + "vid": "0x4444" + }, + "ws2812": { + "pin": "A8" + }, + "community_layouts": [ + "60_tsangan_hhkb", + "60_hhkb" + ], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 4], "x":4, "y":4, "w":3}, + {"label": "Space", "matrix": [4, 6], "x":7, "y":4}, + {"label": "Space", "matrix": [4, 8], "x":8, "y":4, "w":3}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Bsp", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Alt", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Win", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7}, + {"label": "Win", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Alt", "matrix": [4, 12], "x": 12.5, "y": 4}, + ] + } + } +} diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/keymap.c b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/keymap.c new file mode 100644 index 000000000000..706428c00e72 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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] = { +// main layer +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/rules.mk b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c new file mode 100644 index 000000000000..706428c00e72 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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] = { +// main layer +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), +// basic function layer +[1] = LAYOUT_all( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/keychron/q0/rev_0131/keymaps/via/rules.mk b/keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q0/rev_0131/keymaps/via/rules.mk rename to keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/rules.mk diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md b/keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md new file mode 100644 index 000000000000..ae47900a9baa --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for 4pplet Waffling60 Rev E ANSI Hotswap + +``` + ┌───────┐ + 2u Backspace │1D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ +│30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬┴───┤ +│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB +└────┴────┴────┴─────────────────────────────┴────┴────┴────┘ +┌─────┬───┬─────┬───────────┬───┬───────────┬─────┬───┬─────┐ +│40 │41 │42 │44 │46 │48 │4B │4C │4D │ 7u split spacebar +└─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘ +┌─────┬───┬───────────────────────────────────────┬───┬─────┐ +│40 │41 │46 │4C │4D │ 10u Spacebar +└─────┴───┴───────────────────────────────────────┴───┴─────┘ +``` diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/readme.md b/keyboards/4pplet/waffling60/rev_e_ansi/readme.md new file mode 100644 index 000000000000..1b70d5aba864 --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/readme.md @@ -0,0 +1,26 @@ +# waffling60 Rev. E ANSI + +A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent layout support. Revision E adds underglow and rotary encoder support. + +More info: https://github.com/4pplet/waffling60 + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: [waffling60](https://github.com/4pplet/waffling60) + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/waffling60/rev_e_ansi:default + +Flashing example for this keyboard: + + make 4pplet/waffling60/rev_e_ansi:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +How to enter bootloader (DFU): +* Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter DFU. When in DFU, it's ready to flash the firmware. If using a APM MCU it will not automatically reset after flash. Simply short the reset-header for a very short time to just reset the PCB, alternatively unplug and repluck the USB-cable to the keyboard. + +Alternative option if the firmware is already pre-flashed: +* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware. diff --git a/keyboards/4pplet/waffling60/rev_e_ansi/rules.mk b/keyboards/4pplet/waffling60/rev_e_ansi/rules.mk new file mode 100644 index 000000000000..04fe1eba2acd --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_e_ansi/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF diff --git a/keyboards/9key/keymaps/bcat/keymap.c b/keyboards/9key/keymaps/bcat/keymap.c deleted file mode 100644 index 5a9ba1a88e0f..000000000000 --- a/keyboards/9key/keymaps/bcat/keymap.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2021 Jonathan Rascher - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "bcat.h" - -#define KY_LOCK LGUI(KC_L) /* Chrome OS: Lock screen */ -#define KY_MICM LSG(KC_1) /* Meet Shortcuts: Mute mic */ -#define KY_MICU LSG(KC_2) /* Meet Shortcuts: Unmute mic */ -#define KY_RHAND LSG(KC_3) /* Meet Shortcuts: Raise/lower hand */ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // clang-format off - [LAYER_DEFAULT] = LAYOUT( - KC_MPLY, KC_VOLU, KY_RHAND, - KY_LOCK, KC_VOLD, KY_MICU, - LY_FN1, KC_MUTE, KY_MICM - ), - [LAYER_FUNCTION_1] = LAYOUT( - EE_CLR, _______, QK_BOOT, - _______, _______, _______, - _______, _______, _______ - ), - // clang-format on -}; diff --git a/keyboards/9key/keymaps/bcat/readme.md b/keyboards/9key/keymaps/bcat/readme.md deleted file mode 100644 index d38ae5463b9b..000000000000 --- a/keyboards/9key/keymaps/bcat/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# bcat's 9-Key layout - -This is a super simple PCB-mount macropad with nine keys, used on my -work-from-home Chromebox for media/volume control and to activate some global -shortcuts for Google Meet. diff --git a/keyboards/a_dux/keymaps/manna-harbour_miryoku/config.h b/keyboards/a_dux/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index dbbff11bb61c..000000000000 --- a/keyboards/a_dux/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2021 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 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 LAYOUT_miryoku( \ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -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, \ - K33, K34, K35, K36 \ -) diff --git a/keyboards/a_dux/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/a_dux/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/a_dux/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/a_dux/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/a_dux/keymaps/manna-harbour_miryoku/rules.mk deleted file mode 100644 index ef40279cbcd6..000000000000 --- a/keyboards/a_dux/keymaps/manna-harbour_miryoku/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright 2021 Manna Harbour -# https://github.com/manna-harbour/miryoku - -MIRYOKU_KLUDGE_THUMBCOMBOS=yes diff --git a/keyboards/abacus/config.h b/keyboards/abacus/config.h index ca764a9eebee..84e1acbb3c71 100644 --- a/keyboards/abacus/config.h +++ b/keyboards/abacus/config.h @@ -17,8 +17,6 @@ along with this program. If not, see . #pragma once -#define DIP_SWITCH_PINS { D0 } - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ diff --git a/keyboards/abacus/info.json b/keyboards/abacus/info.json index 2e147829973d..ad8ebcc8654f 100644 --- a/keyboards/abacus/info.json +++ b/keyboards/abacus/info.json @@ -13,6 +13,9 @@ "rows": ["D3", "D2", "D4", "C6"] }, "diode_direction": "COL2ROW", + "dip_switch": { + "pins": ["D0"] + }, "encoder": { "rotary": [ {"pin_a": "F1", "pin_b": "F0"} diff --git a/keyboards/abko/ak84bt/ak84bt.c b/keyboards/abko/ak84bt/ak84bt.c index 0ecd06b177e8..a51f1f458f6a 100644 --- a/keyboards/abko/ak84bt/ak84bt.c +++ b/keyboards/abko/ak84bt/ak84bt.c @@ -16,7 +16,7 @@ #include QMK_KEYBOARD_H -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { {0, G_1, I_1, H_1}, {0, G_3, I_3, H_3}, {0, G_4, I_4, H_4}, diff --git a/keyboards/abko/ak84bt/config.h b/keyboards/abko/ak84bt/config.h index f6a3b55851fc..0a7f31bf7da8 100644 --- a/keyboards/abko/ak84bt/config.h +++ b/keyboards/abko/ak84bt/config.h @@ -17,10 +17,9 @@ #pragma once -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1010011 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 45 #define DRIVER_2_LED_TOTAL 45 diff --git a/keyboards/acheron/apollo/87h/gamma/config.h b/keyboards/acheron/apollo/87h/gamma/config.h index 6209fa21f728..37c0aaef649c 100644 --- a/keyboards/acheron/apollo/87h/gamma/config.h +++ b/keyboards/acheron/apollo/87h/gamma/config.h @@ -25,12 +25,10 @@ along with this program. If not, see . #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE // RGB Matrix defines -#define DRIVER_ADDR_1 0b0110000 +#define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND -#define DRIVER_COUNT 1 #define DRIVER_1_LED_TOTAL 87 #define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -#define ISSI_DRIVER_TOTAL RGB_MATRIX_LED_COUNT #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/acheron/apollo/87h/gamma/gamma.c b/keyboards/acheron/apollo/87h/gamma/gamma.c index fb381f52ce14..19e91062873e 100644 --- a/keyboards/acheron/apollo/87h/gamma/gamma.c +++ b/keyboards/acheron/apollo/87h/gamma/gamma.c @@ -18,7 +18,7 @@ along with this program. If not, see . #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/acheron/shark/alpha/keymaps/ajp10304/readme.md b/keyboards/acheron/shark/alpha/keymaps/ajp10304/readme.md deleted file mode 100644 index e091e5d3186c..000000000000 --- a/keyboards/acheron/shark/alpha/keymaps/ajp10304/readme.md +++ /dev/null @@ -1,126 +0,0 @@ -# AJP10304 Custom Shark Layout -# Also available for the Planck, Quark, JJ40 and Atreus50 - -**Note:** In the tables below where there are two characters on a key, -the second is the output when shift is applied. - -**Note:** The below tables assume a UK layout. - -#### Flashing -Refer to the README.md of the keyboard you want to flash. - -##### Main Qwerty Layer - -* Tab: when held, operates as shift. -* Enter: when held, operates as shift. -* MENU: perform right-click - -| | | | | | | | | | | | | -| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| -| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | -| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| -| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | - -##### Main Colemak-DHm Layer - -| | | | | | | | | | | | | -| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:| -| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp | -| Tab | A | R | S | T | G | M | N | E | I | O | Enter| -| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 | - -##### Function Layer -Activated when `fn` held in the above `qwerty` layer. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | -| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| -| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | - -##### Lower Layer -Activated when `Lower` is held in the above `qwerty` layer. - -* Numbers are along the top row, their shifted counterparts are on row 2. -* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. -* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | -| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| -| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | -| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | - -##### Raise Layer -Activated when `Raise` is held in the above `qwerty` layer. - -* Preferred layer for typing brackets. -* Allows for cursor navigation to be used solely with the right hand. -* WRDSEL: Select the word where the cursor is. -* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| -| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| -| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| -| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| -| Mouse | | | | | Alt | Enter |Raise | | | | | - -##### Lower + Raise -Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. - -* Audio controls in the same position as cursor keys from the `Raise` layer. -* ????: Runs a macro for outputting a text string. Do not use this store passwords. -* Reset: Enter bootloader for flashing firmware to the keyboard. -* CAPS: Toggle caps lock. -* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. -To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. -* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, -MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:| -| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | -| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty | -| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak | -| | | | | | | | | DYN | | | | - -##### Function 2 Layer -Activated when `fn` held in the above `qwerty` layer. -* WRDSEL: Select the word where the cursor is. -* LNDEL: Delete the line where the cursor is. -* LNSEL: Select the line where the cursor is. -* DUP: Duplicate the selected text. -* LNJOIN: Join the line where the cursor is with the following line. -* MODE: Print either `PC` or `OSX` depending on what layer mode is active. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | |WRDSEL| | | | LNDEL| | | | | | -| | | LNSEL| DUP | | | | |LNJOIN| | | | -| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | -| | | | | | | | | | | | | - -##### Mouse Layer -Activated when `fn` and `raise` held together. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | -| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | -| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | -| | | | | | | | | | | | | - -##### Number Pad Layout -Activated when holding `Esc` key. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | | | | | |NMLOCK| 7 | 8 | 9 | / | | -| | | | | | | | 4 | 5 | 6 | * | | -| | | | | | | | 1 | 2 | 3 | + | | -| | | | | | | | 0 | . | , | - | | diff --git a/keyboards/acheron/shark/beta/info.json b/keyboards/acheron/shark/beta/info.json index 5ec24036384e..7daab0a2c0eb 100644 --- a/keyboards/acheron/shark/beta/info.json +++ b/keyboards/acheron/shark/beta/info.json @@ -9,6 +9,9 @@ "rows": ["A8", "B14", "A4", "A3"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "i2c" + }, "encoder": { "rotary": [ {"pin_a": "C15", "pin_b": "C14"} diff --git a/keyboards/acheron/shark/beta/rules.mk b/keyboards/acheron/shark/beta/rules.mk index a398475a3eb5..94335efa29fc 100644 --- a/keyboards/acheron/shark/beta/rules.mk +++ b/keyboards/acheron/shark/beta/rules.mk @@ -12,6 +12,3 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output LTO_ENABLE = no ENCODER_ENABLE = yes - -EEPROM_DRIVER = i2c - diff --git a/keyboards/acheron/themis/87h/87h.c b/keyboards/acheron/themis/87h/87h.c new file mode 100644 index 000000000000..dada30ff873f --- /dev/null +++ b/keyboards/acheron/themis/87h/87h.c @@ -0,0 +1,25 @@ +/* Copyright 2023 Gondolindrim + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ; + } + return res; +} diff --git a/keyboards/acheron/themis/87h/config.h b/keyboards/acheron/themis/87h/config.h new file mode 100644 index 000000000000..605594eea209 --- /dev/null +++ b/keyboards/acheron/themis/87h/config.h @@ -0,0 +1,30 @@ +/* +Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define RGBLED_NUM 1 + +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA2_STREAM5 +#define WS2812_DMA_CHANNEL 6 diff --git a/keyboards/acheron/themis/87h/halconf.h b/keyboards/acheron/themis/87h/halconf.h new file mode 100644 index 000000000000..485d48ef3067 --- /dev/null +++ b/keyboards/acheron/themis/87h/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/acheron/themis/87h/info.json b/keyboards/acheron/themis/87h/info.json new file mode 100644 index 000000000000..cbff8f4eec55 --- /dev/null +++ b/keyboards/acheron/themis/87h/info.json @@ -0,0 +1,141 @@ +{ + "keyboard_name": "Themis 87H Rev. Alpha", + "usb": { + "pid": "0x5448", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ], + "rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"] + }, + "features": { + "bootmagic": true, + "lto": true, + "mousekey": true, + "extrakey": true, + "console": false, + "backlight": false, + "rgblight": true, + "audio": false, + "encoder": false, + "nkro": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 8192 + } + }, + "ws2812": { + "pin": "B15" + }, + "processor": "STM32F401", + "bootloader": "stm32-dfu", + "community_layouts": ["tkl_ansi"], + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + {"label":"Escape", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label":"F1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label":"F2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label":"F3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label":"F4", "matrix": [0, 4], "x": 5, "y": 0}, + + {"label":"F5", "matrix": [0, 5], "x": 6.5, "y": 0}, + {"label":"F6", "matrix": [0, 6], "x": 7.5, "y": 0}, + {"label":"F7", "matrix": [0, 7], "x": 8.5, "y": 0}, + {"label":"F8", "matrix": [0, 8], "x": 9.5, "y": 0}, + + {"label":"F9", "matrix": [0, 9], "x": 11, "y": 0}, + {"label":"F10", "matrix": [0, 10], "x": 12, "y": 0}, + {"label":"F11", "matrix": [0, 11], "x": 13, "y": 0}, + {"label":"F12", "matrix": [0, 12], "x": 14, "y": 0}, + + {"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0}, + {"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0}, + {"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0}, + + {"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label":"0)", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label":"-_", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label":"=+", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label":"Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + + {"label":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25}, + {"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25}, + {"label":"Page Up","matrix": [7, 16], "x": 17.25, "y": 1.25}, + + {"label":"Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label":"Q", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label":"W", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label":"E", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label":"R", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label":"T", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label":"Y", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label":"U", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label":"I", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label":"O", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label":"P", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label":"[{", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label":"]}", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label":"\\|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"label":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25}, + {"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25}, + {"label":"Page Down", "matrix": [8, 16], "x": 17.25, "y": 2.25}, + + {"label":"Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label":"A", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label":"S", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label":"D", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label":"F", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label":"G", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label":"H", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label":"J", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label":"K", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label":"L", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label":";:", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label":"\'\"", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label":"Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"label":"Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label":"Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"label":"Lwin", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"label":"Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"label":"RAlt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25}, + {"label":"RWin", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25}, + {"label":"MO(1)", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25}, + {"label":"RCtrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25}, + + {"label":"Left", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label":"Down", "matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"label":"Right", "matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/acheron/themis/87h/keymaps/default/keymap.c b/keyboards/acheron/themis/87h/keymaps/default/keymap.c new file mode 100755 index 000000000000..4728331f05ff --- /dev/null +++ b/keyboards/acheron/themis/87h/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/acheron/themis/87h/keymaps/via/keymap.c b/keyboards/acheron/themis/87h/keymaps/via/keymap.c new file mode 100755 index 000000000000..4728331f05ff --- /dev/null +++ b/keyboards/acheron/themis/87h/keymaps/via/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2020 Álvaro "Gondolindrim" Volpato + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk b/keyboards/acheron/themis/87h/keymaps/via/rules.mk similarity index 100% rename from keyboards/dztech/dz60rgb/keymaps/moults31/rules.mk rename to keyboards/acheron/themis/87h/keymaps/via/rules.mk diff --git a/keyboards/acheron/themis/87h/mcuconf.h b/keyboards/acheron/themis/87h/mcuconf.h new file mode 100644 index 000000000000..3d1d05c307c4 --- /dev/null +++ b/keyboards/acheron/themis/87h/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/keyboards/dztech/og60/rules.mk b/keyboards/acheron/themis/87h/rules.mk similarity index 100% rename from keyboards/dztech/og60/rules.mk rename to keyboards/acheron/themis/87h/rules.mk diff --git a/keyboards/acheron/themis/87htsc/87htsc.c b/keyboards/acheron/themis/87htsc/87htsc.c new file mode 100644 index 000000000000..dada30ff873f --- /dev/null +++ b/keyboards/acheron/themis/87htsc/87htsc.c @@ -0,0 +1,25 @@ +/* Copyright 2023 Gondolindrim + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ; + } + return res; +} diff --git a/keyboards/acheron/themis/87htsc/config.h b/keyboards/acheron/themis/87htsc/config.h new file mode 100644 index 000000000000..605594eea209 --- /dev/null +++ b/keyboards/acheron/themis/87htsc/config.h @@ -0,0 +1,30 @@ +/* +Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define RGBLED_NUM 1 + +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA2_STREAM5 +#define WS2812_DMA_CHANNEL 6 diff --git a/keyboards/acheron/themis/87htsc/halconf.h b/keyboards/acheron/themis/87htsc/halconf.h new file mode 100644 index 000000000000..485d48ef3067 --- /dev/null +++ b/keyboards/acheron/themis/87htsc/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/acheron/themis/87htsc/info.json b/keyboards/acheron/themis/87htsc/info.json new file mode 100644 index 000000000000..5b491690bbc2 --- /dev/null +++ b/keyboards/acheron/themis/87htsc/info.json @@ -0,0 +1,140 @@ +{ + "keyboard_name": "Themis 87H-T-SC Rev. Alpha", + "usb": { + "pid": "0x5449", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ], + "rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"] + }, + "features": { + "bootmagic": true, + "lto": true, + "mousekey": true, + "extrakey": true, + "console": false, + "backlight": false, + "rgblight": true, + "audio": false, + "encoder": false, + "nkro": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 8192 + } + }, + "ws2812": { + "pin": "B15" + }, + "processor": "STM32F401", + "bootloader": "stm32-dfu", + "community_layouts": ["tkl_ansi_tsangan"], + "layouts": { + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"label":"Escape", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label":"F1", "matrix": [0, 1], "x": 2, "y": 0}, + {"label":"F2", "matrix": [0, 2], "x": 3, "y": 0}, + {"label":"F3", "matrix": [0, 3], "x": 4, "y": 0}, + {"label":"F4", "matrix": [0, 4], "x": 5, "y": 0}, + + {"label":"F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label":"F6", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label":"F7", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label":"F8", "matrix": [0, 9], "x": 9.5, "y": 0}, + + {"label":"F9", "matrix": [0, 10], "x": 11, "y": 0}, + {"label":"F10", "matrix": [0, 11], "x": 12, "y": 0}, + {"label":"F11", "matrix": [0, 12], "x": 13, "y": 0}, + {"label":"F12", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0}, + {"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0}, + {"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0}, + + {"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label":"0)", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label":"-_", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label":"=+", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label":"Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + + {"label":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25}, + {"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25}, + {"label":"Page Up","matrix": [7, 16], "x": 17.25, "y": 1.25}, + + {"label":"Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label":"Q", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label":"W", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label":"E", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label":"R", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label":"T", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label":"Y", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label":"U", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label":"I", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label":"O", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label":"P", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label":"[{", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label":"]}", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label":"\\|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"label":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25}, + {"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25}, + {"label":"Page Down", "matrix": [8, 16], "x": 17.25, "y": 2.25}, + + {"label":"Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label":"A", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label":"S", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label":"D", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label":"F", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label":"G", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label":"H", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label":"J", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label":"K", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label":"L", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label":";:", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label":"\'\"", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label":"Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"label":"Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label":"Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label":"Lwin", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label":"Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25}, + {"label":"RAlt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"label":"RWin", "matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"label":"RCtrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"label":"Left", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label":"Down", "matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"label":"Right", "matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/acheron/themis/87htsc/keymaps/default/keymap.c b/keyboards/acheron/themis/87htsc/keymaps/default/keymap.c new file mode 100755 index 000000000000..7b29220ec8d4 --- /dev/null +++ b/keyboards/acheron/themis/87htsc/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi_tsangan( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi_tsangan( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/acheron/themis/87htsc/keymaps/via/keymap.c b/keyboards/acheron/themis/87htsc/keymaps/via/keymap.c new file mode 100755 index 000000000000..7b29220ec8d4 --- /dev/null +++ b/keyboards/acheron/themis/87htsc/keymaps/via/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi_tsangan( + KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi_tsangan( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/dztech/og60/keymaps/via/rules.mk b/keyboards/acheron/themis/87htsc/keymaps/via/rules.mk similarity index 100% rename from keyboards/dztech/og60/keymaps/via/rules.mk rename to keyboards/acheron/themis/87htsc/keymaps/via/rules.mk diff --git a/keyboards/acheron/themis/87htsc/mcuconf.h b/keyboards/acheron/themis/87htsc/mcuconf.h new file mode 100644 index 000000000000..3d1d05c307c4 --- /dev/null +++ b/keyboards/acheron/themis/87htsc/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/layouts/community/65_ansi/mechmerlin/rules.mk b/keyboards/acheron/themis/87htsc/rules.mk similarity index 100% rename from layouts/community/65_ansi/mechmerlin/rules.mk rename to keyboards/acheron/themis/87htsc/rules.mk diff --git a/keyboards/acheron/themis/88htsc/88htsc.c b/keyboards/acheron/themis/88htsc/88htsc.c new file mode 100644 index 000000000000..dada30ff873f --- /dev/null +++ b/keyboards/acheron/themis/88htsc/88htsc.c @@ -0,0 +1,25 @@ +/* Copyright 2023 Gondolindrim + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ; + } + return res; +} diff --git a/keyboards/acheron/themis/88htsc/config.h b/keyboards/acheron/themis/88htsc/config.h new file mode 100644 index 000000000000..605594eea209 --- /dev/null +++ b/keyboards/acheron/themis/88htsc/config.h @@ -0,0 +1,30 @@ +/* +Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define RGBLED_NUM 1 + +#define WS2812_PWM_COMPLEMENTARY_OUTPUT +#define WS2812_PWM_DRIVER PWMD1 +#define WS2812_PWM_CHANNEL 3 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA2_STREAM5 +#define WS2812_DMA_CHANNEL 6 diff --git a/keyboards/acheron/themis/88htsc/halconf.h b/keyboards/acheron/themis/88htsc/halconf.h new file mode 100644 index 000000000000..485d48ef3067 --- /dev/null +++ b/keyboards/acheron/themis/88htsc/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/acheron/themis/88htsc/info.json b/keyboards/acheron/themis/88htsc/info.json new file mode 100644 index 000000000000..073a16e94616 --- /dev/null +++ b/keyboards/acheron/themis/88htsc/info.json @@ -0,0 +1,142 @@ +{ + "keyboard_name": "Themis 88H-T-SC Rev. Alpha", + "usb": { + "pid": "0x5450", + "device_version": "0.0.1" + }, + "matrix_pins": { + "cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ], + "rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"] + }, + "features": { + "bootmagic": true, + "lto": true, + "mousekey": true, + "extrakey": true, + "console": false, + "backlight": false, + "rgblight": true, + "audio": false, + "encoder": false, + "nkro": true + }, + "diode_direction": "COL2ROW", + "eeprom": { + "wear_leveling": { + "backing_size": 8192 + } + }, + "ws2812": { + "pin": "B15" + }, + "processor": "STM32F401", + "bootloader": "stm32-dfu", + "community_layouts": ["tkl_f13_ansi_tsangan"], + "layouts": { + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"label":"Escape", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label":"F1", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label":"F2", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label":"F3", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label":"F4", "matrix": [0, 4], "x": 4.25, "y": 0}, + + {"label":"F5", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label":"F6", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label":"F7", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label":"F8", "matrix": [0, 8], "x": 8.5, "y": 0}, + + {"label":"F9", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label":"F10", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label":"F11", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label":"F12", "matrix": [0, 12], "x": 12.75, "y": 0}, + + {"label":"F13", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0}, + {"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0}, + {"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0}, + + {"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label":"0)", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label":"-_", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label":"=+", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label":"Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + + {"label":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25}, + {"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25}, + {"label":"Page Up","matrix": [7, 16], "x": 17.25, "y": 1.25}, + + {"label":"Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label":"Q", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label":"W", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label":"E", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label":"R", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label":"T", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label":"Y", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label":"U", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label":"I", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label":"O", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label":"P", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label":"[{", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label":"]}", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label":"\\|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"label":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25}, + {"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25}, + {"label":"Page Down", "matrix": [8, 16], "x": 17.25, "y": 2.25}, + + {"label":"Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label":"A", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label":"S", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label":"D", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label":"F", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label":"G", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label":"H", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label":"J", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label":"K", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label":"L", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label":";:", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label":"\'\"", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label":"Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"label":"Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"label":"Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label":"Lwin", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label":"Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25}, + {"label":"RAlt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5}, + {"label":"RWin", "matrix": [5, 11], "x": 12.5, "y": 5.25}, + {"label":"RCtrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"label":"Left", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label":"Down", "matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"label":"Right", "matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/acheron/themis/88htsc/keymaps/default/keymap.c b/keyboards/acheron/themis/88htsc/keymaps/default/keymap.c new file mode 100755 index 000000000000..725b294b0d65 --- /dev/null +++ b/keyboards/acheron/themis/88htsc/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_f13_ansi_tsangan( + 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_F13, KC_PSCR, KC_SCRL, KC_PAUS , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi_tsangan( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/acheron/themis/88htsc/keymaps/via/keymap.c b/keyboards/acheron/themis/88htsc/keymaps/via/keymap.c new file mode 100755 index 000000000000..725b294b0d65 --- /dev/null +++ b/keyboards/acheron/themis/88htsc/keymaps/via/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_f13_ansi_tsangan( + 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_F13, KC_PSCR, KC_SCRL, KC_PAUS , + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN , + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi_tsangan( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/hs60/v2/ansi/keymaps/stanrc85/rules.mk b/keyboards/acheron/themis/88htsc/keymaps/via/rules.mk similarity index 100% rename from keyboards/hs60/v2/ansi/keymaps/stanrc85/rules.mk rename to keyboards/acheron/themis/88htsc/keymaps/via/rules.mk diff --git a/keyboards/acheron/themis/88htsc/mcuconf.h b/keyboards/acheron/themis/88htsc/mcuconf.h new file mode 100644 index 000000000000..3d1d05c307c4 --- /dev/null +++ b/keyboards/acheron/themis/88htsc/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_ADVANCED +#define STM32_PWM_USE_ADVANCED TRUE + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE diff --git a/layouts/community/ortho_4x12/alfrdmalr/rules.mk b/keyboards/acheron/themis/88htsc/rules.mk similarity index 100% rename from layouts/community/ortho_4x12/alfrdmalr/rules.mk rename to keyboards/acheron/themis/88htsc/rules.mk diff --git a/keyboards/acheron/themis/info.json b/keyboards/acheron/themis/info.json new file mode 100644 index 000000000000..4f9d3b61e615 --- /dev/null +++ b/keyboards/acheron/themis/info.json @@ -0,0 +1,8 @@ +{ + "manufacturer": "AcheronProject", + "url": "", + "maintainer": "Gondolindrim", + "usb": { + "vid": "0xAC11" + } +} diff --git a/keyboards/acheron/themis/readme.md b/keyboards/acheron/themis/readme.md new file mode 100644 index 000000000000..8c0c7e63e54f --- /dev/null +++ b/keyboards/acheron/themis/readme.md @@ -0,0 +1,23 @@ +# Acheron Themis QMK firmware + +![themis](https://i.imgur.com/kwemOsJh.png) + +The Themis is Acheron Project's open-source, freely available tenkeyless (TKL) keyboard Printed Circuit Boards (PCB) which features: + +- No LED lighting +- Solderless ("hotswap") MX switches support +- Fixed layout for each variant + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: open-source PCB using the [Joker template](https://acheronproject.com/joker_mcus/joker/). First units were manufactured using STM32F4x1 microcontroller; +* Hardware Availability: open-source PCBs + +In order to flash this PCB, first build the default layout (after setting up your build environment): + + make acheron/themis/:default + +After building or downloading the firmware, put the PCB into DFU mode by holding the reset button for at least five seconds and upload the firmware onto the microcontroller through a utility like `dfu-util` or QMK Toolbox. Alternatively, you can build and flash using: + + make acheron/themis/:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/adafruit/macropad/keymaps/drashna/config.h b/keyboards/adafruit/macropad/keymaps/drashna/config.h deleted file mode 100644 index 4d85f039bea6..000000000000 --- a/keyboards/adafruit/macropad/keymaps/drashna/config.h +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 -#define TAPPING_TERM 499 diff --git a/keyboards/adafruit/macropad/keymaps/drashna/keymap.c b/keyboards/adafruit/macropad/keymaps/drashna/keymap.c deleted file mode 100644 index d87e4afd6671..000000000000 --- a/keyboards/adafruit/macropad/keymaps/drashna/keymap.c +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "drashna.h" - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - LT(1,KC_MUTE), - KC_ENT, KC_0, KC_BSPC, - KC_7, KC_8, KC_9, - KC_4, KC_5, KC_6, - KC_1, KC_2, KC_3 - ), - [1] = LAYOUT( - _______, - CK_TOGG, AU_TOGG, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______ - ), -}; -// clang-format on - -#ifdef ENCODER_MAP_ENABLE -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [1] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)}, -}; -#endif - -void render_oled_title(bool side) { - oled_write_P(PSTR(" Macropad "), true); -} - -void render_rgb_mode(uint8_t col, uint8_t line); - -void l_render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line) { - oled_set_cursor(col, line); -#ifdef CAPS_WORD_ENABLE - led_usb_state.caps_lock |= is_caps_word_on(); -#endif - oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state.num_lock); - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state.caps_lock); - oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state.scroll_lock); -} - -bool oled_task_keymap(void) { - oled_write_raw_P(header_image, sizeof(header_image)); - oled_set_cursor(0, 1); - oled_write_raw_P(row_2_image, sizeof(row_2_image)); - oled_set_cursor(4, 0); - render_oled_title(false); - - render_kitty(0, 2); - render_matrix_scan_rate(1, 7, 2); - -#ifdef AUDIO_ENABLE - oled_set_cursor(7, 4); - bool l_is_audio_on = is_audio_on(); - - static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}}; - oled_write_P(audio_status[l_is_audio_on], false); - -# ifdef AUDIO_CLICKY - bool l_is_clicky_on = is_clicky_on(); - static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}}; - oled_write_P(audio_clicky_status[l_is_clicky_on && l_is_audio_on], false); -# endif -#endif - - static const char PROGMEM cat_mode[3] = {0xF8, 0xF9, 0}; - oled_write_P(cat_mode, get_keyboard_lock()); - -#ifdef RGB_MATIRX_ENABLE - static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}}; - oled_write_P(rgb_layer_status[rgb_matrix_is_enabled()], false); -#endif - -#ifdef HAPTIC_ENABLE - static const char PROGMEM nukem_good[2] = {0xFA, 0}; - oled_write_P(haptic_get_enable() ? nukem_good : PSTR(" "), false); -#endif - - l_render_keylock_status(host_keyboard_led_state(), 7, 5); - render_rgb_mode(1, 6); - - for (uint8_t i = 1; i < 7; i++) { - oled_set_cursor(0, i); - oled_write_raw_P(display_border, sizeof(display_border)); - oled_set_cursor(21, i); - oled_write_raw_P(display_border, sizeof(display_border)); - } - oled_set_cursor(0, 7); - oled_write_raw_P(footer_image, sizeof(footer_image)); - - return false; -} diff --git a/keyboards/adafruit/macropad/keymaps/drashna/rules.mk b/keyboards/adafruit/macropad/keymaps/drashna/rules.mk deleted file mode 100644 index ea090a575665..000000000000 --- a/keyboards/adafruit/macropad/keymaps/drashna/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -ENCODER_MAP_ENABLE = yes -DEBUG_MATRIX_SCAN_RATE_ENABLE = api -WPM_ENABLE = yes diff --git a/keyboards/adafruit/macropad/keymaps/peterfalken/keymap.c b/keyboards/adafruit/macropad/keymaps/peterfalken/keymap.c deleted file mode 100644 index f232a998619e..000000000000 --- a/keyboards/adafruit/macropad/keymaps/peterfalken/keymap.c +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2023 Peter.Falken (@PeterFalken) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "peterfalken.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( - KC_MUTE, - KC_7, KC_8, KC_9, - KC_4, KC_5, KC_6, - KC_1, KC_2, KC_3, - KC_ENT, KC_0, KC_BSPC - ) -}; - -#ifdef ENCODER_MAP_ENABLE -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, -}; -#endif - -#ifdef OLED_ENABLE -static void render_qmk_logo(void) { - static const char PROGMEM qmk_logo[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, - 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 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, - 0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x7e, 0xf8, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, - 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0x7e, 0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, - 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - oled_write_raw_P(qmk_logo, sizeof(qmk_logo)); -} - -bool oled_task_user(void) { - render_qmk_logo(); - return true; -} -#endif // OLED_ENABLE diff --git a/keyboards/adafruit/macropad/keymaps/peterfalken/rules.mk b/keyboards/adafruit/macropad/keymaps/peterfalken/rules.mk deleted file mode 100644 index 59ffb099c24b..000000000000 --- a/keyboards/adafruit/macropad/keymaps/peterfalken/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -# Setup QMK features -ENCODER_MAP_ENABLE = yes -RGB_MATRIX_ENABLE = no # Disable RGB key matrix diff --git a/keyboards/adm42/config.h b/keyboards/adm42/config.h deleted file mode 100644 index b5ba2eb94eaa..000000000000 --- a/keyboards/adm42/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2020-2022 Lorenzo Leonini - * SPDX-License-Identifier: GPL-2.0-only - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -#if defined(CONSOLE_ENABLE) - #define DEBUG_MATRIX_SCAN_RATE -#endif diff --git a/keyboards/adm42/info.json b/keyboards/adm42/info.json deleted file mode 100644 index b2bdbc4dad0d..000000000000 --- a/keyboards/adm42/info.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "keyboard_name": "ADM42", - "manufacturer": "Lorenzo Leonini", - "url": "https://adm42.dev/", - "maintainer": "lleonini", - "debounce": 10, - "usb": { - "vid": "0x04D8", - "pid": "0xE873", - "device_version": "0.0.1" - }, - "ws2812": { - "pin": "B7" - }, - "rgb_matrix": { - "driver": "ws2812", - "sat_steps": 24 - }, - "qmk": { - "tap_keycode_delay": 1 - }, - "build": { - "debounce_type": "sym_eager_pk" - }, - "matrix_pins": { - "cols": ["C6", "B6", "B5", "B4", "D7", "D6", "F0", "F1", "F4", "F5", "F6", "F7"], - "rows": ["C7", "D5", "D3", "D2"] - }, - "diode_direction": "ROW2COL", - "processor": "atmega32u4", - "bootloader": "atmel-dfu", - "layout_aliases": { - "LAYOUT_adm42_3x12_6": "LAYOUT" - }, - "layouts": { - "LAYOUT": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0.8}, - {"matrix": [0, 1], "x": 1, "y": 0.8}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0.5}, - {"matrix": [0, 5], "x": 5, "y": 0.5}, - - {"matrix": [0, 6], "x": 7.5, "y": 0.5}, - {"matrix": [0, 7], "x": 8.5, "y": 0.5}, - {"matrix": [0, 8], "x": 9.5, "y": 0}, - {"matrix": [0, 9], "x": 10.5, "y": 0}, - {"matrix": [0, 10], "x": 11.5, "y": 0.8}, - {"matrix": [0, 11], "x": 12.5, "y": 0.8}, - - {"matrix": [1, 0], "x": 0, "y": 1.8}, - {"matrix": [1, 1], "x": 1, "y": 1.8}, - {"matrix": [1, 2], "x": 2, "y": 1}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1.5}, - {"matrix": [1, 5], "x": 5, "y": 1.5}, - - {"matrix": [1, 6], "x": 7.5, "y": 1.5}, - {"matrix": [1, 7], "x": 8.5, "y": 1.5}, - {"matrix": [1, 8], "x": 9.5, "y": 1}, - {"matrix": [1, 9], "x": 10.5, "y": 1}, - {"matrix": [1, 10], "x": 11.5, "y": 1.8}, - {"matrix": [1, 11], "x": 12.5, "y": 1.8}, - - {"matrix": [2, 0], "x": 0, "y": 2.8}, - {"matrix": [2, 1], "x": 1, "y": 2.8}, - {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2.5}, - {"matrix": [2, 5], "x": 5, "y": 2.5}, - - {"matrix": [2, 6], "x": 7.5, "y": 2.5}, - {"matrix": [2, 7], "x": 8.5, "y": 2.5}, - {"matrix": [2, 8], "x": 9.5, "y": 2}, - {"matrix": [2, 9], "x": 10.5, "y": 2}, - {"matrix": [2, 10], "x": 11.5, "y": 2.8}, - {"matrix": [2, 11], "x": 12.5, "y": 2.8}, - - {"matrix": [3, 3], "x": 4.25, "y": 3.55}, - {"matrix": [3, 4], "x": 5.25, "y": 3.65}, - {"matrix": [3, 6], "x": 6.25, "y": 1.875, "h": 1.25}, - - {"matrix": [3, 5], "x": 6.25, "y": 4.05}, - {"matrix": [3, 7], "x": 7.25, "y": 3.65}, - {"matrix": [3, 8], "x": 8.25, "y": 3.55} - ] - } - } -} diff --git a/keyboards/adm42/rev4/config.h b/keyboards/adm42/rev4/config.h deleted file mode 100644 index 5553b18751cc..000000000000 --- a/keyboards/adm42/rev4/config.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright 2020-2022 Lorenzo Leonini - * SPDX-License-Identifier: GPL-2.0-only - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 ADM42_LED E6 - -#define RGB_MATRIX_LED_COUNT 42 -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 170 -#define RGB_DISABLE_WHEN_USB_SUSPENDED -#define RGB_MATRIX_LED_PROCESS_LIMIT 21 -#define RGB_MATRIX_LED_FLUSH_LIMIT 16 -#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT -#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 20 -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS - -#define ENABLE_RGB_MATRIX_BREATHING -#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -#define ENABLE_RGBLIGHT_MODE_STATIC_LIGHT -#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL -#define ENABLE_RGB_MATRIX_TYPING_HEATMAP -#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN -#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -#define ENABLE_RGB_MATRIX_PIXEL_RAIN -#define ENABLE_RGB_MATRIX_DIGITAL_RAIN -#define ENABLE_RGB_MATRIX_BAND_VAL -#define ENABLE_RGB_MATRIX_SPLASH diff --git a/keyboards/adm42/rev4/info.json b/keyboards/adm42/rev4/info.json new file mode 100644 index 000000000000..efb0eea029b2 --- /dev/null +++ b/keyboards/adm42/rev4/info.json @@ -0,0 +1,163 @@ +{ + "keyboard_name": "ADM42", + "manufacturer": "Lorenzo Leonini", + "url": "https://adm42.dev/", + "maintainer": "lleonini", + "debounce": 10, + "usb": { + "vid": "0x04D8", + "pid": "0xE873", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "ws2812": { + "pin": "B7" + }, + "rgb_matrix": { + "driver": "ws2812", + "animations": { + "breathing": true, + "band_val": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_pinwheel": true, + "jellybean_raindrops": true, + "pixel_fractal": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "splash": true + }, + "layout": [ + {"matrix": [3, 6], "x": 112, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 92, "y": 36, "flags": 4}, + {"matrix": [1, 5], "x": 94, "y": 25, "flags": 4}, + {"matrix": [0, 5], "x": 97, "y": 14, "flags": 4}, + {"matrix": [0, 4], "x": 80, "y": 13, "flags": 4}, + {"matrix": [1, 4], "x": 77, "y": 24, "flags": 4}, + {"matrix": [1, 3], "x": 62, "y": 18, "flags": 4}, + {"matrix": [0, 3], "x": 64, "y": 8, "flags": 4}, + {"matrix": [0, 2], "x": 49, "y": 6, "flags": 4}, + {"matrix": [1, 2], "x": 46, "y": 17, "flags": 4}, + {"matrix": [1, 1], "x": 28, "y": 23, "flags": 4}, + {"matrix": [0, 1], "x": 30, "y": 13, "flags": 4}, + {"matrix": [0, 0], "x": 14, "y": 11, "flags": 4}, + {"matrix": [1, 0], "x": 11, "y": 22, "flags": 4}, + {"matrix": [2, 0], "x": 8, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 26, "y": 34, "flags": 4}, + {"matrix": [2, 2], "x": 43, "y": 28, "flags": 4}, + {"matrix": [2, 3], "x": 61, "y": 29, "flags": 4}, + {"matrix": [2, 4], "x": 76, "y": 34, "flags": 4}, + {"matrix": [3, 3], "x": 78, "y": 46, "flags": 4}, + {"matrix": [3, 4], "x": 97, "y": 49, "flags": 4}, + {"matrix": [3, 5], "x": 112, "y": 56, "flags": 4}, + {"matrix": [3, 7], "x": 127, "y": 49, "flags": 4}, + {"matrix": [3, 8], "x": 146, "y": 46, "flags": 4}, + {"matrix": [2, 6], "x": 132, "y": 36, "flags": 4}, + {"matrix": [2, 7], "x": 148, "y": 34, "flags": 4}, + {"matrix": [2, 8], "x": 164, "y": 29, "flags": 4}, + {"matrix": [2, 9], "x": 180, "y": 28, "flags": 4}, + {"matrix": [2, 10], "x": 198, "y": 34, "flags": 4}, + {"matrix": [2, 11], "x": 215, "y": 32, "flags": 4}, + {"matrix": [1, 11], "x": 212, "y": 22, "flags": 4}, + {"matrix": [1, 10], "x": 196, "y": 23, "flags": 4}, + {"matrix": [1, 9], "x": 178, "y": 17, "flags": 4}, + {"matrix": [1, 8], "x": 161, "y": 18, "flags": 4}, + {"matrix": [1, 7], "x": 146, "y": 24, "flags": 4}, + {"matrix": [1, 6], "x": 130, "y": 25, "flags": 4}, + {"matrix": [0, 6], "x": 126, "y": 14, "flags": 4}, + {"matrix": [0, 7], "x": 143, "y": 13, "flags": 4}, + {"matrix": [0, 8], "x": 159, "y": 8, "flags": 4}, + {"matrix": [0, 9], "x": 175, "y": 6, "flags": 4}, + {"matrix": [0, 10], "x": 194, "y": 13, "flags": 4}, + {"matrix": [0, 11], "x": 210, "y": 11, "flags": 4} + ], + "led_flush_limit": 16, + "led_process_limit": 21, + "max_brightness": 170, + "sat_steps": 24, + "sleep": true + }, + "qmk": { + "tap_keycode_delay": 1 + }, + "build": { + "debounce_type": "sym_eager_pk", + "lto": true + }, + "matrix_pins": { + "cols": ["C6", "B6", "B5", "B4", "D7", "D6", "F0", "F1", "F4", "F5", "F6", "F7"], + "rows": ["C7", "D5", "D3", "D2"] + }, + "diode_direction": "ROW2COL", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layout_aliases": { + "LAYOUT_adm42_3x12_6": "LAYOUT" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.8}, + {"matrix": [0, 1], "x": 1, "y": 0.8}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.5}, + {"matrix": [0, 5], "x": 5, "y": 0.5}, + + {"matrix": [0, 6], "x": 7.5, "y": 0.5}, + {"matrix": [0, 7], "x": 8.5, "y": 0.5}, + {"matrix": [0, 8], "x": 9.5, "y": 0}, + {"matrix": [0, 9], "x": 10.5, "y": 0}, + {"matrix": [0, 10], "x": 11.5, "y": 0.8}, + {"matrix": [0, 11], "x": 12.5, "y": 0.8}, + + {"matrix": [1, 0], "x": 0, "y": 1.8}, + {"matrix": [1, 1], "x": 1, "y": 1.8}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.5}, + {"matrix": [1, 5], "x": 5, "y": 1.5}, + + {"matrix": [1, 6], "x": 7.5, "y": 1.5}, + {"matrix": [1, 7], "x": 8.5, "y": 1.5}, + {"matrix": [1, 8], "x": 9.5, "y": 1}, + {"matrix": [1, 9], "x": 10.5, "y": 1}, + {"matrix": [1, 10], "x": 11.5, "y": 1.8}, + {"matrix": [1, 11], "x": 12.5, "y": 1.8}, + + {"matrix": [2, 0], "x": 0, "y": 2.8}, + {"matrix": [2, 1], "x": 1, "y": 2.8}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.5}, + {"matrix": [2, 5], "x": 5, "y": 2.5}, + + {"matrix": [2, 6], "x": 7.5, "y": 2.5}, + {"matrix": [2, 7], "x": 8.5, "y": 2.5}, + {"matrix": [2, 8], "x": 9.5, "y": 2}, + {"matrix": [2, 9], "x": 10.5, "y": 2}, + {"matrix": [2, 10], "x": 11.5, "y": 2.8}, + {"matrix": [2, 11], "x": 12.5, "y": 2.8}, + + {"matrix": [3, 3], "x": 4.25, "y": 3.55}, + {"matrix": [3, 4], "x": 5.25, "y": 3.65}, + {"matrix": [3, 6], "x": 6.25, "y": 1.875, "h": 1.25}, + + {"matrix": [3, 5], "x": 6.25, "y": 4.05}, + {"matrix": [3, 7], "x": 7.25, "y": 3.65}, + {"matrix": [3, 8], "x": 8.25, "y": 3.55} + ] + } + } +} diff --git a/keyboards/adm42/rev4/keymaps/default/config.h b/keyboards/adm42/rev4/keymaps/default/config.h deleted file mode 100644 index abfaf9af7892..000000000000 --- a/keyboards/adm42/rev4/keymaps/default/config.h +++ /dev/null @@ -1,2 +0,0 @@ -#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY -#define QUICK_TAP_TERM_PER_KEY diff --git a/keyboards/adm42/rev4/keymaps/default/keymap.c b/keyboards/adm42/rev4/keymaps/default/keymap.c deleted file mode 100644 index 12e4e85a4a14..000000000000 --- a/keyboards/adm42/rev4/keymaps/default/keymap.c +++ /dev/null @@ -1,204 +0,0 @@ -/* Copyright 2020-2022 Lorenzo Leonini - * SPDX-License-Identifier: GPL-2.0-only - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 custom_layers { - _QWERTY, - _COLEMAKDH, - _SPECIAL, - _EXTRA, - _ADM, - _SETUP, -}; - -#define LW_GRV LWIN_T(KC_GRV) -#define RW_EQU RWIN_T(KC_EQUAL) -#define RW_BS RWIN_T(KC_BSLS) -#define LC_TAB LCTL_T(KC_TAB) -#define RC_QUT RCTL_T(KC_QUOT) -#define LS_BPC LSFT_T(KC_BSPC) -#define RS_SPC RSFT_T(KC_SPC) -#define LA_BS LALT_T(KC_BSLS) -#define LW_F11 LWIN_T(KC_F11) -#define LC_APP LCTL_T(KC_APP) -#define LA_TOG LALT_T(RGB_TOG) -#define RW_F12 RWIN_T(KC_F12) - -#define LLS_ESC LT(_SPECIAL, KC_ESC) -#define LLS_RALT LT(_SPECIAL, KC_RALT) -#define LLE_ENT LT(_EXTRA, KC_ENT) -#define LLA_DEL LT(_ADM, KC_DEL) -#define SETUP MO(_SETUP) - -enum custom_keycodes { - REFLASH = SAFE_RANGE, - LC_CIRC, - RC_DLR, - DF_QWER, - DF_COLE, -}; - -// Not a mistake to have KC_LALT (also) on the right, RALT is kept for compose (LLS_RALT) -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( - LW_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RW_EQU, - LC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, RC_QUT, - KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT, - LLS_ESC, LS_BPC, LLA_DEL, LLE_ENT, RS_SPC, LLS_RALT - ), - [_COLEMAKDH] = LAYOUT( - LW_GRV, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, RW_EQU, - LC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, RC_QUT, - KC_LALT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_LALT, - LLS_ESC, LS_BPC, LLA_DEL, LLE_ENT, RS_SPC, LLS_RALT - ), - - [_SPECIAL] = LAYOUT( - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RW_BS, - LC_CIRC, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_EXLM, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_MINS, RC_DLR, - _______, KC_AMPR, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_UNDS, KC_ASTR, KC_HASH, KC_PERC, KC_TILD, _______, - KC_ESC, _______, KC_DEL, KC_ENT, _______, KC_RALT - ), - [_EXTRA] = LAYOUT( - LW_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RW_F12, - KC_LCTL, KC_PAUS, KC_INS, KC_VOLD, KC_VOLU, KC_MUTE, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_APP, KC_RCTL, - _______, KC_SLEP, KC_PWR, KC_MSTP, KC_MNXT, KC_MPLY, _______, KC_BRID, KC_BRIU, KC_PSCR, KC_WAKE, _______, - KC_CAPS, _______, _______, _______, _______, KC_CAPS - ), - [_ADM] = LAYOUT( - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_B, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUD, RGB_HUI, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, RGB_SPD, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, SETUP, XXXXXXX, XXXXXXX - ), - [_SETUP] = LAYOUT( - REFLASH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, DF_QWER, DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ), -}; - -bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { - // Special if-condition outside the switch because `RC_QUT` overlaps with - // the `QK_MOD_TAP ... QK_MOD_TAP_MAX` range. - if (keycode == RC_QUT) { - return false; - } - switch (keycode) { - case QK_MOD_TAP ... QK_MOD_TAP_MAX: - case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: - return true; - default: - return false; - } -} - -uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case LLS_ESC: - case LLS_RALT: - return 0; - default: - return QUICK_TAP_TERM; - } -} - -static uint16_t last_timer = 0; -static int last_key = 0; -bool cleanup_return(uint16_t keycode, keyrecord_t *record, bool value) { - if (record->event.pressed) { - last_key = keycode; - last_timer = timer_read(); - } - return value; -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - -#ifdef CONSOLE_ENABLE - uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); -#endif - - switch (keycode) { - - case RC_DLR: - if (record->event.pressed) { - register_code(KC_RCTL); - } else { - unregister_code(KC_RCTL); - if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) { - send_string("$"); - } - } - return cleanup_return(keycode, record, false); - - case LC_CIRC: - if (record->event.pressed) { - register_code(KC_LCTL); - } else { - unregister_code(KC_LCTL); - if (last_key == keycode && timer_elapsed(last_timer) <= TAPPING_TERM) { - send_string("^"); - } - } - return cleanup_return(keycode, record, false); - - case DF_QWER: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - send_string("QWERTY layout"); - } - return false; - case DF_COLE: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAKDH); - send_string("COLEMAKDH layout"); - } - return false; - - case REFLASH: - eeconfig_init(); - eeconfig_update_rgb_matrix_default(); - writePinLow(ADM42_LED); - reset_keyboard(); - return false; - - default: - return cleanup_return(keycode, record, true); - } -} - -void keyboard_pre_init_kb(void) { - setPinOutput(ADM42_LED); - writePinHigh(ADM42_LED); -} - -void keyboard_post_init_kb(void) { - debug_enable = true; - debug_matrix = false; - debug_keyboard = false; - writePinHigh(ADM42_LED); -} - -void suspend_power_down_kb(void) { - writePinLow(ADM42_LED); -} - -void suspend_wakeup_init_kb(void) { - writePinHigh(ADM42_LED); -} diff --git a/keyboards/adm42/rev4/keymaps/default/keymap.json b/keyboards/adm42/rev4/keymaps/default/keymap.json new file mode 100644 index 000000000000..72eb7d50de47 --- /dev/null +++ b/keyboards/adm42/rev4/keymaps/default/keymap.json @@ -0,0 +1,44 @@ +{ + "keyboard": "adm42/rev4", + "keymap": "default", + "commit": "3bf01bb9ed202b14f78105db2aa2a75d01fc4323", + "layout": "LAYOUT", + "layers": [ + [ + "LWIN_T(KC_GRV)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "RWIN_T(KC_EQL)", + "LCTL_T(KC_TAB)", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "RCTL_T(KC_QUOT)", + "KC_LALT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_LALT", + "LT(2,KC_ESC)", "LSFT_T(KC_BSPC)", "LT(4,KC_DEL)", "LT(3,KC_ENT)", "RSFT_T(KC_SPC)", "LT(2,KC_RALT)" + ], + [ + "LWIN_T(KC_GRV)", "KC_Q", "KC_W", "KC_F", "KC_P", "KC_B", "KC_J", "KC_L", "KC_U", "KC_Y", "KC_SCLN", "RWIN_T(KC_EQL)", + "LCTL_T(KC_TAB)", "KC_A", "KC_R", "KC_S", "KC_T", "KC_G", "KC_M", "KC_N", "KC_E", "KC_I", "KC_O", "RCTL_T(KC_QUOT)", + "KC_LALT", "KC_Z", "KC_X", "KC_C", "KC_D", "KC_V", "KC_K", "KC_H", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_LALT", + "LT(2,KC_ESC)", "LSFT_T(KC_BSPC)", "LT(4,KC_DEL)", "LT(3,KC_ENT)", "RSFT_T(KC_SPC)", "LT(2,KC_RALT)" + ], + [ + "_______", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "RWIN_T(KC_BSLS)", + "KC_LCTL", "KC_LBRC", "KC_RBRC", "KC_LPRN", "KC_RPRN", "KC_EXLM", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT", "KC_MINS", "KC_RCTL", + "_______", "KC_AMPR", "KC_AT", "KC_LCBR", "KC_RCBR", "KC_PIPE", "KC_UNDS", "KC_ASTR", "KC_HASH", "KC_PERC", "KC_TILD", "_______", + "KC_ESC", "_______", "KC_DEL", "KC_ENT", "_______", "KC_RALT" + ], + [ + "LWIN_T(KC_F11)", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "RWIN_T(KC_F12)", + "KC_LCTL", "KC_PAUS", "KC_INS", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_HOME", "KC_PGDN", "KC_PGUP", "KC_END", "KC_APP", "KC_RCTL", + "_______", "KC_SLEP", "KC_PWR", "KC_MSTP", "KC_MNXT", "KC_MPLY", "_______", "KC_BRID", "KC_BRIU", "KC_PSCR", "KC_WAKE", "_______", + "KC_CAPS", "_______", "_______", "_______", "_______", "KC_CAPS" + ], + [ + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RGB_M_B", "RGB_VAD", "RGB_VAI", "RGB_SAD", "RGB_SAI", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "RGB_HUD", "RGB_HUI", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RGB_M_P", "RGB_SPD", "RGB_SPI", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "MO(5)", "XXXXXXX", "XXXXXXX" + ], + [ + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "DF(0)", "DF(1)", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "EE_CLR", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX" + ] + ] +} \ No newline at end of file diff --git a/keyboards/adm42/rev4/rev4.c b/keyboards/adm42/rev4/rev4.c deleted file mode 100644 index 623b5cb5a381..000000000000 --- a/keyboards/adm42/rev4/rev4.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2020-2022 Lorenzo Leonini - * SPDX-License-Identifier: GPL-2.0-only - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "quantum.h" - -led_config_t g_led_config = { - { - {12, 11, 8, 7, 4, 3, 36, 37, 38, 39, 40, 41}, - {13, 10, 9, 6, 5, 2, 35, 34, 33, 32, 31, 30}, - {14, 15, 16, 17, 18, 1, 24, 25, 26, 27, 28, 29}, - {NO_LED, NO_LED, NO_LED, 19, 20, 21, 0, 22, 23, NO_LED, NO_LED, NO_LED} - }, { - {112, 32}, {92, 36}, {94, 25}, {97, 14}, {80, 13}, {77, 24}, - {62, 18}, {64, 8}, {49, 6}, {46, 17}, {28, 23}, {30, 13}, - {14, 11}, {11, 22}, {8, 32}, {26, 34}, {43, 28}, {61, 29}, - {76, 34}, {78, 46}, {97, 49}, {112, 56}, {127, 49}, {146, 46}, - {132, 36}, {148, 34}, {164, 29}, {180, 28}, {198, 34}, {215, 32}, - {212, 22}, {196, 23}, {178, 17}, {161, 18}, {146, 24}, {130, 25}, - {126, 14}, {143, 13}, {159, 8}, {175, 6}, {194, 13}, {210, 11} - }, { - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4 - } -}; diff --git a/keyboards/adm42/rev4/rules.mk b/keyboards/adm42/rev4/rules.mk index aad92997d0fa..6e7633bfe015 100644 --- a/keyboards/adm42/rev4/rules.mk +++ b/keyboards/adm42/rev4/rules.mk @@ -1 +1 @@ -RGB_MATRIX_ENABLE = yes +# This file intentionally left blank diff --git a/keyboards/adm42/rules.mk b/keyboards/adm42/rules.mk index a2402f19a9b2..06fc88e9f6c6 100644 --- a/keyboards/adm42/rules.mk +++ b/keyboards/adm42/rules.mk @@ -1,15 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -LTO_ENABLE = yes - -DEFAULT_FOLDER = adm42/rev4 +DEFAULT_FOLDER = adm42/rev4 \ No newline at end of file diff --git a/keyboards/aeboards/constellation/rev2/info.json b/keyboards/aeboards/constellation/rev2/info.json index 87cb103d4a96..b8dae5f20cfa 100644 --- a/keyboards/aeboards/constellation/rev2/info.json +++ b/keyboards/aeboards/constellation/rev2/info.json @@ -13,6 +13,9 @@ "rows": ["B15", "A14", "A2", "B13", "B14"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "i2c" + }, "processor": "STM32L422", "bootloader": "stm32-dfu", "layout_aliases": { diff --git a/keyboards/aeboards/constellation/rev2/rules.mk b/keyboards/aeboards/constellation/rev2/rules.mk index 0fa89d45d2de..c12086843f1c 100755 --- a/keyboards/aeboards/constellation/rev2/rules.mk +++ b/keyboards/aeboards/constellation/rev2/rules.mk @@ -9,5 +9,3 @@ COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no # Audio output - -EEPROM_DRIVER = i2c diff --git a/keyboards/aeboards/ext65/rev1/info.json b/keyboards/aeboards/ext65/rev1/info.json index ffe8d2443ec1..0e110e92357b 100644 --- a/keyboards/aeboards/ext65/rev1/info.json +++ b/keyboards/aeboards/ext65/rev1/info.json @@ -14,8 +14,11 @@ "cols": ["B2", "B3", "B1", "B0", "F7", "F0", "F1", "F4", "F5", "F6"], "rows": ["C6", "C7", "B5", "B6", "D7", "B4", "D4", "D6", "B7", "E6"] }, + "layout_aliases": { + "LAYOUT_ext65": "LAYOUT" + }, "layouts": { - "LAYOUT_ext65": { + "LAYOUT": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [1, 0], "x": 1, "y": 0}, diff --git a/keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c b/keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c index c93172925824..e246b5c471d9 100644 --- a/keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c +++ b/keyboards/aeboards/ext65/rev1/keymaps/default/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght| * `------------------------------------------------------------------------------------------' */ - [0] = LAYOUT_ext65( + [0] = LAYOUT( KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR, KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL , KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, @@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_ext65( + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DB_TOGG, KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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/aeboards/ext65/rev1/keymaps/via/keymap.c b/keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c index c93172925824..e246b5c471d9 100644 --- a/keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c +++ b/keyboards/aeboards/ext65/rev1/keymaps/via/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght| * `------------------------------------------------------------------------------------------' */ - [0] = LAYOUT_ext65( + [0] = LAYOUT( KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR, KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL , KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, @@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_ext65( + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DB_TOGG, KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h index 78d20f300fe9..c5149f574103 100644 --- a/keyboards/aeboards/ext65/rev2/config.h +++ b/keyboards/aeboards/ext65/rev2/config.h @@ -17,7 +17,7 @@ #pragma once //SPI -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/aeboards/ext65/rev2/info.json b/keyboards/aeboards/ext65/rev2/info.json index d9d0ee62ee1c..ab229e19ec6e 100644 --- a/keyboards/aeboards/ext65/rev2/info.json +++ b/keyboards/aeboards/ext65/rev2/info.json @@ -38,8 +38,11 @@ "cols": ["B14", "B6", "A0", "B1", "B0", "A7", "A6", "A5", "A4", "A3"], "rows": ["A10", "A9", "A8", "B7", "A2", "A1", "B12", "B11", "B10", "B2"] }, + "layout_aliases": { + "LAYOUT_ext65": "LAYOUT" + }, "layouts": { - "LAYOUT_ext65": { + "LAYOUT": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [1, 0], "x": 1, "y": 0}, diff --git a/keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c b/keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c index c93172925824..e246b5c471d9 100644 --- a/keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c +++ b/keyboards/aeboards/ext65/rev2/keymaps/default/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght| * `------------------------------------------------------------------------------------------' */ - [0] = LAYOUT_ext65( + [0] = LAYOUT( KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR, KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL , KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, @@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_ext65( + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DB_TOGG, KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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/aeboards/ext65/rev2/keymaps/via/keymap.c b/keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c index c93172925824..e246b5c471d9 100644 --- a/keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c +++ b/keyboards/aeboards/ext65/rev2/keymaps/via/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght| * `------------------------------------------------------------------------------------------' */ - [0] = LAYOUT_ext65( + [0] = LAYOUT( KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , KC_PSCR, KC_PPLS, KC_P9 , KC_P8 , KC_P7 , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL , KC_PPLS, KC_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, @@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PENT, KC_PDOT, KC_P0 , KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_ext65( + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DB_TOGG, KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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_ext65( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, 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/aeboards/ext65/rev3/info.json b/keyboards/aeboards/ext65/rev3/info.json index bb507545a018..0faf6fa135a7 100644 --- a/keyboards/aeboards/ext65/rev3/info.json +++ b/keyboards/aeboards/ext65/rev3/info.json @@ -19,8 +19,11 @@ "cols": ["F6", "F7", "B1", "B3", "B2", "D5", "D3", "D2", "D1", "D0"], "rows": ["B5", "B6", "C6", "C7", "E6", "B0", "B4", "D7", "D4", "D6"] }, + "layout_aliases": { + "LAYOUT_ext65_hotswap": "LAYOUT" + }, "layouts": { - "LAYOUT_ext65_hotswap": { + "LAYOUT": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [1, 0], "x": 1, "y": 0}, diff --git a/keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c b/keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c index 72a10cae1ba7..ac6dd4dfedea 100644 --- a/keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c +++ b/keyboards/aeboards/ext65/rev3/keymaps/default/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght| * `------------------------------------------------------------------------------------------' */ - [0] = LAYOUT_ext65_hotswap( + [0] = LAYOUT( KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, 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_PPLS, KC_P9 , KC_P8 , KC_P7 , 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_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, @@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PDOT, KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_ext65_hotswap( + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DB_TOGG, KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65_hotswap( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65_hotswap( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/aeboards/ext65/rev3/keymaps/via/keymap.c b/keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c index 72a10cae1ba7..ac6dd4dfedea 100644 --- a/keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c +++ b/keyboards/aeboards/ext65/rev3/keymaps/via/keymap.c @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | . | 0 | | Ctrl | Win | Alt | Space | FN | Ctrl | |Left| Dn | Rght| * `------------------------------------------------------------------------------------------' */ - [0] = LAYOUT_ext65_hotswap( + [0] = LAYOUT( KC_PMNS, KC_PAST, KC_PSLS, KC_NUM, 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_PPLS, KC_P9 , KC_P8 , KC_P7 , 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_P6 , KC_P5 , KC_P4 , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGUP, @@ -37,27 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_PDOT, KC_P0 , KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT_ext65_hotswap( + [1] = LAYOUT( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DB_TOGG, KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65_hotswap( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_ext65_hotswap( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/aeboards/satellite/rev1/config.h b/keyboards/aeboards/satellite/rev1/config.h index 508689faf502..429bc2af5461 100644 --- a/keyboards/aeboards/satellite/rev1/config.h +++ b/keyboards/aeboards/satellite/rev1/config.h @@ -17,14 +17,13 @@ #pragma once //RGB Matrix defines -#define DRIVER_ADDR_1 0x74 -#define DRIVER_ADDR_2 0x76 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 36 #define DRIVER_2_LED_TOTAL 36 -#define ISSI_DRIVER_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -#define RGB_MATRIX_LED_COUNT ISSI_DRIVER_TOTAL +#define IS31FL3731_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +#define RGB_MATRIX_LED_COUNT IS31FL3731_LED_COUNT #define RGB_MATRIX_DEFAULT_VAL 80 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/aeboards/satellite/rev1/rev1.c b/keyboards/aeboards/satellite/rev1/rev1.c index 785fa8af9ff7..6727894e0671 100644 --- a/keyboards/aeboards/satellite/rev1/rev1.c +++ b/keyboards/aeboards/satellite/rev1/rev1.c @@ -18,7 +18,7 @@ #include "drivers/led/issi/is31fl3731.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -145,38 +145,27 @@ led_config_t g_led_config = { { // Custom Driver static void init(void) { i2c_init(); - is31fl3731_init(DRIVER_ADDR_1); - is31fl3731_init(DRIVER_ADDR_2); - for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) { + + is31fl3731_init(IS31FL3731_I2C_ADDRESS_1); + is31fl3731_init(IS31FL3731_I2C_ADDRESS_2); + + for (int index = 0; index < IS31FL3731_LED_COUNT; index++) { bool enabled = !( ( index == 18+5) || //B5 ( index == 36+17) || //C17 ( index == 54+13) //D13 ); is31fl3731_set_led_control_register(index, enabled, enabled, enabled); } - is31fl3731_update_led_control_registers(DRIVER_ADDR_1, 0); - is31fl3731_update_led_control_registers(DRIVER_ADDR_2, 1); -} - -static void flush(void) { - is31fl3731_update_pwm_buffers(DRIVER_ADDR_1, 0); - is31fl3731_update_pwm_buffers(DRIVER_ADDR_2, 1); -} - -static void set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - is31fl3731_set_color(index, red, green, blue); -} -static void set_color_all(uint8_t red, uint8_t green, uint8_t blue) { - is31fl3731_set_color_all( red, green, blue ); + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_1, 0); + is31fl3731_update_led_control_registers(IS31FL3731_I2C_ADDRESS_2, 1); } - const rgb_matrix_driver_t rgb_matrix_driver = { .init = init, - .flush = flush, - .set_color = set_color, - .set_color_all = set_color_all + .flush = is31fl3731_flush, + .set_color = is31fl3731_set_color, + .set_color_all = is31fl3731_set_color_all }; #endif diff --git a/keyboards/aeboards/satellite/rev1/rules.mk b/keyboards/aeboards/satellite/rev1/rules.mk index 1a4657b08c72..f95b0f015d77 100644 --- a/keyboards/aeboards/satellite/rev1/rules.mk +++ b/keyboards/aeboards/satellite/rev1/rules.mk @@ -18,4 +18,4 @@ COMMON_VPATH += $(DRIVER_PATH)/issi # project specific files SRC += drivers/led/issi/is31fl3731.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/ah/haven65/info.json b/keyboards/ah/haven65/info.json index 1cdc337836e0..579cbffd7ad4 100644 --- a/keyboards/ah/haven65/info.json +++ b/keyboards/ah/haven65/info.json @@ -24,7 +24,7 @@ "rgblight": true }, "ws2812": { - "pin": "C7", + "pin": "C7" }, "rgblight": { "led_count": 1, diff --git a/keyboards/ai03/duet/config.h b/keyboards/ai03/duet/config.h new file mode 100644 index 000000000000..9cebd11c6bad --- /dev/null +++ b/keyboards/ai03/duet/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 128 diff --git a/keyboards/ai03/duet/info.json b/keyboards/ai03/duet/info.json new file mode 100644 index 000000000000..1d11c868a37f --- /dev/null +++ b/keyboards/ai03/duet/info.json @@ -0,0 +1,139 @@ +{ + "manufacturer": "ai03 Design Studio", + "keyboard_name": "Duet Switch Tester", + "maintainer": "ai03-2725", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP18", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6"], + "rows": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5"] + }, + "processor": "RP2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x0028", + "vid": "0xA103" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.75, "y": 0}, + {"matrix": [0, 7], "x": 7.75, "y": 0}, + {"matrix": [0, 8], "x": 9, "y": 0}, + {"matrix": [0, 9], "x": 10, "y": 0}, + {"matrix": [0, 10], "x": 11.25, "y": 0}, + {"matrix": [0, 11], "x": 12.25, "y": 0}, + {"matrix": [0, 12], "x": 13.5, "y": 0}, + {"matrix": [0, 13], "x": 14.5, "y": 0}, + {"matrix": [0, 14], "x": 15.75, "y": 0}, + {"matrix": [0, 15], "x": 16.75, "y": 0}, + {"matrix": [0, 16], "x": 18, "y": 0}, + {"matrix": [0, 17], "x": 19, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 9, "y": 1}, + {"matrix": [1, 9], "x": 10, "y": 1}, + {"matrix": [1, 10], "x": 11.25, "y": 1}, + {"matrix": [1, 11], "x": 12.25, "y": 1}, + {"matrix": [1, 12], "x": 13.5, "y": 1}, + {"matrix": [1, 13], "x": 14.5, "y": 1}, + {"matrix": [1, 14], "x": 15.75, "y": 1}, + {"matrix": [1, 15], "x": 16.75, "y": 1}, + {"matrix": [1, 16], "x": 18, "y": 1}, + {"matrix": [1, 17], "x": 19, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2.25, "y": 2}, + {"matrix": [2, 3], "x": 3.25, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 11.25, "y": 2}, + {"matrix": [2, 11], "x": 12.25, "y": 2}, + {"matrix": [2, 12], "x": 13.5, "y": 2}, + {"matrix": [2, 13], "x": 14.5, "y": 2}, + {"matrix": [2, 14], "x": 15.75, "y": 2}, + {"matrix": [2, 15], "x": 16.75, "y": 2}, + {"matrix": [2, 16], "x": 18, "y": 2}, + {"matrix": [2, 17], "x": 19, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 9, "y": 3}, + {"matrix": [3, 9], "x": 10, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "x": 12.25, "y": 3}, + {"matrix": [3, 12], "x": 13.5, "y": 3}, + {"matrix": [3, 13], "x": 14.5, "y": 3}, + {"matrix": [3, 14], "x": 15.75, "y": 3}, + {"matrix": [3, 15], "x": 16.75, "y": 3}, + {"matrix": [3, 16], "x": 18, "y": 3}, + {"matrix": [3, 17], "x": 19, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.5, "y": 4}, + {"matrix": [4, 5], "x": 5.5, "y": 4}, + {"matrix": [4, 6], "x": 6.75, "y": 4}, + {"matrix": [4, 7], "x": 7.75, "y": 4}, + {"matrix": [4, 8], "x": 9, "y": 4}, + {"matrix": [4, 9], "x": 10, "y": 4}, + {"matrix": [4, 10], "x": 11.25, "y": 4}, + {"matrix": [4, 11], "x": 12.25, "y": 4}, + {"matrix": [4, 12], "x": 13.5, "y": 4}, + {"matrix": [4, 13], "x": 14.5, "y": 4}, + {"matrix": [4, 14], "x": 15.75, "y": 4}, + {"matrix": [4, 15], "x": 16.75, "y": 4}, + {"matrix": [4, 16], "x": 18, "y": 4}, + {"matrix": [4, 17], "x": 19, "y": 4}, + {"matrix": [5, 0], "x": 0, "y": 5}, + {"matrix": [5, 1], "x": 1, "y": 5}, + {"matrix": [5, 2], "x": 2.25, "y": 5}, + {"matrix": [5, 3], "x": 3.25, "y": 5}, + {"matrix": [5, 4], "x": 4.5, "y": 5}, + {"matrix": [5, 5], "x": 5.5, "y": 5}, + {"matrix": [5, 6], "x": 6.75, "y": 5}, + {"matrix": [5, 7], "x": 7.75, "y": 5}, + {"matrix": [5, 8], "x": 9, "y": 5}, + {"matrix": [5, 9], "x": 10, "y": 5}, + {"matrix": [5, 10], "x": 11.25, "y": 5}, + {"matrix": [5, 11], "x": 12.25, "y": 5}, + {"matrix": [5, 12], "x": 13.5, "y": 5}, + {"matrix": [5, 13], "x": 14.5, "y": 5}, + {"matrix": [5, 14], "x": 15.75, "y": 5}, + {"matrix": [5, 15], "x": 16.75, "y": 5}, + {"matrix": [5, 16], "x": 18, "y": 5}, + {"matrix": [5, 17], "x": 19, "y": 5} + ] + } + } +} diff --git a/keyboards/ai03/duet/keymaps/coordinate/keymap.c b/keyboards/ai03/duet/keymaps/coordinate/keymap.c new file mode 100644 index 000000000000..821c0295343f --- /dev/null +++ b/keyboards/ai03/duet/keymaps/coordinate/keymap.c @@ -0,0 +1,34 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + + +/* Coordinate keymap - designed to send a string in the format [a-r][0-5] corresponding to the matrix position, where a0 is the top left and r5 is bottom right */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0 + ), +}; + + +/* String generation */ + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + if (record->event.pressed) { + char col = record->event.key.col + 'a'; + char row = record->event.key.row + '0'; + char result[2] = {col, row}; + send_string(result); + } + + return false; +} diff --git a/keyboards/ai03/duet/keymaps/coordinate/readme.md b/keyboards/ai03/duet/keymaps/coordinate/readme.md new file mode 100644 index 000000000000..de8245875d11 --- /dev/null +++ b/keyboards/ai03/duet/keymaps/coordinate/readme.md @@ -0,0 +1,4 @@ +# The coordinate keymap for Duet + +An example keymap which sends a string `[a-r][0-5]` corresponding to the column-row position of the pressed switch. +Possibly useful for pairing to a kiosk device provided the display application can parse and handle this format. diff --git a/keyboards/ai03/duet/keymaps/default/keymap.c b/keyboards/ai03/duet/keymaps/default/keymap.c new file mode 100644 index 000000000000..29f63678a801 --- /dev/null +++ b/keyboards/ai03/duet/keymaps/default/keymap.c @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, + KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0 + ), +}; diff --git a/keyboards/ai03/duet/keymaps/default/readme.md b/keyboards/ai03/duet/keymaps/default/readme.md new file mode 100644 index 000000000000..fdf727dc96f3 --- /dev/null +++ b/keyboards/ai03/duet/keymaps/default/readme.md @@ -0,0 +1,4 @@ +# The default keymap for Duet + +Since this is a very irregular keyboard with unique use cases, the keymap should be customized to meet one's needs and to match the requirements of the corresponding display software (if any). +By default, all keys send `KC_0` to simply notify the host that an arbitrary key has been pressed. diff --git a/keyboards/ai03/duet/readme.md b/keyboards/ai03/duet/readme.md new file mode 100644 index 000000000000..43c3d6f7c596 --- /dev/null +++ b/keyboards/ai03/duet/readme.md @@ -0,0 +1,28 @@ +# Duet Switch Tester + +![Cover image](https://i.imgur.com/sFuHJbLh.png) + +A switch tester intended for event/storefront use + +* Keyboard Maintainer: [ai03](https://github.com/ai03-2725) +* Hardware Supported: The [Duet PCB](https://github.com/ai03-2725/duet-switch-tester/tree/main/Duet-MainPCB), powered by the RP2040 +* Hardware Availability: [Open-source](https://github.com/ai03-2725/duet-switch-tester) + + +Make example for this keyboard (after setting up your build environment): + + make ai03/duet:default + +Flashing example for this keyboard: + + make ai03/duet:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Press the reset button on the back of the PCB while holding the Bootmode switch +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/ai03/duet/rules.mk b/keyboards/ai03/duet/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/ai03/duet/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/ai03/lunar/keymaps/zyber/keymap.c b/keyboards/ai03/lunar/keymaps/zyber/keymap.c deleted file mode 100644 index 5e2c9f317818..000000000000 --- a/keyboards/ai03/lunar/keymaps/zyber/keymap.c +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2022 ZyBeR (@ZyberSE) -// SPDX-License-Identifier: GPL-2.0 - -#include "zyber.h" - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Base */ - KC_ESC, KC_1, KC_2, KC_3, TD(SSHT), KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD(LBRC), KC_RBRC, KC_BSLS, KC_PGDN, - L1_EXPL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD(SCLN), TD(QUOT), KC_ENT, KC_DEL, - 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, ROPT_SRH,KC_LCMD, _______, LCMD_T(KC_SPC), _______, ROPT_SRH, KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT( /* FN */ - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, KC_PAUS, - C_BLK, _______, KC_UP, _______, _______, _______, KC_NUM, KC_P7, KC_P8, KC_P9, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_SCRL, - _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_VOLD, KC_VOLU, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______, - _______, KC_RCTL, KC_RGUI, KC_RALT, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______, _______, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END - ) -}; - diff --git a/keyboards/ai03/orbit/config.h b/keyboards/ai03/orbit/config.h index f4157a1729cf..53a057875f9c 100644 --- a/keyboards/ai03/orbit/config.h +++ b/keyboards/ai03/orbit/config.h @@ -19,9 +19,6 @@ along with this program. If not, see . #define SELECT_SOFT_SERIAL_SPEED 1 -#define SPLIT_LED_STATE_ENABLE -#define SPLIT_LAYER_STATE_ENABLE - #define SPLIT_HAND_PIN D5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ diff --git a/keyboards/ai03/orbit/info.json b/keyboards/ai03/orbit/info.json index 4c5cd1ee5186..d7ff0b786cca 100644 --- a/keyboards/ai03/orbit/info.json +++ b/keyboards/ai03/orbit/info.json @@ -23,6 +23,12 @@ "cols": ["D4", "D6", "F1", "F0", "F4", "F5", "C6"], "rows": ["B6", "B5", "B4", "D7", "E6"] } + }, + "transport":{ + "sync" :{ + "indicators": true, + "layer_state": true + } } }, "processor": "atmega32u4", diff --git a/keyboards/aidansmithdotdev/fine40/keymaps/vial/rules.mk b/keyboards/aidansmithdotdev/fine40/keymaps/vial/rules.mk index d6aa8769e41e..bd827d811753 100644 --- a/keyboards/aidansmithdotdev/fine40/keymaps/vial/rules.mk +++ b/keyboards/aidansmithdotdev/fine40/keymaps/vial/rules.mk @@ -5,3 +5,4 @@ ENCODER_MAP_ENABLE = yes # Options to reduce firmware size: LTO_ENABLE = yes # make the compiler work harder QMK_SETTINGS = no # enables the tab to change QMK settings from the GUI +TAP_DANCE_ENABLE = no diff --git a/keyboards/akb/ogrn/info.json b/keyboards/akb/ogrn/info.json index 42efe55c2a24..780c35374735 100644 --- a/keyboards/akb/ogrn/info.json +++ b/keyboards/akb/ogrn/info.json @@ -30,29 +30,62 @@ "pid": "0x4F4E", "vid": "0x414B" }, - "community_layouts": [ - "numpad_5x4" - ], + "community_layouts": [ + "ortho_5x4", + "numpad_5x4" + ], "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4} + ] + }, "LAYOUT_numpad_5x4": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, {"matrix": [0, 2], "x": 2, "y": 0}, {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, {"matrix": [1, 1], "x": 1, "y": 1}, {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, {"matrix": [2, 1], "x": 1, "y": 2}, {"matrix": [2, 2], "x": 2, "y": 2}, - {"h": 2, "matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, {"matrix": [3, 1], "x": 1, "y": 3}, {"matrix": [3, 2], "x": 2, "y": 3}, - {"matrix": [4, 0], "w": 2, "x": 0, "y": 4}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 2}, {"matrix": [4, 2], "x": 2, "y": 4}, - {"h": 2, "matrix": [3, 3], "x": 3, "y": 3} + {"matrix": [3, 3], "x": 3, "y": 3, "h": 2} ] } } diff --git a/keyboards/akb/ogrn/keymaps/default/keymap.c b/keyboards/akb/ogrn/keymaps/default/keymap.c index 35a275d055f6..f3901ec7fb3b 100644 --- a/keyboards/akb/ogrn/keymaps/default/keymap.c +++ b/keyboards/akb/ogrn/keymaps/default/keymap.c @@ -6,7 +6,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * ┌───┬───┬───┬───┐ - * │TG1│ / │ * │ - │ + * │NUM│ / │ * │ - │ * ├───┼───┼───┼───┤ * │ 7 │ 8 │ 9 │ │ * ├───┼───┼───┤ + │ @@ -22,21 +22,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P7, KC_P8, KC_P9, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_P1, KC_P2, KC_P3, - KC_P0, KC_PDOT, KC_PENT + KC_P0, KC_PDOT, KC_PENT ), /* * ┌───┬───┬───┬───┐ - * │TG1│ / │ * │ - │ - * ┌───┬───┬───┐───┤ + * │NUM│ / │ * │ - │ + * ├───┼───┼───┼───┤ * │Hom│ ↑ │PgU│ │ * ├───┼───┼───┤ + │ * │ ← │ │ → │ │ - * ├───┼───┼───┤───┤ + * ├───┼───┼───┼───┤ * │End│ ↓ │PgD│ │ * ├───┴───┼───┤Ent│ * │Insert │Del│ │ - * └───────┴───┘───┘ + * └───────┴───┴───┘ */ [1] = LAYOUT_numpad_5x4( _______, _______, _______, _______, diff --git a/keyboards/akb/ogrn/keymaps/via/keymap.c b/keyboards/akb/ogrn/keymaps/via/keymap.c index 7aec87a623c8..f3901ec7fb3b 100644 --- a/keyboards/akb/ogrn/keymaps/via/keymap.c +++ b/keyboards/akb/ogrn/keymaps/via/keymap.c @@ -22,21 +22,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P7, KC_P8, KC_P9, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_P1, KC_P2, KC_P3, - KC_P0, KC_PDOT, KC_PENT + KC_P0, KC_PDOT, KC_PENT ), /* * ┌───┬───┬───┬───┐ - * │ │ / │ * │ - │ - * ┌───┬───┬───┐───┤ + * │NUM│ / │ * │ - │ + * ├───┼───┼───┼───┤ * │Hom│ ↑ │PgU│ │ * ├───┼───┼───┤ + │ * │ ← │ │ → │ │ - * ├───┼───┼───┤───┤ + * ├───┼───┼───┼───┤ * │End│ ↓ │PgD│ │ * ├───┴───┼───┤Ent│ * │Insert │Del│ │ - * └───────┴───┘───┘ + * └───────┴───┴───┘ */ [1] = LAYOUT_numpad_5x4( _______, _______, _______, _______, diff --git a/keyboards/akb/ogrn/matrix_diagram.md b/keyboards/akb/ogrn/matrix_diagram.md new file mode 100644 index 000000000000..03e4f99def9e --- /dev/null +++ b/keyboards/akb/ogrn/matrix_diagram.md @@ -0,0 +1,18 @@ +# Matrix Diagram for Alchemist Keyboards OGRN + +``` + ┌───┬───┬───┬───┐ + │00 │01 │02 │03 │ +┌───┐ ├───┼───┼───┼───┤ ┌───┐ +│ │ │10 │11 │12 │13 │ │ │ +│10 │ ├───┼───┼───┼───┤ │13 │ 2u Numpad Plus +│ │ │20 │21 │22 │23 │ │ │ +├───┤ ├───┼───┼───┼───┤ ├───┤ +│ │ │30 │31 │32 │33 │ │ │ +│30 │ ├───┼───┼───┼───┤ │33 │ 2u Numpad Enter +│ │ │40 │41 │42 │43 │ │ │ +└───┘ └───┴───┴───┴───┘ └───┘ + ┌───────┬───────┐ + │41 │42 │ + └───────┴───────┘ +``` diff --git a/keyboards/akko/5087/5087.c b/keyboards/akko/5087/5087.c new file mode 100644 index 000000000000..4d6cf949009e --- /dev/null +++ b/keyboards/akko/5087/5087.c @@ -0,0 +1,190 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" +// clang-format off +#ifdef RGB_MATRIX_ENABLE +const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + /*row0*/ + {1, A_1, B_1, C_1}, + {1, A_2, B_2, C_2}, + {1, A_3, B_3, C_3}, + {1, A_4, B_4, C_4}, + {1, A_5, B_5, C_5}, + {1, A_6, B_6, C_6}, + {1, A_7, B_7, C_7}, + {1, A_8, B_8, C_8}, + {1, A_9, B_9, C_9}, + {1, A_10, B_10, C_10}, + {1, A_11, B_11, C_11}, + {1, A_12, B_12, C_12}, + {1, A_13, B_13, C_13}, + {1, A_14, B_14, C_14}, + {1, A_15, B_15, C_15}, + {1, A_16, B_16, C_16}, + + /*row1*/ + {0, A_1, B_1, C_1}, + {0, A_2, B_2, C_2}, + {0, A_3, B_3, C_3}, + {0, A_4, B_4, C_4}, + {0, A_5, B_5, C_5}, + {0, A_6, B_6, C_6}, + {0, A_7, B_7, C_7}, + {0, A_8, B_8, C_8}, + {0, A_9, B_9, C_9}, + {0, A_10, B_10, C_10}, + {0, A_11, B_11, C_11}, + {0, A_12, B_12, C_12}, + {0, A_13, B_13, C_13}, + {0, A_14, B_14, C_14}, + {1, D_1, E_1, F_1}, + {1, D_2, E_2, F_2}, + {1, D_3, E_3, F_3}, + + /*row2*/ + {0, D_1, E_1, F_1}, + {0, D_2, E_2, F_2}, + {0, D_3, E_3, F_3}, + {0, D_4, E_4, F_4}, + {0, D_5, E_5, F_5}, + {0, D_6, E_6, F_6}, + {0, D_7, E_7, F_7}, + {0, D_8, E_8, F_8}, + {0, D_9, E_9, F_9}, + {0, D_10, E_10, F_10}, + {0, D_11, E_11, F_11}, + {0, D_12, E_12, F_12}, + {0, D_13, E_13, F_13}, + {0, D_14, E_14, F_14}, + {1, G_1, H_1, I_1}, + {1, G_2, H_2, I_2}, + {1, G_3, H_3, I_3}, + + /*row3*/ + {0, G_1, H_1, I_1}, + {0, G_2, H_2, I_2}, + {0, G_3, H_3, I_3}, + {0, G_4, H_4, I_4}, + {0, G_5, H_5, I_5}, + {0, G_6, H_6, I_6}, + {0, G_7, H_7, I_7}, + {0, G_8, H_8, I_8}, + {0, G_9, H_9, I_9}, + {0, G_10, H_10, I_10}, + {0, G_11, H_11, I_11}, + {0, G_12, H_12, I_12}, + {0, G_13, H_13, I_13}, + + /*row4*/ + {0, J_1, K_1, L_1}, + {0, J_2, K_2, L_2}, + {0, J_3, K_3, L_3}, + {0, J_4, K_4, L_4}, + {0, J_5, K_5, L_5}, + {0, J_6, K_6, L_6}, + {0, J_7, K_7, L_7}, + {0, J_8, K_8, L_8}, + {0, J_9, K_9, L_9}, + {0, J_10, K_10, L_10}, + {0, J_11, K_11, L_11}, + {0, J_12, K_12, L_12}, + {1, J_4, K_4, L_4}, + + /*row5*/ + {0, J_13, K_13, L_13}, + {0, J_14, K_14, L_14}, + {0, J_15, K_15, L_15}, + {0, J_16, K_16, L_16}, + {0, G_14, H_14, I_14}, + {0, G_15, H_15, I_15}, + {0, G_16, H_16, I_16}, + {0, D_15, E_15, F_15}, + {1, J_1, K_1, L_1}, + {1, J_2, K_2, L_2}, + {1, J_3, K_3, L_3}, +}; +#endif // RGB_MATRIX_ENABLE + +enum __layers { + WIN_B, + WIN_W, + WIN_FN, + MAC_B, + MAC_W, + MAC_FN, +}; + +// clang-format on + +void matrix_init_kb(void) { + setPinOutput(LED_MAC_OS_PIN); // LDE2 MAC\WIN + writePinLow(LED_MAC_OS_PIN); + setPinOutput(LED_WIN_LOCK_PIN); // LED3 Win Lock + writePinLow(LED_WIN_LOCK_PIN); + + matrix_init_user(); +} + +void housekeeping_task_kb(void){ + writePin(LED_MAC_OS_PIN, (get_highest_layer(default_layer_state) == 3)); + writePin(LED_WIN_LOCK_PIN, keymap_config.no_gui); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + case DF(WIN_B): + if (record->event.pressed) { + set_single_persistent_default_layer(WIN_B); + } + return false; + case DF(MAC_B): + if (record->event.pressed) { + set_single_persistent_default_layer(MAC_B); + keymap_config.no_gui = 0; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + } break; + } + } + if (!rgb_matrix_is_enabled()) { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable(); + } + return false; + default: + return true; + } +} diff --git a/keyboards/akko/5087/config.h b/keyboards/akko/5087/config.h new file mode 100644 index 000000000000..3a6b7030ee78 --- /dev/null +++ b/keyboards/akko/5087/config.h @@ -0,0 +1,51 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + + +/* LED Indicators */ +#define LED_MAC_OS_PIN C10 +#define LED_WIN_LOCK_PIN C11 + +/* 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 + +/* SPI Config for spi flash*/ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN B3 +#define SPI_MOSI_PIN B5 +#define SPI_MISO_PIN B4 +#define SPI_MOSI_PAL_MODE 5 + +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 + +/* I2C Config for LED Driver */ +#define DRIVER_COUNT 2 +#define DRIVER_ADDR_1 0b1110100 +#define DRIVER_ADDR_2 0b1110111 +#define I2C1_OPMODE OPMODE_I2C +#define I2C1_CLOCK_SPEED 400000 /* 400000 */ + +#define RGB_MATRIX_LED_COUNT 87 + +#define RGB_TRIGGER_ON_KEYDOWN +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES + diff --git a/keyboards/akko/5087/halconf.h b/keyboards/akko/5087/halconf.h new file mode 100644 index 000000000000..55bfe5c97794 --- /dev/null +++ b/keyboards/akko/5087/halconf.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_I2C TRUE +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/akko/5087/info.json b/keyboards/akko/5087/info.json new file mode 100644 index 000000000000..1b4059b0d58d --- /dev/null +++ b/keyboards/akko/5087/info.json @@ -0,0 +1,260 @@ +{ + "keyboard_name": "5087", + "manufacturer": "Akko", + "url":"https://www.akkogear.com", + "maintainer": "jonylee@hfd", + "usb": { + "vid": "0xFFFE", + "pid": "0x000C", + "device_version": "1.0.4", + "suspend_wakeup_delay": 400, + "force_nkro": true + }, + "processor": "WB32FQ95", + "bootloader": "wb32-dfu", + "features": { + "bootmagic": true, + "mousekey": false, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "rgb_matrix": true + }, + "dynamic_keymap": { + "layer_count": 6 + }, + "matrix_pins": { + "cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10"], + "rows": ["B15", "C6", "C7", "C8", "C9", "A8"] + }, + "diode_direction": "ROW2COL", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 8192 + } + }, + "indicators": { + "caps_lock": "A15" + }, + "rgb_matrix": { + "driver": "ckled2001", + "max_brightness": 180, + "animations": { + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "raindrops": true, + "typing_heatmap": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "multisplash": true + }, + "layout":[ + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0}, + { "flags": 4, "matrix": [0, 1], "x": 24, "y": 0}, + { "flags": 4, "matrix": [0, 2], "x": 38, "y": 0}, + { "flags": 4, "matrix": [0, 3], "x": 52, "y": 0}, + { "flags": 4, "matrix": [0, 4], "x": 66, "y": 0}, + { "flags": 4, "matrix": [0, 5], "x": 82, "y": 0}, + { "flags": 4, "matrix": [0, 6], "x": 96, "y": 0}, + { "flags": 4, "matrix": [0, 7], "x":110, "y": 0}, + { "flags": 4, "matrix": [0, 8], "x":124, "y": 0}, + { "flags": 4, "matrix": [0, 9], "x":140, "y": 0}, + { "flags": 4, "matrix": [0, 10], "x":154, "y": 0}, + { "flags": 4, "matrix": [0, 11], "x":168, "y": 0}, + { "flags": 4, "matrix": [0, 12], "x":182, "y": 0}, + { "flags": 4, "matrix": [0, 14], "x":196, "y": 0}, + { "flags": 4, "matrix": [0, 15], "x":210, "y": 0}, + { "flags": 4, "matrix": [0, 16], "x":224, "y": 0}, + + { "flags": 4, "matrix": [1, 0], "x": 0, "y": 12}, + { "flags": 4, "matrix": [1, 1], "x": 13, "y": 12}, + { "flags": 4, "matrix": [1, 2], "x": 26, "y": 12}, + { "flags": 4, "matrix": [1, 3], "x": 39, "y": 12}, + { "flags": 4, "matrix": [1, 4], "x": 52, "y": 12}, + { "flags": 4, "matrix": [1, 5], "x": 65, "y": 12}, + { "flags": 4, "matrix": [1, 6], "x": 79, "y": 12}, + { "flags": 4, "matrix": [1, 7], "x": 92, "y": 12}, + { "flags": 4, "matrix": [1, 8], "x":105, "y": 12}, + { "flags": 4, "matrix": [1, 9], "x":118, "y": 12}, + { "flags": 4, "matrix": [1, 10], "x":131, "y": 12}, + { "flags": 4, "matrix": [1, 11], "x":144, "y": 12}, + { "flags": 4, "matrix": [1, 12], "x":158, "y": 12}, + { "flags": 4, "matrix": [1, 13], "x":171, "y": 12}, + { "flags": 4, "matrix": [1, 14], "x":184, "y": 12}, + { "flags": 4, "matrix": [1, 15], "x":197, "y": 12}, + { "flags": 4, "matrix": [1, 16], "x":210, "y": 12}, + + { "flags": 4, "matrix": [2, 0], "x": 0, "y": 26}, + { "flags": 4, "matrix": [2, 1], "x": 14, "y": 26}, + { "flags": 4, "matrix": [2, 2], "x": 28, "y": 26}, + { "flags": 4, "matrix": [2, 3], "x": 42, "y": 26}, + { "flags": 4, "matrix": [2, 4], "x": 56, "y": 26}, + { "flags": 4, "matrix": [2, 5], "x": 70, "y": 26}, + { "flags": 4, "matrix": [2, 6], "x": 84, "y": 26}, + { "flags": 4, "matrix": [2, 7], "x": 98, "y": 26}, + { "flags": 4, "matrix": [2, 8], "x":112, "y": 26}, + { "flags": 4, "matrix": [2, 9], "x":126, "y": 26}, + { "flags": 4, "matrix": [2, 10], "x":140, "y": 26}, + { "flags": 4, "matrix": [2, 11], "x":154, "y": 26}, + { "flags": 4, "matrix": [2, 12], "x":168, "y": 26}, + { "flags": 4, "matrix": [2, 13], "x":182, "y": 26}, + { "flags": 4, "matrix": [2, 14], "x":196, "y": 26}, + { "flags": 4, "matrix": [2, 15], "x":210, "y": 26}, + { "flags": 4, "matrix": [2, 16], "x":224, "y": 26}, + + { "flags": 4, "matrix": [3, 0], "x": 0, "y": 38}, + { "flags": 4, "matrix": [3, 1], "x": 14, "y": 38}, + { "flags": 4, "matrix": [3, 2], "x": 28, "y": 38}, + { "flags": 4, "matrix": [3, 3], "x": 42, "y": 38}, + { "flags": 4, "matrix": [3, 4], "x": 56, "y": 38}, + { "flags": 4, "matrix": [3, 5], "x": 70, "y": 38}, + { "flags": 4, "matrix": [3, 6], "x": 84, "y": 38}, + { "flags": 4, "matrix": [3, 7], "x": 98, "y": 38}, + { "flags": 4, "matrix": [3, 8], "x":112, "y": 38}, + { "flags": 4, "matrix": [3, 9], "x":126, "y": 38}, + { "flags": 4, "matrix": [3, 10], "x":140, "y": 38}, + { "flags": 4, "matrix": [3, 11], "x":154, "y": 38}, + { "flags": 4, "matrix": [3, 13], "x":182, "y": 38}, + + { "flags": 4, "matrix": [4, 0], "x": 0, "y": 51}, + { "flags": 4, "matrix": [4, 1], "x": 14, "y": 51}, + { "flags": 4, "matrix": [4, 2], "x": 28, "y": 51}, + { "flags": 4, "matrix": [4, 3], "x": 42, "y": 51}, + { "flags": 4, "matrix": [4, 4], "x": 56, "y": 51}, + { "flags": 4, "matrix": [4, 5], "x": 70, "y": 51}, + { "flags": 4, "matrix": [4, 6], "x": 84, "y": 51}, + { "flags": 4, "matrix": [4, 7], "x": 98, "y": 51}, + { "flags": 4, "matrix": [4, 8], "x":112, "y": 51}, + { "flags": 4, "matrix": [4, 9], "x":126, "y": 51}, + { "flags": 4, "matrix": [4, 10], "x":140, "y": 51}, + { "flags": 4, "matrix": [4, 13], "x":154, "y": 51}, + { "flags": 4, "matrix": [4, 15], "x":182, "y": 51}, + + { "flags": 4, "matrix": [5, 0], "x": 0, "y": 64}, + { "flags": 4, "matrix": [5, 1], "x": 14, "y": 64}, + { "flags": 4, "matrix": [5, 2], "x": 28, "y": 64}, + { "flags": 4, "matrix": [5, 5], "x": 70, "y": 64}, + { "flags": 4, "matrix": [5, 9], "x":126, "y": 64}, + { "flags": 4, "matrix": [5, 10], "x":140, "y": 64}, + { "flags": 4, "matrix": [5, 11], "x":154, "y": 64}, + { "flags": 4, "matrix": [5, 13], "x":182, "y": 64}, + { "flags": 4, "matrix": [5, 14], "x":196, "y": 64}, + { "flags": 4, "matrix": [5, 15], "x":210, "y": 64}, + { "flags": 4, "matrix": [5, 16], "x":224, "y": 64} + + ] + }, + "community_layouts": ["tkl_ansi"], + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "F1", "matrix": [0, 1], "x": 2, "y": 0 }, + { "label": "F2", "matrix": [0, 2], "x": 3, "y": 0 }, + { "label": "F3", "matrix": [0, 3], "x": 4, "y": 0 }, + { "label": "F4", "matrix": [0, 4], "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0 }, + { "label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0 }, + { "label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0 }, + { "label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0 }, + { "label": "F9", "matrix": [0, 9], "x": 11, "y": 0 }, + { "label": "F10", "matrix": [0, 10], "x": 12, "y": 0 }, + { "label": "F11", "matrix": [0, 11], "x": 13, "y": 0 }, + { "label": "F12", "matrix": [0, 12], "x": 14, "y": 0 }, + { "label": "PrtSc", "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "label": "ScrLk", "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0 }, + + { "label": "~", "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "label": "!", "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "label": "@", "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "label": "#", "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "label": "$", "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "label": "%", "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "label": "^", "matrix": [1, 6], "x": 6, "y": 1.25 }, + { "label": "&", "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "label": "*", "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "label": "(", "matrix": [1, 9], "x": 9, "y": 1.25 }, + { "label": ")", "matrix": [1, 10], "x": 10, "y": 1.25 }, + { "label": "_", "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "label": "+", "matrix": [1, 12], "x": 12, "y": 1.25 }, + { "label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2 }, + { "label": "Ins", "matrix": [1, 14], "x": 15.25, "y": 1.25 }, + { "label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25 }, + { "label": "PgUp", "matrix": [1, 16], "x": 17.25, "y": 1.25 }, + + { "label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5 }, + { "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 }, + { "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 }, + { "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 }, + { "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 }, + { "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 }, + { "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 }, + { "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 }, + { "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 }, + { "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 }, + { "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 }, + { "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 }, + { "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 }, + { "label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5 }, + { "label": "Del", "matrix": [2, 14], "x": 15.25, "y": 2.25 }, + { "label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25 }, + { "label": "PgDn", "matrix": [2, 16], "x": 17.25, "y": 2.25 }, + + { "label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 }, + { "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 }, + { "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 }, + { "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 }, + { "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 }, + { "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 }, + { "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 }, + { "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 }, + { "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 }, + { "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 }, + { "label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25 }, + { "label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25 }, + + { "label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 }, + { "label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25 }, + { "label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25 }, + { "label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25 }, + { "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 }, + { "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 }, + { "label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25 }, + { "label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25 }, + { "label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25 }, + { "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 }, + { "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 }, + { "label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75 }, + { "label": "Up", "matrix": [4, 15], "x": 16.25, "y": 4.25 }, + + { "label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 }, + { "label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 }, + { "label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 }, + { "label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25 }, + { "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25 }, + { "label": "Win", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25 }, + { "label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25 }, + { "label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25 }, + { "label": "Left", "matrix": [5, 14], "x": 15.25, "y": 5.25 }, + { "label": "Down", "matrix": [5, 15], "x": 16.25, "y": 5.25 }, + { "label": "Right", "matrix": [5, 16], "x": 17.25, "y": 5.25 } + + ] + } + } +} diff --git a/keyboards/akko/5087/keymaps/default/keymap.c b/keyboards/akko/5087/keymaps/default/keymap.c new file mode 100644 index 000000000000..07763ccc8916 --- /dev/null +++ b/keyboards/akko/5087/keymaps/default/keymap.c @@ -0,0 +1,79 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 { + WIN_B, + WIN_W, + WIN_FN, + MAC_B, + MAC_W, + MAC_FN +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [WIN_B] = LAYOUT_tkl_ansi( /* Base */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D), + + + [WIN_FN] = LAYOUT_tkl_ansi( /* FN */ + _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI), + + [MAC_B] = LAYOUT_tkl_ansi( /* Base */ + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D), + [MAC_FN] = LAYOUT_tkl_ansi( /* FN */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI) +}; +// clang-format on diff --git a/keyboards/akko/5087/keymaps/via/keymap.c b/keyboards/akko/5087/keymaps/via/keymap.c new file mode 100644 index 000000000000..dd59925fa908 --- /dev/null +++ b/keyboards/akko/5087/keymaps/via/keymap.c @@ -0,0 +1,79 @@ +/* Copyright (C) 2023 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 { + WIN_B, + WIN_W, + WIN_FN, + MAC_B, + MAC_W, + MAC_FN, +}; + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [WIN_B] = LAYOUT_tkl_ansi( /* Base */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D), + + + [WIN_FN] = LAYOUT_tkl_ansi( /* FN */ + _______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI), + + [MAC_B] = LAYOUT_tkl_ansi( /* Base */ + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [MAC_W] = LAYOUT_tkl_ansi( /* Base */ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, + _______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D), + [MAC_FN] = LAYOUT_tkl_ansi( /* FN */ + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, + _______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, + _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, + _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI) +}; +// clang-format on diff --git a/keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk b/keyboards/akko/5087/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk rename to keyboards/akko/5087/keymaps/via/rules.mk diff --git a/keyboards/akko/5087/mcuconf.h b/keyboards/akko/5087/mcuconf.h new file mode 100644 index 000000000000..0d16f4f04e46 --- /dev/null +++ b/keyboards/akko/5087/mcuconf.h @@ -0,0 +1,24 @@ +/* Copyright (C) 2022 jonylee@hfd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE diff --git a/keyboards/akko/5087/readme.md b/keyboards/akko/5087/readme.md new file mode 100644 index 000000000000..1d002fbb9f35 --- /dev/null +++ b/keyboards/akko/5087/readme.md @@ -0,0 +1,19 @@ +# 5087 + +A customizable 80% keyboard. + +* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986) +* Hardware Supported:Akko 5087 +* Hardware Availability: [akko](https://www.akkogear.com/) + +Make example for this keyboard (after setting up your build environment): + + make akko/5087:default + +Flashing example for this keyboard: + + make akko/5087:default:flash + +**Reset Key**: Hold down the key located at *K000*, which programmed as *Esc* while plugging in the keyboard. + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). diff --git a/keyboards/akko/5087/rules.mk b/keyboards/akko/5087/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/akko/5087/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/akko/5108/5108.c b/keyboards/akko/5108/5108.c index a14f02bc76e8..91f53e1e550d 100644 --- a/keyboards/akko/5108/5108.c +++ b/keyboards/akko/5108/5108.c @@ -17,8 +17,8 @@ #include "quantum.h" // clang-format off #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to SNLED27351 manual for these locations * driver * | R location * | | G location diff --git a/keyboards/akko/5108/config.h b/keyboards/akko/5108/config.h index f56e825e0501..7154ce44d27e 100644 --- a/keyboards/akko/5108/config.h +++ b/keyboards/akko/5108/config.h @@ -16,9 +16,6 @@ #pragma once -/* Use 5 dynamic keymap layers */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 6 - /* LED Indicators */ #define LED_WIN_LOCK_PIN C11 @@ -35,12 +32,10 @@ #define SPI_MOSI_PAL_MODE 5 #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 -#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) /* I2C Config for LED Driver */ -#define DRIVER_COUNT 2 -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND +#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO #define I2C1_SCL_PAL_MODE 4 #define I2C1_OPMODE OPMODE_I2C #define I2C1_CLOCK_SPEED 400000 /* 400000 */ diff --git a/keyboards/akko/5108/info.json b/keyboards/akko/5108/info.json index 7049b20a648c..662a949a53fe 100644 --- a/keyboards/akko/5108/info.json +++ b/keyboards/akko/5108/info.json @@ -26,12 +26,22 @@ "rows": ["B15", "C6", "C7", "C8", "C9", "A8"] }, "diode_direction": "ROW2COL", + "dynamic_keymap": { + "layer_count": 6 + }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 8192 + } + }, "indicators": { "num_lock": "A15", "caps_lock": "C10" }, "rgb_matrix": { - "driver": "is31fl3733", + "driver": "snled27351", "max_brightness": 180, "animations": { "breathing": true, diff --git a/keyboards/akko/5108/rules.mk b/keyboards/akko/5108/rules.mk index 24d5f6f52ecc..6e7633bfe015 100644 --- a/keyboards/akko/5108/rules.mk +++ b/keyboards/akko/5108/rules.mk @@ -1,2 +1 @@ -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash +# This file intentionally left blank diff --git a/keyboards/akko/acr87/acr87.c b/keyboards/akko/acr87/acr87.c index e175e21368ef..7ee9ec6470c6 100644 --- a/keyboards/akko/acr87/acr87.c +++ b/keyboards/akko/acr87/acr87.c @@ -17,8 +17,8 @@ #include "quantum.h" // clang-format off #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to SNLED27351 manual for these locations * driver * | R location * | | G location diff --git a/keyboards/akko/acr87/config.h b/keyboards/akko/acr87/config.h index 221cad86ad1c..4c1fb9afa1f2 100644 --- a/keyboards/akko/acr87/config.h +++ b/keyboards/akko/acr87/config.h @@ -16,9 +16,6 @@ #pragma once -/* Use 5 dynamic keymap layers */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 6 - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -32,13 +29,11 @@ #define SPI_MOSI_PAL_MODE 5 #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 -#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) /* I2C Config for LED Driver */ -#define DRIVER_COUNT 3 -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 -#define DRIVER_ADDR_3 0b1110110 +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND +#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO +#define SNLED27351_I2C_ADDRESS_3 SNLED27351_I2C_ADDRESS_SDA #define I2C1_SCL_PAL_MODE 4 #define I2C1_OPMODE OPMODE_I2C diff --git a/keyboards/akko/acr87/info.json b/keyboards/akko/acr87/info.json index 5ff1926d0c50..5ccb0c3f731b 100644 --- a/keyboards/akko/acr87/info.json +++ b/keyboards/akko/acr87/info.json @@ -26,8 +26,18 @@ "rows": [ "B15", "C6", "C7", "C8", "C9", "A8"] }, "diode_direction": "ROW2COL", + "dynamic_keymap": { + "layer_count": 6 + }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 8192 + } + }, "rgb_matrix": { - "driver": "is31fl3733", + "driver": "snled27351", "max_brightness": 180, "animations": { "breathing": true, diff --git a/keyboards/akko/acr87/rules.mk b/keyboards/akko/acr87/rules.mk index 0dc7a3314204..6e7633bfe015 100644 --- a/keyboards/akko/acr87/rules.mk +++ b/keyboards/akko/acr87/rules.mk @@ -1,3 +1 @@ -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash - +# This file intentionally left blank diff --git a/keyboards/akko/top40/config.h b/keyboards/akko/top40/config.h index bd849292e6af..1d601a189cfc 100644 --- a/keyboards/akko/top40/config.h +++ b/keyboards/akko/top40/config.h @@ -16,9 +16,6 @@ #pragma once -/* Use 5 dynamic keymap layers */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 6 - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -32,12 +29,10 @@ #define SPI_MOSI_PAL_MODE 5 #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 -#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) /* I2C Config for LED Driver */ -#define DRIVER_COUNT 2 -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND +#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO #define I2C1_SCL_PAL_MODE 4 #define I2C1_OPMODE OPMODE_I2C #define I2C1_CLOCK_SPEED 400000 /* 400000 */ diff --git a/keyboards/akko/top40/info.json b/keyboards/akko/top40/info.json index 48252e6c7769..243952ccc8bb 100644 --- a/keyboards/akko/top40/info.json +++ b/keyboards/akko/top40/info.json @@ -26,8 +26,18 @@ "rows": ["C7", "C8", "C9", "A8"] }, "diode_direction": "ROW2COL", + "dynamic_keymap": { + "layer_count": 6 + }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 8192 + } + }, "rgb_matrix": { - "driver": "is31fl3733", + "driver": "snled27351", "max_brightness": 180, "animations": { "breathing": true, diff --git a/keyboards/akko/top40/rules.mk b/keyboards/akko/top40/rules.mk index b753f0682e56..6e7633bfe015 100644 --- a/keyboards/akko/top40/rules.mk +++ b/keyboards/akko/top40/rules.mk @@ -1,6 +1 @@ -# Build Options -# change yes to no to disable -# -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash - +# This file intentionally left blank diff --git a/keyboards/akko/top40/top40.c b/keyboards/akko/top40/top40.c index 7fe193447dc6..028e4bdd057b 100644 --- a/keyboards/akko/top40/top40.c +++ b/keyboards/akko/top40/top40.c @@ -17,8 +17,8 @@ #include "quantum.h" // clang-format off #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to SNLED27351 manual for these locations * driver * | R location * | | G location diff --git a/keyboards/alf/dc60/info.json b/keyboards/alf/dc60/info.json index 906b78c10e7e..e0aa59f44f67 100644 --- a/keyboards/alf/dc60/info.json +++ b/keyboards/alf/dc60/info.json @@ -142,7 +142,7 @@ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, @@ -211,7 +211,7 @@ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, @@ -282,7 +282,7 @@ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, @@ -354,7 +354,7 @@ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, @@ -424,7 +424,7 @@ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, @@ -496,7 +496,7 @@ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, diff --git a/keyboards/alf/dc60/matrix_diagram.md b/keyboards/alf/dc60/matrix_diagram.md index 368318c1cdec..d2020bda6a4d 100644 --- a/keyboards/alf/dc60/matrix_diagram.md +++ b/keyboards/alf/dc60/matrix_diagram.md @@ -2,12 +2,12 @@ Most of these are "best-guess." I was using photos I found on ZFrontier as a reference and I don't have the PCB on-hand. - - @noroadsleft - 2023-01-20 + +\- @noroadsleft, 2023-11-21 ``` ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐ -│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0E │ 2u Backspace +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0D │ 2u Backspace ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤ │10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │ │ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter diff --git a/keyboards/alhenkb/macropad5x4/info.json b/keyboards/alhenkb/macropad5x4/info.json index 29be39249d77..1fb472255d3d 100644 --- a/keyboards/alhenkb/macropad5x4/info.json +++ b/keyboards/alhenkb/macropad5x4/info.json @@ -65,7 +65,7 @@ {"label": "K31 (B6,F6)", "matrix": [3, 1], "x": 1, "y": 3}, {"label": "K32 (B6,B1)", "matrix": [3, 2], "x": 2, "y": 3}, {"label": "K40 (B5,F4)", "matrix": [4, 0], "x": 0, "y": 4, "w": 2}, - {"label": "K42 (B5,B1)", "matrix": [4, 2], "x": 2, "y": 4} + {"label": "K42 (B5,B1)", "matrix": [4, 2], "x": 2, "y": 4}, {"label": "K43 (B5,B2)", "matrix": [4, 3], "x": 3, "y": 3, "h": 2} ] } diff --git a/keyboards/alpaca/wfeclipse/info.json b/keyboards/alpaca/wfeclipse/info.json new file mode 100644 index 000000000000..47288bb190d3 --- /dev/null +++ b/keyboards/alpaca/wfeclipse/info.json @@ -0,0 +1,210 @@ +{ + "manufacturer": "Alpaca", + "keyboard_name": "WFEclipse", + "bootloader": "stm32duino", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C11", "C10", "A15", "A10", "A9", "A8", "C9", "C8", "C7", "C6", "B1", "B0", "C5", "C4", "A7", "A6"], + "rows": ["A0", "A1", "A2", "A3", "A4"] + }, + "processor": "STM32F103", + "rgb_matrix": { + "animations": { + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_wave": true, + "pixel_fractal": true, + "solid_color": true, + "solid_reactive_simple": true, + "solid_splash": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [4, 15], "x": 198, "y": 54, "flags": 1}, + {"matrix": [4, 14], "x": 186, "y": 54, "flags": 1}, + {"matrix": [4, 13], "x": 174, "y": 54, "flags": 1}, + {"matrix": [4, 12], "x": 150, "y": 54, "flags": 1}, + {"matrix": [4, 11], "x": 138, "y": 54, "flags": 1}, + {"matrix": [4, 10], "x": 126, "y": 54, "flags": 1}, + {"matrix": [4, 6], "x": 51, "y": 54, "flags": 1}, + {"matrix": [4, 2], "x": 36, "y": 54, "flags": 1}, + {"matrix": [4, 1], "x": 21, "y": 54, "flags": 1}, + {"matrix": [4, 0], "x": 6, "y": 54, "flags": 1}, + {"matrix": [3, 15], "x": 198, "y": 42, "flags": 1}, + {"matrix": [3, 14], "x": 186, "y": 42, "flags": 1}, + {"matrix": [3, 13], "x": 153, "y": 42, "flags": 1}, + {"matrix": [3, 11], "x": 141, "y": 42, "flags": 1}, + {"matrix": [3, 10], "x": 129, "y": 42, "flags": 1}, + {"matrix": [3, 9], "x": 117, "y": 42, "flags": 1}, + {"matrix": [3, 8], "x": 105, "y": 42, "flags": 1}, + {"matrix": [3, 7], "x": 93, "y": 42, "flags": 1}, + {"matrix": [3, 6], "x": 81, "y": 42, "flags": 1}, + {"matrix": [3, 5], "x": 69, "y": 42, "flags": 1}, + {"matrix": [3, 4], "x": 57, "y": 42, "flags": 1}, + {"matrix": [3, 3], "x": 45, "y": 42, "flags": 1}, + {"matrix": [3, 2], "x": 33, "y": 42, "flags": 1}, + {"matrix": [3, 0], "x": 6, "y": 42, "flags": 1}, + {"matrix": [2, 15], "x": 198, "y": 30, "flags": 1}, + {"matrix": [2, 14], "x": 186, "y": 30, "flags": 1}, + {"matrix": [2, 13], "x": 159, "y": 30, "flags": 1}, + {"matrix": [2, 11], "x": 147, "y": 30, "flags": 1}, + {"matrix": [2, 10], "x": 135, "y": 30, "flags": 1}, + {"matrix": [2, 9], "x": 123, "y": 30, "flags": 1}, + {"matrix": [2, 8], "x": 111, "y": 30, "flags": 1}, + {"matrix": [2, 7], "x": 99, "y": 30, "flags": 1}, + {"matrix": [2, 6], "x": 87, "y": 30, "flags": 1}, + {"matrix": [2, 5], "x": 75, "y": 30, "flags": 1}, + {"matrix": [2, 4], "x": 63, "y": 30, "flags": 1}, + {"matrix": [2, 3], "x": 51, "y": 30, "flags": 1}, + {"matrix": [2, 2], "x": 39, "y": 30, "flags": 1}, + {"matrix": [2, 1], "x": 27, "y": 30, "flags": 1}, + {"matrix": [2, 0], "x": 6, "y": 30, "flags": 1}, + {"matrix": [1, 15], "x": 198, "y": 18, "flags": 1}, + {"matrix": [1, 14], "x": 186, "y": 18, "flags": 1}, + {"matrix": [1, 13], "x": 168, "y": 18, "flags": 1}, + {"matrix": [1, 12], "x": 156, "y": 18, "flags": 1}, + {"matrix": [1, 11], "x": 144, "y": 18, "flags": 1}, + {"matrix": [1, 10], "x": 132, "y": 18, "flags": 1}, + {"matrix": [1, 9], "x": 120, "y": 18, "flags": 1}, + {"matrix": [1, 8], "x": 108, "y": 18, "flags": 1}, + {"matrix": [1, 7], "x": 96, "y": 18, "flags": 1}, + {"matrix": [1, 6], "x": 84, "y": 18, "flags": 1}, + {"matrix": [1, 5], "x": 72, "y": 18, "flags": 1}, + {"matrix": [1, 4], "x": 60, "y": 18, "flags": 1}, + {"matrix": [1, 3], "x": 48, "y": 18, "flags": 1}, + {"matrix": [1, 2], "x": 36, "y": 18, "flags": 1}, + {"matrix": [1, 1], "x": 24, "y": 18, "flags": 1}, + {"matrix": [1, 0], "x": 6, "y": 18, "flags": 1}, + {"matrix": [0, 15], "x": 198, "y": 6, "flags": 1}, + {"matrix": [0, 14], "x": 186, "y": 6, "flags": 1}, + {"matrix": [0, 13], "x": 162, "y": 6, "flags": 1}, + {"matrix": [0, 12], "x": 150, "y": 6, "flags": 1}, + {"matrix": [0, 11], "x": 138, "y": 6, "flags": 1}, + {"matrix": [0, 10], "x": 126, "y": 6, "flags": 1}, + {"matrix": [0, 9], "x": 114, "y": 6, "flags": 1}, + {"matrix": [0, 8], "x": 102, "y": 6, "flags": 1}, + {"matrix": [0, 7], "x": 90, "y": 6, "flags": 1}, + {"matrix": [0, 6], "x": 78, "y": 6, "flags": 1}, + {"matrix": [0, 5], "x": 66, "y": 6, "flags": 1}, + {"matrix": [0, 4], "x": 54, "y": 6, "flags": 1}, + {"matrix": [0, 3], "x": 42, "y": 6, "flags": 1}, + {"matrix": [0, 2], "x": 30, "y": 6, "flags": 1}, + {"matrix": [0, 1], "x": 18, "y": 6, "flags": 1}, + {"matrix": [0, 0], "x": 6, "y": 6, "flags": 1}, + {"x": 125, "y": 1, "flags": 4}, + {"x": 125, "y": 2, "flags": 4}, + {"x": 125, "y": 3, "flags": 4}, + {"x": 125, "y": 4, "flags": 4}, + {"x": 125, "y": 5, "flags": 4}, + {"x": 125, "y": 6, "flags": 4}, + {"x": 125, "y": 7, "flags": 4}, + {"x": 125, "y": 8, "flags": 4}, + {"x": 125, "y": 9, "flags": 4}, + {"x": 125, "y": 10, "flags": 4}, + {"x": 125, "y": 11, "flags": 4}, + {"x": 125, "y": 12, "flags": 4} + ], + "max_brightness": 50 + }, + "usb": { + "device_version": "1.0.4", + "pid": "0x0038", + "vid": "0x308F" + }, + "ws2812": { + "pin": "B8" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "MINS", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "EQL", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "BSPC", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "DEL", "matrix": [0, 14], "x": 15, "y": 0}, + {"label": "INS", "matrix": [0, 15], "x": 16, "y": 0}, + {"label": "TAB", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "LBRC", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "RBRC", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "BSLS", "matrix": [1, 13], "x": 13.5, "y": 1}, + {"label": "HOME", "matrix": [1, 14], "x": 15, "y": 1}, + {"label": "PGUP", "matrix": [1, 15], "x": 16, "y": 1}, + {"label": "CAPS", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": "SCLN", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "QUOT", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "ENT", "matrix": [2, 13], "x": 12.75, "y": 2}, + {"label": "END", "matrix": [2, 14], "x": 15, "y": 2}, + {"label": "PGDN", "matrix": [2, 15], "x": 16, "y": 2}, + {"label": "LSFT", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "COMM", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "DOT", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "SLSH", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "RSFT", "matrix": [3, 13], "x": 12.25, "y": 3}, + {"label": "UP", "matrix": [3, 14], "x": 15, "y": 3}, + {"label": "MO(1)", "matrix": [3, 15], "x": 16, "y": 3}, + {"label": "LCTL", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "LGUI", "matrix": [4, 1], "x": 1.25, "y": 4}, + {"label": "LALT", "matrix": [4, 2], "x": 2.5, "y": 4}, + {"label": "SPC", "matrix": [4, 6], "x": 3.75, "y": 4}, + {"label": "RALT", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "RGUI", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "RCTL", "matrix": [4, 12], "x": 12, "y": 4}, + {"label": "LEFT", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "DOWN", "matrix": [4, 14], "x": 15, "y": 4}, + {"label": "RGHT", "matrix": [4, 15], "x": 16, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/alpaca/wfeclipse/keymaps/default/keymap.c b/keyboards/alpaca/wfeclipse/keymaps/default/keymap.c new file mode 100644 index 000000000000..3849b2889c13 --- /dev/null +++ b/keyboards/alpaca/wfeclipse/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 temp4gh + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 layer_names { + WIN_BASE, + WIN_FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [WIN_BASE] =LAYOUT( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [WIN_FN] =LAYOUT( + KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/alpaca/wfeclipse/keymaps/via/keymap.c b/keyboards/alpaca/wfeclipse/keymaps/via/keymap.c new file mode 100644 index 000000000000..ed0d448fb19b --- /dev/null +++ b/keyboards/alpaca/wfeclipse/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2023 temp4gh + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 layer_names { + WIN_BASE, + WIN_FN, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [WIN_BASE] =LAYOUT( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [WIN_FN] =LAYOUT( + KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk b/keyboards/alpaca/wfeclipse/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk rename to keyboards/alpaca/wfeclipse/keymaps/via/rules.mk diff --git a/keyboards/alpaca/wfeclipse/readme.md b/keyboards/alpaca/wfeclipse/readme.md new file mode 100644 index 000000000000..55570e1e7ad8 --- /dev/null +++ b/keyboards/alpaca/wfeclipse/readme.md @@ -0,0 +1,26 @@ +# Alpaca Keyboards whitefox-eclipse + +![Alpaca Keyboards whitefox-eclipse](https://i.imgur.com/VlyDBYGh.jpg) + +A customizable 68% keyboard. + +- Keyboard Maintainer: [temp4gh](https://github.com/temp4gh) +- Hardware Supported: whitefox-eclipse PCB +- Hardware Availability: https://kono.store/collections/all-products-list/products/whitefox-eclipse?variant=43224249991367 + +Make example for this keyboard (after setting up your build environment): + + make alpaca/wfeclipse:default + +Flashing example for this keyboard: + + make alpaca/wfeclipse:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/soda/mango/rules.mk b/keyboards/alpaca/wfeclipse/rules.mk similarity index 100% rename from keyboards/soda/mango/rules.mk rename to keyboards/alpaca/wfeclipse/rules.mk diff --git a/keyboards/alpha/keymaps/hvp/keymap.c b/keyboards/alpha/keymaps/hvp/keymap.c deleted file mode 100755 index 13071b08305e..000000000000 --- a/keyboards/alpha/keymaps/hvp/keymap.c +++ /dev/null @@ -1,51 +0,0 @@ -#include QMK_KEYBOARD_H - -enum layer_names { - HOME, - MODS, - MODS2, - OTHER, -}; - -enum custom_keycodes { - MACRO1 = SAFE_RANGE -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch (keycode) { - case MACRO1: - SEND_STRING("I'm so sorry... -PyroL"); - return false; - } - } - return true; -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [HOME] = LAYOUT( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, MT(MOD_LCTL,KC_P), - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MT(MOD_LSFT,KC_ENT), - KC_Z, KC_X, KC_C, LT(MODS2,KC_V), LT(MODS, KC_SPC), LT(OTHER,KC_B), KC_N, KC_M), - - [MODS] = LAYOUT( - KC_TAB, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_BSPC, - KC_LSFT, KC_ESC, _______, KC_SCLN, KC_QUOT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, - KC_LCTL, KC_LGUI, KC_LALT, _______, _______, KC_COMM, KC_DOT, KC_SLSH), - - [MODS2] = LAYOUT( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_ESC, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, _______, - RGB_VAI, RGB_VAD, RGB_HUI, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU), - - [OTHER] = LAYOUT( - KC_ESC, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, - 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_NO, KC_NO, KC_NO), -}; - -void matrix_init_user(void) { -} - -void matrix_scan_user(void) { -} \ No newline at end of file diff --git a/keyboards/alpine65/readme.md b/keyboards/alpine65/readme.md index 0be4396176f3..6ae9f03e6dcc 100644 --- a/keyboards/alpine65/readme.md +++ b/keyboards/alpine65/readme.md @@ -4,7 +4,7 @@ This is the QMK firmware repository for the Alpine65, a 65% hotswap keyboard designed by Bitmap Designs and Gondolindrim. -The Alpine65 has entered GB and sucessfully finalized in november 2020; there is no further way to buy an Alpine65 other than the secondhand market. The IC page for the keyboard can be found [here](https://https://geekhack.org/index.php?topic=106974). +The Alpine65 has entered GB and sucessfully finalized in november 2020; there is no further way to buy an Alpine65 other than the secondhand market. The IC page for the keyboard can be found [here](https://geekhack.org/index.php?topic=106974). ## How to compile diff --git a/keyboards/alps64/keymaps/mechmerlin/keymap.c b/keyboards/alps64/keymaps/mechmerlin/keymap.c deleted file mode 100644 index 9b6d1cd71711..000000000000 --- a/keyboards/alps64/keymaps/mechmerlin/keymap.c +++ /dev/null @@ -1,26 +0,0 @@ -#include QMK_KEYBOARD_H -#include "mechmerlin.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: qwerty */ - [_BL] = LAYOUT_infinity( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, - KC_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_CTCP, 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, TG(_AL), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FL), KC_RALT, KC_RGUI, KC_RCTL), - - [_FL] = LAYOUT_infinity( - 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_DEL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - [_AL] = LAYOUT_infinity( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RSFT_T(KC_UP), KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT), -}; diff --git a/keyboards/alps64/keymaps/mechmerlin/readme.md b/keyboards/alps64/keymaps/mechmerlin/readme.md deleted file mode 100644 index 896e7ec3cb6b..000000000000 --- a/keyboards/alps64/keymaps/mechmerlin/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# MechMerlin Alps64 Infinity Keymap - -This is the 60% infinity layout used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin) -YouTube channel. - -## Keymap Notes -- `Caps Lock` can be held to act as a `Left Control` - -### Build -To build the firmware file associated with this keymap, simply run `make alps64:mechmerlin`. diff --git a/keyboards/alps64/keymaps/zyber/keymap.c b/keyboards/alps64/keymaps/zyber/keymap.c deleted file mode 100644 index 5d7cf1a64de3..000000000000 --- a/keyboards/alps64/keymaps/zyber/keymap.c +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2022 ZyBeR (@ZyberSE) -// SPDX-License-Identifier: GPL-2.0 - -#include "zyber.h" - -enum keyboard_layers { - _BL = 0, - _FL -}; - -// Custom #defined keycodes (shorter macros for readability) -#define KC_CTES CTL_T(KC_ESC) -#define KC_RSUP RSFT_T(KC_UP) -#define KC_FNDN LT(_FL, KC_DOWN) -#define KC_RGLT RCMD_T(KC_LEFT) -#define KC_RCRT RCTL_T(KC_RIGHT) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BL] = LAYOUT_aek_103( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD(LBRC), KC_RBRC, KC_BSLS, - CTRL_C_UP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD(SCLN), TD(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_RSUP, - MO(_FL), KC_LALT, KC_LGUI, KC_SPC, KC_RGLT, KC_FNDN, KC_RCRT - ), - [_FL] = LAYOUT_aek_103( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, _______, - _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_SCRL, KC_VOLD, KC_VOLU, KC_PAUS, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, QK_BOOT, _______, _______, _______ - ) -}; diff --git a/keyboards/amjkeyboard/amj84/info.json b/keyboards/amjkeyboard/amj84/info.json index 18a7cdff4937..85832229a33a 100644 --- a/keyboards/amjkeyboard/amj84/info.json +++ b/keyboards/amjkeyboard/amj84/info.json @@ -23,6 +23,7 @@ "layout_aliases": { "LAYOUT": "LAYOUT_all" }, + "community_layouts": ["75_ansi", "75_iso"], "layouts": { "LAYOUT_all": { "layout": [ @@ -118,6 +119,99 @@ {"matrix": [5, 14], "x": 15, "y": 5} ] }, + "LAYOUT_75_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [5, 8], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [1, 12], "x": 12, "y": 1}, + {"matrix": [1, 13], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 14], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [2, 12], "x": 12.5, "y": 2}, + {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3}, + {"matrix": [3, 2], "x": 2.75, "y": 3}, + {"matrix": [3, 3], "x": 3.75, "y": 3}, + {"matrix": [3, 4], "x": 4.75, "y": 3}, + {"matrix": [3, 5], "x": 5.75, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 8.75, "y": 3}, + {"matrix": [3, 9], "x": 9.75, "y": 3}, + {"matrix": [3, 10], "x": 10.75, "y": 3}, + {"matrix": [3, 11], "x": 11.75, "y": 3}, + {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4}, + {"matrix": [4, 7], "x": 7.25, "y": 4}, + {"matrix": [4, 8], "x": 8.25, "y": 4}, + {"matrix": [4, 9], "x": 9.25, "y": 4}, + {"matrix": [4, 10], "x": 10.25, "y": 4}, + {"matrix": [4, 11], "x": 11.25, "y": 4}, + {"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4}, + + {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5}, + {"matrix": [5, 10], "x": 11, "y": 5}, + {"matrix": [5, 11], "x": 12, "y": 5}, + {"matrix": [5, 12], "x": 13, "y": 5}, + {"matrix": [5, 13], "x": 14, "y": 5}, + {"matrix": [5, 14], "x": 15, "y": 5} + ] + }, "LAYOUT_75_ansi_rwkl": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, @@ -210,6 +304,100 @@ {"matrix": [5, 14], "x": 15, "y": 5} ] }, + "LAYOUT_75_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [5, 8], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [1, 12], "x": 12, "y": 1}, + {"matrix": [1, 13], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 14], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [2, 12], "x": 12.5, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3}, + {"matrix": [3, 2], "x": 2.75, "y": 3}, + {"matrix": [3, 3], "x": 3.75, "y": 3}, + {"matrix": [3, 4], "x": 4.75, "y": 3}, + {"matrix": [3, 5], "x": 5.75, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 8.75, "y": 3}, + {"matrix": [3, 9], "x": 9.75, "y": 3}, + {"matrix": [3, 10], "x": 10.75, "y": 3}, + {"matrix": [3, 11], "x": 11.75, "y": 3}, + {"matrix": [3, 12], "x": 12.75, "y": 3}, + {"matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25, "h": 2}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4}, + {"matrix": [4, 7], "x": 7.25, "y": 4}, + {"matrix": [4, 8], "x": 8.25, "y": 4}, + {"matrix": [4, 9], "x": 9.25, "y": 4}, + {"matrix": [4, 10], "x": 10.25, "y": 4}, + {"matrix": [4, 11], "x": 11.25, "y": 4}, + {"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4}, + + {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [5, 5], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [5, 9], "x": 10, "y": 5}, + {"matrix": [5, 10], "x": 11, "y": 5}, + {"matrix": [5, 11], "x": 12, "y": 5}, + {"matrix": [5, 12], "x": 13, "y": 5}, + {"matrix": [5, 13], "x": 14, "y": 5}, + {"matrix": [5, 14], "x": 15, "y": 5} + ] + }, "LAYOUT_75_iso_rwkl": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, diff --git a/keyboards/anavi/arrows/arrows.c b/keyboards/anavi/arrows/arrows.c new file mode 100644 index 000000000000..6ecc8745f872 --- /dev/null +++ b/keyboards/anavi/arrows/arrows.c @@ -0,0 +1,38 @@ +// Copyright 2023 Leon Anavi +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef OLED_ENABLE + +bool oled_task_kb(void) { + + if (!oled_task_user()) { + return false; + } + + // Host Keyboard Layer Status + oled_write_ln_P(PSTR("ANAVI Arrows"), false); + oled_write_ln_P(PSTR("Keymap: Default"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("Num Lock: "), false); + oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Caps Lock: "), false); + oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Scroll Lock: "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false); +# ifdef RGBLIGHT_ENABLE + oled_write_P(PSTR("RGB Mode: "), false); + oled_write_ln(get_u8_str(rgblight_get_mode(), ' '), false); + oled_write_P(PSTR("h: "), false); + oled_write(get_u8_str(rgblight_get_hue(), ' '), false); + oled_write_P(PSTR("s: "), false); + oled_write(get_u8_str(rgblight_get_sat(), ' '), false); + oled_write_P(PSTR("v: "), false); + oled_write_ln(get_u8_str(rgblight_get_val(), ' '), false); +# endif + return false; +} +#endif diff --git a/keyboards/anavi/arrows/config.h b/keyboards/anavi/arrows/config.h new file mode 100644 index 000000000000..02e7781e5707 --- /dev/null +++ b/keyboards/anavi/arrows/config.h @@ -0,0 +1,25 @@ +// Copyright 2023 Leon Anavi +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD + +/* Double tap reset button to enter bootloader */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#ifdef BACKLIGHT_ENABLE +# define BACKLIGHT_PWM_DRIVER PWMD5 +# define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A +#endif + +#define I2C1_SDA_PIN GP6 +#define I2C1_SCL_PIN GP7 + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +# define OLED_TIMEOUT 60000 +# define OLED_BRIGHTNESS 128 +#endif diff --git a/keyboards/anavi/arrows/halconf.h b/keyboards/anavi/arrows/halconf.h new file mode 100644 index 000000000000..8a17a5c1676b --- /dev/null +++ b/keyboards/anavi/arrows/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Leon Anavi +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/anavi/arrows/info.json b/keyboards/anavi/arrows/info.json new file mode 100644 index 000000000000..bdda15695acf --- /dev/null +++ b/keyboards/anavi/arrows/info.json @@ -0,0 +1,68 @@ +{ + "keyboard_name": "arrows", + "manufacturer": "ANAVI", + "url": "https://github.com/AnaviTechnology/anavi-arrows", + "maintainer": "leon-anavi", + "processor": "RP2040", + "bootloader": "rp2040", + "matrix_pins": { + "direct": [ + ["GP4", "GP0", "GP27", "GP28", "GP29"] + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true, + "backlight": true, + "oled": true, + "encoder": true + }, + "rgblight": { + "led_count": 4, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "ws2812": { + "pin": "GP3", + "driver": "vendor" + }, + "backlight": { + "pin": "GP26" + }, + "encoder": { + "rotary": [ + {"pin_a": "GP1", "pin_b": "GP2", "resolution": 2} + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 1}, + {"matrix": [0, 2], "x": 0, "y": 2}, + {"matrix": [0, 3], "x": 1, "y": 2}, + {"matrix": [0, 4], "x": 2, "y": 2} + ] + } + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x9A25", + "vid": "0xFEED" + } +} diff --git a/keyboards/anavi/arrows/keymaps/default/keymap.c b/keyboards/anavi/arrows/keymaps/default/keymap.c new file mode 100644 index 000000000000..59ff1d5cf9c1 --- /dev/null +++ b/keyboards/anavi/arrows/keymaps/default/keymap.c @@ -0,0 +1,20 @@ +// Copyright 2023 Leon Anavi +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_MUTE, + KC_UP, + KC_RIGHT, KC_DOWN, KC_LEFT) +}; + +const uint16_t PROGMEM backlight_combo[] = {KC_UP, KC_DOWN, COMBO_END}; +combo_t key_combos[] = { + COMBO(backlight_combo, BL_STEP) +}; diff --git a/keyboards/anavi/arrows/keymaps/default/rules.mk b/keyboards/anavi/arrows/keymaps/default/rules.mk new file mode 100644 index 000000000000..2553d273cad6 --- /dev/null +++ b/keyboards/anavi/arrows/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes # Enables combo keys diff --git a/keyboards/anavi/arrows/mcuconf.h b/keyboards/anavi/arrows/mcuconf.h new file mode 100644 index 000000000000..23519c8977cb --- /dev/null +++ b/keyboards/anavi/arrows/mcuconf.h @@ -0,0 +1,15 @@ +// Copyright 2023 Leon Anavi (@leon-anavi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C0 +#define RP_I2C_USE_I2C0 FALSE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE + +#undef RP_PWM_USE_PWM5 +#define RP_PWM_USE_PWM5 TRUE diff --git a/keyboards/anavi/arrows/readme.md b/keyboards/anavi/arrows/readme.md new file mode 100644 index 000000000000..a4535627966c --- /dev/null +++ b/keyboards/anavi/arrows/readme.md @@ -0,0 +1,21 @@ +# ANAVI Arrows + +ANAVI Arrows is a compact inverted T mechanical keyboard with hot-swappable Cherry MX compatible mechanical switches, translucent keycaps, rotary encoder, USB-C, RP2040 microcontroller, backlighting and under lighting. + +* Keyboard Maintainer: [Leon Anavi](https://github.com/leon-anavi) +* Hardware Supported: ANAVI Arrows +* Hardware Availability: [Crowd Supply](https://www.crowdsupply.com/anavi-technology/anavi-macro-pad-12-and-arrows), [GitHub repository](https://github.com/AnaviTechnology/anavi-arrows) + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb anavi/arrows -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key on the left half, or top right key on the right half, and then plug in the USB cable on that keyboard half. +* **Physical reset button**: Double tap the reset button on the XIAO RP2040. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. diff --git a/keyboards/anavi/arrows/rules.mk b/keyboards/anavi/arrows/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/anavi/arrows/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/anavi/knob1/rules.mk b/keyboards/anavi/knob1/rules.mk index 0e5631b02b3f..dd68e9d3b090 100644 --- a/keyboards/anavi/knob1/rules.mk +++ b/keyboards/anavi/knob1/rules.mk @@ -1,3 +1 @@ OLED_ENABLE = yes - -OPT_DEFS += -DHAL_USE_I2C=TRUE diff --git a/keyboards/anavi/knobs3/rules.mk b/keyboards/anavi/knobs3/rules.mk index 0e5631b02b3f..dd68e9d3b090 100644 --- a/keyboards/anavi/knobs3/rules.mk +++ b/keyboards/anavi/knobs3/rules.mk @@ -1,3 +1 @@ OLED_ENABLE = yes - -OPT_DEFS += -DHAL_USE_I2C=TRUE diff --git a/keyboards/anavi/macropad8/keymaps/vlc/keymap.c b/keyboards/anavi/macropad8/keymaps/vlc/keymap.c index 3e15a81861de..3ea53c57cb00 100644 --- a/keyboards/anavi/macropad8/keymaps/vlc/keymap.c +++ b/keyboards/anavi/macropad8/keymaps/vlc/keymap.c @@ -56,7 +56,7 @@ const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {20, 10, 4}; * Alt + left arrow - Jump 10 seconds back * Control + left arrow - Jump 1 minute back * - * - Layer for VLC DVD hotkeys: + * - Layer for VLC DVD hotkeys: * Shift + M - Disc menu * Arrow up - Navigate menu (up) * Enter - Select menu entry @@ -93,7 +93,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); @@ -134,5 +134,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/annepro2/annepro2_ble.c b/keyboards/annepro2/annepro2_ble.c index 375f551cc23c..a382c61638f0 100644 --- a/keyboards/annepro2/annepro2_ble.c +++ b/keyboards/annepro2/annepro2_ble.c @@ -31,7 +31,7 @@ static void ap2_ble_swtich_ble_driver(void); /* -------------------- Static Local Variables ------------------------------ */ static host_driver_t ap2_ble_driver = { - ap2_ble_leds, ap2_ble_keyboard, ap2_ble_mouse, ap2_ble_extra + ap2_ble_leds, ap2_ble_keyboard, NULL, ap2_ble_mouse, ap2_ble_extra }; static uint8_t ble_mcu_wakeup[11] = {0x7b, 0x12, 0x53, 0x00, 0x03, 0x00, 0x01, 0x7d, 0x02, 0x01, 0x02}; @@ -167,5 +167,5 @@ static void ap2_ble_extra(report_extra_t *report) { static void ap2_ble_keyboard(report_keyboard_t *report) { sdPut(&SD1, 0x0); sdWrite(&SD1, ble_mcu_send_report, sizeof(ble_mcu_send_report)); - sdWrite(&SD1, &report->raw[0], KEYBOARD_REPORT_SIZE); + sdWrite(&SD1, (uint8_t *)report, KEYBOARD_REPORT_SIZE); } diff --git a/keyboards/annepro2/c15/config.h b/keyboards/annepro2/c15/config.h index ea38f4dce3e1..f488b9d8f388 100644 --- a/keyboards/annepro2/c15/config.h +++ b/keyboards/annepro2/c15/config.h @@ -57,7 +57,3 @@ #define EXTERNAL_FLASH_SECTOR_SIZE 4096 #define EXTERNAL_FLASH_BLOCK_SIZE 4096 #define EXTERNAL_FLASH_SIZE (256 * 1024) // 2M-bit flash size - -// Wear-leveling driver configuration -#define WEAR_LEVELING_LOGICAL_SIZE 1024 -#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) diff --git a/keyboards/annepro2/c15/info.json b/keyboards/annepro2/c15/info.json index 15c3ca8ba1d3..b7624dd6c50f 100644 --- a/keyboards/annepro2/c15/info.json +++ b/keyboards/annepro2/c15/info.json @@ -3,6 +3,13 @@ "usb": { "pid": "0xAC15" }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "rgb_matrix": { "driver": "custom" }, diff --git a/keyboards/annepro2/c15/rules.mk b/keyboards/annepro2/c15/rules.mk index 05b715e034f0..8694893ac2e9 100644 --- a/keyboards/annepro2/c15/rules.mk +++ b/keyboards/annepro2/c15/rules.mk @@ -26,10 +26,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output -# Wear-levelling driver -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash - # Custom RGB matrix handling RGB_MATRIX_ENABLE = yes diff --git a/keyboards/annepro2/c18/config.h b/keyboards/annepro2/c18/config.h index 6b6307c3d0fc..36f4a25c8d46 100644 --- a/keyboards/annepro2/c18/config.h +++ b/keyboards/annepro2/c18/config.h @@ -55,7 +55,3 @@ #define EXTERNAL_FLASH_SECTOR_SIZE 4096 #define EXTERNAL_FLASH_BLOCK_SIZE 4096 #define EXTERNAL_FLASH_SIZE (256 * 1024) // 2M-bit flash size - -// Wear-leveling driver configuration -#define WEAR_LEVELING_LOGICAL_SIZE 1024 -#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) diff --git a/keyboards/annepro2/c18/info.json b/keyboards/annepro2/c18/info.json index f7acff808cea..c8f524e3cfdb 100644 --- a/keyboards/annepro2/c18/info.json +++ b/keyboards/annepro2/c18/info.json @@ -3,6 +3,13 @@ "usb": { "pid": "0xAC18" }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "rgb_matrix": { "driver": "custom" }, diff --git a/keyboards/annepro2/c18/rules.mk b/keyboards/annepro2/c18/rules.mk index 1d53851df604..dab7269570fe 100644 --- a/keyboards/annepro2/c18/rules.mk +++ b/keyboards/annepro2/c18/rules.mk @@ -26,10 +26,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output -# Wear-levelling driver -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash - # Custom RGB matrix handling RGB_MATRIX_ENABLE = yes diff --git a/keyboards/aozora/config.h b/keyboards/aozora/config.h deleted file mode 100644 index 5171d0c312de..000000000000 --- a/keyboards/aozora/config.h +++ /dev/null @@ -1,20 +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 - -/* EEPROM for via */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 2 diff --git a/keyboards/argyle/info.json b/keyboards/argyle/info.json new file mode 100755 index 000000000000..82dbe1562af4 --- /dev/null +++ b/keyboards/argyle/info.json @@ -0,0 +1,975 @@ +{ + "manufacturer": "Yiancar-Designs", + "keyboard_name": "Argyle", + "maintainer": "Yiancar-Designs", + "bootloader": "usbasploader", + "diode_direction": "COL2ROW", + "features": { + "extrakey": true, + "mousekey": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["D1", "D4", "D5", "D6", "D7", "B0", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN"], + "custom": true, + "custom_lite": true, + "rows": ["D0", "C3", "B1", "B2", "B3"] + }, + "processor": "atmega328p", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 10, + "sleep": true + }, + "url": "https://prototypist.net/", + "usb": { + "device_version": "0.0.1", + "pid": "0x4152", + "vid": "0x8968" + }, + "ws2812": { + "pin": "C2" + }, + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_tsangan_hhkb", + "60_ansi_wkl", + "60_ansi_wkl_split_bs_rshift", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan", + "60_iso_tsangan_split_bs_rshift", + "60_iso_wkl", + "60_iso_wkl_split_bs_rshift" + ], + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_ansi_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 13], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/argyle/keymaps/default/keymap.c b/keyboards/argyle/keymaps/default/keymap.c new file mode 100644 index 000000000000..e4cdf5625df9 --- /dev/null +++ b/keyboards/argyle/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +//This is the ANSI version of the PCB + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_60_ansi_split_bs_rshift( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL), + +[1] = LAYOUT_60_ansi_split_bs_rshift( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/argyle/keymaps/iso/keymap.c b/keyboards/argyle/keymaps/iso/keymap.c new file mode 100644 index 000000000000..fe2de3a3e58b --- /dev/null +++ b/keyboards/argyle/keymaps/iso/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +//This is the ISO version of the PCB + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_60_iso_split_bs_rshift( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_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_RALT, MO(1) , KC_APP, KC_RCTL), + +[1] = LAYOUT_60_iso_split_bs_rshift( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/argyle/keymaps/via/keymap.c b/keyboards/argyle/keymaps/via/keymap.c new file mode 100644 index 000000000000..4efbdb2f3061 --- /dev/null +++ b/keyboards/argyle/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2020 Yiancar + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +// This keymaps is used for VIA, it reflects the default keymap. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/keychron/q1/ansi/keymaps/via/rules.mk b/keyboards/argyle/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q1/ansi/keymaps/via/rules.mk rename to keyboards/argyle/keymaps/via/rules.mk diff --git a/keyboards/argyle/matrix.c b/keyboards/argyle/matrix.c new file mode 100644 index 000000000000..7430c6d9d80a --- /dev/null +++ b/keyboards/argyle/matrix.c @@ -0,0 +1,169 @@ +/* +Copyright 2012-2020 Jun Wako, Jack Humbert, Yiancar + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 "atomic_util.h" +#include "wait.h" +#include "matrix.h" +#include "i2c_master.h" + +#define PORT_EXPANDER_ADDRESS 0x20 + +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +static inline void setPinOutput_writeLow(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinLow(pin); + } +} + +static inline void setPinOutput_writeHigh(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinOutput(pin); + writePinHigh(pin); + } +} + +static inline void setPinInputHigh_atomic(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + setPinInputHigh(pin); + } +} + +static inline uint8_t readMatrixPin(pin_t pin) { + if (pin != NO_PIN) { + return (readPin(pin) == 0) ? 0 : 1; + } else { + return 1; + } +} + +static bool select_row(uint8_t row) { + pin_t pin = row_pins[row]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; + } + return false; +} + +static void unselect_row(uint8_t row) { + pin_t pin = row_pins[row]; + if (pin != NO_PIN) { + setPinInputHigh_atomic(pin); + } +} + +static void unselect_rows(void) { + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + unselect_row(x); + } +} + +static void init_pins(void) { + unselect_rows(); + // Set I/O + uint8_t send_data = 0xFF; + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x00, &send_data, 1, 20); + // Set Pull-up + i2c_writeReg((PORT_EXPANDER_ADDRESS << 1), 0x06, &send_data, 1, 20); + + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + if (col_pins[x] != NO_PIN) { + setPinInputHigh_atomic(col_pins[x]); + } + } +} + +void matrix_init_custom(void) { + // TODO: initialize hardware here + // Initialize I2C + i2c_init(); + + // initialize key pins + init_pins(); + wait_ms(50); +} + +static bool matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + + // Clear data in matrix row + current_matrix[current_row] = 0; + + // Select row and wait for row selecton to stabilize + select_row(current_row); + matrix_output_select_delay(); + + uint8_t port_expander_buffer; + i2c_readReg((PORT_EXPANDER_ADDRESS << 1), 0x09, &port_expander_buffer, 1, 20); + + // For each col... + // matrix_row_t row_shifter = MATRIX_ROW_SHIFTER; + for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + uint8_t pin_state; + // Select the col pin to read (active low) + switch (col_index) { + case 6 : + pin_state = port_expander_buffer & (1 << 0); + break; + case 7 : + pin_state = port_expander_buffer & (1 << 1); + break; + case 8 : + pin_state = port_expander_buffer & (1 << 2); + break; + case 9 : + pin_state = port_expander_buffer & (1 << 3); + break; + case 10 : + pin_state = port_expander_buffer & (1 << 4); + break; + case 11 : + pin_state = port_expander_buffer & (1 << 5); + break; + case 12 : + pin_state = port_expander_buffer & (1 << 6); + break; + case 13 : + pin_state = port_expander_buffer & (1 << 7); + break; + default : + pin_state = readMatrixPin(col_pins[col_index]); + } + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index); + } + + // Unselect row + unselect_row(current_row); + + return (last_row_value != current_matrix[current_row]); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool matrix_has_changed = false; + + // Set row, read cols + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + matrix_has_changed |= matrix_read_cols_on_row(current_matrix, current_row); + } + + return matrix_has_changed; +} diff --git a/keyboards/argyle/readme.md b/keyboards/argyle/readme.md new file mode 100644 index 000000000000..4a473a33ac77 --- /dev/null +++ b/keyboards/argyle/readme.md @@ -0,0 +1,23 @@ +# Argyle + +![argyle](https://i.imgur.com/6x7ZYhxh.png) + +A 60 percent through hole keyboard with RGB and windows + +Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +Hardware Supported: ATMEGA328p with vusb +Hardware Availability: https://prototypist.net/ + +Make example for this keyboard (after setting up your build environment): + + make argyle:default + +Flashing example for this keyboard: + + make argyle:default:flash + +Bootloader: +use usbasploader HSGW's my repository. +https://github.com/hsgw/USBaspLoader/tree/plaid +To put the board in bootloader, either press and hold escape as you plug in, or press the button under the spacebar as you plug in. +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/argyle/rules.mk b/keyboards/argyle/rules.mk new file mode 100644 index 000000000000..ae480278de22 --- /dev/null +++ b/keyboards/argyle/rules.mk @@ -0,0 +1,2 @@ +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/arisu/keymaps/stanrc85/keymap.c b/keyboards/arisu/keymaps/stanrc85/keymap.c deleted file mode 100644 index 417b1663b5df..000000000000 --- a/keyboards/arisu/keymaps/stanrc85/keymap.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2021 Stanrc85 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "stanrc85.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( - 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_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_PGDN, - KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN2_60), - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, LT_BPCF, KC_LGUI, LT_SPCF, TD_TWIN, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_DEFAULT] = LAYOUT( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, 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_BSPC, 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, MO(_FN2_60), - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_SPC, MO(_FN1_60), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_FN1_60] = LAYOUT( - KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, _______, - _______, _______, CA_QUOT, _______, CA_SCLN, KC_VOLU, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, _______, _______, KC_INS, _______, - KC_CAPS, _______, _______, KC_LCTL, KC_LSFT, KC_VOLD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, - _______, KC_RDP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_FN2_60] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT) - ) -}; diff --git a/keyboards/arisu/keymaps/stanrc85/rules.mk b/keyboards/arisu/keymaps/stanrc85/rules.mk deleted file mode 100644 index 9db643c8e64d..000000000000 --- a/keyboards/arisu/keymaps/stanrc85/rules.mk +++ /dev/null @@ -1 +0,0 @@ -USER_NAME := stanrc85 \ No newline at end of file diff --git a/keyboards/artemis/paragon/hotswap/info.json b/keyboards/artemis/paragon/hotswap/info.json index d70625c1d6c7..0882579dec13 100644 --- a/keyboards/artemis/paragon/hotswap/info.json +++ b/keyboards/artemis/paragon/hotswap/info.json @@ -3,6 +3,11 @@ "cols": ["F7", "F6", "F5", "F4", "F1", "F0", "C7", "E6", "B0", "B3", "B6", "B5", "B4", "D7", "D4", "D6"], "rows": ["D2", "D1", "D0", "B2", "B1", "C6"] }, + "encoder": { + "rotary": [ + { "pin_a": "D3", "pin_b": "D5", "resolution": 2 } + ] + }, "layouts": { "LAYOUT_ansi_rwkl": { "layout": [ diff --git a/keyboards/artemis/paragon/info.json b/keyboards/artemis/paragon/info.json index b18b3b28db2c..63fefe8c55cf 100644 --- a/keyboards/artemis/paragon/info.json +++ b/keyboards/artemis/paragon/info.json @@ -18,11 +18,6 @@ }, "processor": "atmega32u4", "url": "", - "encoder": { - "rotary": [ - { "pin_a": "D3", "pin_b": "D5", "resolution": 2 } - ] - }, "usb": { "device_version": "1.0.0", "pid": "0x3449", diff --git a/keyboards/artemis/paragon/soldered/info.json b/keyboards/artemis/paragon/soldered/info.json index b531b22f807b..169acb4fb4da 100644 --- a/keyboards/artemis/paragon/soldered/info.json +++ b/keyboards/artemis/paragon/soldered/info.json @@ -3,6 +3,11 @@ "cols": ["E6", "F0", "F1", "F4", "F5", "F6", "F7", "B0", "B1", "B3", "D0", "D1", "D2", "D3", "D7", "D5"], "rows": ["B2", "C7", "C6", "B6", "B5", "B4"] }, + "encoder": { + "rotary": [ + { "pin_a": "D4", "pin_b": "D6", "resolution": 2 } + ] + }, "layouts": { "LAYOUT_ansi_rwkl": { "layout": [ diff --git a/keyboards/atlantis/ak81_ve/config.h b/keyboards/atlantis/ak81_ve/config.h index 28a4e88893b9..c6e12504a3cb 100644 --- a/keyboards/atlantis/ak81_ve/config.h +++ b/keyboards/atlantis/ak81_ve/config.h @@ -27,9 +27,7 @@ #define RGB_DISABLE_WHEN_USB_SUSPENDED true #define RGB_MATRIX_LED_COUNT 96 #define RGB_MATRIX_DEFAULT_HUE 170 -#define RGB_MATRIX_DEFAULT_SAT 255 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 130 -#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes diff --git a/keyboards/atreus/keymaps/dvorak_42_key/README.md b/keyboards/atreus/keymaps/dvorak_42_key/README.md deleted file mode 100644 index 86ce7380238c..000000000000 --- a/keyboards/atreus/keymaps/dvorak_42_key/README.md +++ /dev/null @@ -1,21 +0,0 @@ -Overview -======== - -This is a dvorak based layout for the Atreus. Its basic key layout is similar to the ergodox_ez "dvorak_42_key" layout. In fact this layout was created for seamless switching between the Ergodox EZ and Atreus. - -How to build and flash ----------------------- - -to build; -make atreus:dvorak_42_key - -to flash: -avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7 - -Layers ------- -* BASE: basic dvorak layout -* KEYNAV: arrow-key navigation. Momentary toggle held by thumb allows the right hand to navigate through text as well as copy/paste/cut, page up/page down -* KEYSEL: similar to KEYNAV, except for shift-selection -* COMBINED: this is a layer that combines numbers, brackets and special characters. !@#$%^&*( can be type by shift+COMBINED+1/2/3/etc.. -* MOUSE: mouse navigation, as well as browser tab-left/tab-right shortcuts \ No newline at end of file diff --git a/keyboards/atreus/keymaps/dvorak_42_key/config.h b/keyboards/atreus/keymaps/dvorak_42_key/config.h deleted file mode 100644 index ac5db196d96c..000000000000 --- a/keyboards/atreus/keymaps/dvorak_42_key/config.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once - -// place overrides here - -// mouse speed - -#define MOUSEKEY_INTERVAL 15 -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_TIME_TO_MAX 100 -#define MOUSEKEY_MAX_SPEED 3 - -#define MOUSEKEY_WHEEL_DELAY 500 -#define MOUSEKEY_WHEEL_DELTA 1 -#define MOUSEKEY_WHEEL_MAX_SPEED 1 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 diff --git a/keyboards/atreus/keymaps/dvorak_42_key/keymap.c b/keyboards/atreus/keymaps/dvorak_42_key/keymap.c deleted file mode 100644 index c6a628e21768..000000000000 --- a/keyboards/atreus/keymaps/dvorak_42_key/keymap.c +++ /dev/null @@ -1,167 +0,0 @@ - -#include QMK_KEYBOARD_H - -// layers -#define BASE 0 -#define KEYNAV 1 -#define KEYSEL 2 -#define COMBINED 3 -#define BROWSER_CONTROL 4 - -// aliases -// shell -#define SHELL_DEL_WORD RCTL(KC_W) - -// comment out to use android studio macros instead -#define USE_VSCODE_MACROS - -// android studio shortcuts -#define AS_TABLEFT LALT(KC_LEFT) -#define AS_TABRIGHT LALT(KC_RIGHT) -#define AS_SYMBOL LCTL(LALT(KC_N)) -#define AS_CLASS LCTL(KC_N) -#define AS_FINDUSAGE LALT(KC_F7) -#define AS_BACK LCTL(LALT(KC_LEFT)) -#define AS_GO_DECLARATION LCTL(KC_B) -#define AS_GO_IMPLEMENTATION LCTL(LALT(KC_B)) -#define AS_CLOSETAB LCTL(KC_F4) -#define AS_CLOSETOOLWINDOW LCTL(LSFT(KC_F4)) -#define AS_ALTENTER LALT(KC_ENTER) - -// visual studio code shortcuts -#define VS_FILE LCTL(KC_P) -#define VS_OPEN_FILE LCTL(KC_O) -#define VS_LINE LCTL(KC_G) -#define VS_SYMBOLEDITOR LCTL(LSFT(KC_O)) -#define VS_DEFINITION MEH(KC_F5) -#define VS_IMPLEMENTATION MEH(KC_F6) -#define VS_REFERENCES MEH(KC_F7) -#define VS_BACK LALT(KC_LEFT) -#define VS_BRACKET LCTL(LSFT(KC_BSLS)) -#define VS_TABLEFT MEH(KC_F1) -#define VS_TABRIGHT MEH(KC_F2) -#define VS_CLOSETAB MEH(KC_F3) -#define VS_CLOSEPANEL LCTL(LSFT(KC_W)) -#define VS_GROUP_1 LCTL(KC_1) -#define VS_GROUP_2 LCTL(KC_2) -#define VS_TERMINAL LCTL(KC_GRAVE) -#define VS_BUILD LCTL(LSFT(KC_B)) -#define VS_COMMANDS MEH(KC_F4) -#define VS_CMT_BLOCK LSFT(LALT(KC_A)) -#define VS_CMT_LINE LCTL(KC_SLSH) -#define VS_DEL_LINE LCTL(LSFT(KC_K)) -#define VS_COPYLINEDOWN LSFT(LALT(KC_DOWN)) -// visual studio bookmark commands -#define VS_BM_LIST LCTL(LALT(KC_L)) -#define VS_BM_LISTALL LCTL(LALT(KC_A)) -#define VS_BM_PREV LCTL(LALT(KC_P)) -#define VS_BM_NEXT LCTL(LALT(KC_N)) -#define VS_BM_TOGGLE LCTL(LALT(KC_K)) -#define VS_BM_CLEARALL LCTL(LALT(KC_C)) -// visual studio code navigation shortcuts -#define VS_FOCUS_EDITOR MEH(KC_F8) -#define VS_FOCUS_TERMINAL MEH(KC_F9) -#define VS_TOGGLE_TERMINAL MEH(KC_F10) -#define VS_CLEAR_TERMINAL MEH(KC_F11) -#define VS_TERMINAL_PREV MEH(KC_F12) -#define VS_TERMINAL_NEXT MEH(KC_F13) -#define VS_TERMINAL_NEW MEH(KC_F14) -#define VS_TERMINAL_DETACH MEH(KC_F15) -#define VS_TERMINAL_RENAME MEH(KC_F16) -#define VS_JUMPY MEH(KC_F17) - -/* -// VS code bookmark prev/next requires the following in vscode shortcuts config - { - "key": "ctrl+alt+p", - "command": "bookmarks.jumpToPrevious" - }, - { - "key": "ctrl+alt+n", - "command": "bookmarks.jumpToNext" - }, -*/ - -enum custom_keycodes { - PLACEHOLDER = SAFE_RANGE, // can always be here - - // Windows 10 macros - W10_TASKVIEW, - W10_WORKSPACE_LEFT, - W10_WORKSPACE_RIGHT, - -}; - -// building/flashing instructions: -// make atreus/astar:dvorak_42_key:flash -// or -// qmk compile -kb atreus -km dvorak_42_key - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [BASE] = LAYOUT( - KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, - KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, - KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, - OSM(MOD_LSFT), OSM(MOD_LCTL), MO(KEYSEL), MO(BROWSER_CONTROL), MO(COMBINED), MO(KEYNAV), KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_CAPS, OSM(MOD_LSFT) - ), - -#ifdef USE_VSCODE_MACROS -// use visual studio code macros on the KEYNAV layer - [KEYNAV] = LAYOUT( - KC_ESC, VS_DEFINITION, RCTL(KC_Z), RCTL(KC_S), MEH(KC_A), MEH(KC_B), KC_HOME, KC_UP, KC_END, KC_PGUP, - VS_BACK, VS_SYMBOLEDITOR, RSFT(KC_TAB), KC_TAB, SHELL_DEL_WORD, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), - VS_LINE, VS_FILE, VS_TABLEFT, VS_TABRIGHT, VS_CLOSETAB, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDN, - VS_COMMANDS, VS_CMT_LINE, VS_BM_PREV, VS_BM_NEXT, VS_BM_TOGGLE, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE) - ), -#else -// use android studio macros on the KEYNAV layer - [KEYNAV] = LAYOUT( - KC_ESC, AS_GO_IMPLEMENTATION, RCTL(KC_Z), RCTL(KC_S), MEH(KC_A), MEH(KC_B), KC_HOME, KC_UP, KC_END, KC_PGUP, - AS_BACK, AS_SYMBOL, RSFT(KC_TAB), KC_TAB, SHELL_DEL_WORD, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), - AS_FINDUSAGE, AS_CLASS, AS_TABLEFT, AS_TABRIGHT, AS_CLOSETAB, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDN, - AS_CLOSETOOLWINDOW, AS_GO_DECLARATION, KC_TRNS, KC_TRNS, AS_ALTENTER, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE) - ), -#endif - - [KEYSEL] = LAYOUT( - MEH(KC_G), MEH(KC_H),MEH(KC_I), MEH(KC_J), MEH(KC_K), KC_TRNS, RSFT(KC_HOME), RSFT(KC_UP), RSFT(KC_END), RSFT(KC_PGUP), - MEH(KC_L), MEH(KC_M),MEH(KC_N), MEH(KC_O), MEH(KC_P), RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), - MEH(KC_Q), MEH(KC_R),MEH(KC_S), MEH(KC_T), MEH(KC_U), KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), RSFT(KC_PGDN), - QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE) - ), - - [COMBINED] = LAYOUT( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PLUS, KC_7, KC_8, KC_9, KC_ASTR, - KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_UNDS, KC_MINS, KC_4, KC_5, KC_6, KC_SLSH, - KC_COLN, KC_DQUO, KC_LCBR, KC_RCBR, KC_AMPR, KC_EQUAL, KC_1, KC_2, KC_3, KC_QUES, - KC_TRNS, KC_TILD, KC_GRAVE, KC_CIRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_DOT, KC_PIPE, KC_BSLS - ), - - [BROWSER_CONTROL] = LAYOUT( - MEH(KC_C), KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, MEH(KC_9), - MEH(KC_D), KC_MS_L, KC_MS_D, KC_MS_R, MEH(KC_6), KC_DOWN, RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), KC_MS_WH_DOWN, LALT(KC_LEFT), - MEH(KC_E), W10_TASKVIEW, W10_WORKSPACE_LEFT, W10_WORKSPACE_RIGHT, MEH(KC_7), MEH(KC_8), RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_W), RCTL(KC_T), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if(record->event.pressed) { - switch (keycode) { - // windows 10 workspace shortcuts - case W10_TASKVIEW: - tap_code16(G(KC_TAB)); - return true; - break; - case W10_WORKSPACE_LEFT: - tap_code16(G(C(KC_LEFT))); - return true; - break; - case W10_WORKSPACE_RIGHT: - tap_code16(G(C(KC_RIGHT))); - break; - } - } - - return true; -} diff --git a/keyboards/atreus/keymaps/ibnuda/keymap.c b/keyboards/atreus/keymaps/ibnuda/keymap.c deleted file mode 100644 index 3bdfccad980b..000000000000 --- a/keyboards/atreus/keymaps/ibnuda/keymap.c +++ /dev/null @@ -1,47 +0,0 @@ -#include QMK_KEYBOARD_H - -#include "ibnuda.h" - -// clang-format off -#define LAYOUT_atreus_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ - KTA, KTB, KTC, KTD \ - ) \ - LAYOUT_wrapper( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ - ___, ___, ___, ___, KTA, KTB, KTC, KTD, ___, ___, ___, ___ \ - ) -#define LAYOUT_atreus_base_wrapper(...) LAYOUT_atreus_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_BASE] = LAYOUT_atreus_base_wrapper( - ________________DVORAK_L1_______________, ________________DVORAK_R1_______________, - ________________DVORAK_L2_______________, ________________DVORAK_R2_______________, - ________________DVORAK_L3_______________, ________________DVORAK_R3_______________, - LW_BSPC,SFT_ESC, ALT_ENT,RS_SPC -), - -[_RAISE] = LAYOUT_atreus_base_wrapper( - ________________RAISE_L1________________, ________________RAISE_R1________________, - ________________RAISE_L2________________, ________________RAISE_R2________________, - ________________RAISE_L3________________, ________________RAISE_R3________________, - ADDDD, _______, _______,_______ -), -[_LOWER] = LAYOUT_atreus_base_wrapper( - ________________LOWER_L1________________, ________________LOWER_R1________________, - ________________LOWER_L2________________, ________________LOWER_R2________________, - ________________LOWER_L3________________, ________________LOWER_R3________________, - _______,_______, _______,ADDDD -), -[_ADJUST] = LAYOUT_atreus_base_wrapper( - ________________ADJUST_L1_______________, ________________ADJUST_R1_______________, - ________________ADJUST_L2_______________, ________________ADJUST_R2_______________, - ________________ADJUST_L3_______________, ________________ADJUST_R3_______________, - _______,_______, _______,_______ -), -}; -// clang-format on diff --git a/keyboards/atreus/keymaps/ibnuda/rules.mk b/keyboards/atreus/keymaps/ibnuda/rules.mk deleted file mode 100644 index 14227c90d793..000000000000 --- a/keyboards/atreus/keymaps/ibnuda/rules.mk +++ /dev/null @@ -1 +0,0 @@ -LTO_ENABLE=yes diff --git a/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h b/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 30a066fa5be0..000000000000 --- a/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT(\ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ -XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX\ -) diff --git a/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/atreus/keymaps/ridingqwerty/config.h b/keyboards/atreus/keymaps/ridingqwerty/config.h deleted file mode 100644 index 349d7b1c493d..000000000000 --- a/keyboards/atreus/keymaps/ridingqwerty/config.h +++ /dev/null @@ -1,13 +0,0 @@ -#pragma once - -#undef MATRIX_ROWS -#define MATRIX_ROWS 8 - -#undef MATRIX_COLS -#define MATRIX_COLS 6 - -#undef MATRIX_ROW_PINS -#define MATRIX_ROW_PINS { A6, A7, A8, A15, B11, B12, A14, A13 } - -#undef MATRIX_COL_PINS -#define MATRIX_COL_PINS { B5, B4, B3, B2, B1, B0 } diff --git a/keyboards/atreus/keymaps/ridingqwerty/keymap.c b/keyboards/atreus/keymaps/ridingqwerty/keymap.c deleted file mode 100644 index 9b0826402ec8..000000000000 --- a/keyboards/atreus/keymaps/ridingqwerty/keymap.c +++ /dev/null @@ -1,153 +0,0 @@ -/* Copyright 2019 George Koenig - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "ridingqwerty.h" - -/* Atreus - ┏━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┓ ┏━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┓ - ┃ Q │ W │ E │ R │ T ┃ ┃ Y │ U │ I │ O │ P ┃ - ┠────────┼────────┼────────┼────────┼────────┨ ┠────────┼────────┼────────┼────────┼────────┨ - /┃ ¶ A │ S │ D │ F │ G ┃ ┃ H │ J │ K │ L │ 🔢 ; ┃ - ┠────────┼────────┼────────┼────────┼────────┞━━━━━━━━┳━━━━━━━━┞────────┼────────┼────────┼────────┼────────┨ - /┃ ⇧ Z │ X │ C │ V │ B │ ┃ │ N │ M │ , │ 𝔽 . │ ⇧ / ┃ - ┠────────┼────────┼────────┼────────┼────────┤ ¶ ⎋ ┃ ❦ ⇥ ├────────┼────────┼────────┼────────┼────────┨ - ┃ ⎈ ⎋ │ ⌘ ⇥ │ ⎇ [ │ ⇧ ] │ 🔢 ⌫ │ ┃ │ ★ ␣ │ ⇧ - │ ⎇ = │ ⌘ ' │ ⎈ ↵ ┃ - ┗━━━━━━━━┷━━━━━━━━┷━━━━━━━━┷━━━━━━━━┷━━━━━━━━┷━━━━━━━━┻━━━━━━━━┷━━━━━━━━┷━━━━━━━━┷━━━━━━━━┷━━━━━━━━┷━━━━━━━━┛ - MODS // LAYERS // MODS // -*/ - -#define LAYOUT_atreus( \ - K00, K01, K02, K03, K04, K40, K41, K42, K43, K44, \ - K10, K11, K12, K13, K14, K50, K51, K52, K53, K54, \ - K20, K21, K22, K23, K24, K60, K61, K62, K63, K64, \ - K30, K31, K32, K33, K34, K35, K70, K71, K72, K73, K74, K75 \ -) { \ - { K00, K01, K02, K03, K04, KC_NO }, \ - { K10, K11, K12, K13, K14, KC_NO }, \ - { K20, K21, K22, K23, K24, KC_NO }, \ - { K30, K31, K32, K33, K34, K35 }, \ - { K44, K43, K42, K41, K40, KC_NO }, \ - { K54, K53, K52, K51, K50, KC_NO }, \ - { K64, K63, K62, K61, K60, KC_NO }, \ - { K75, K74, K73, K72, K71, K70 } \ -} - -//#define ALPHA UP(UCM_LDEL, UCM_UDEL) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_atreus_wrapper( /* Qwerty */ - ________________ATREUS_L1__________________, ________________ATREUS_R1__________________, - ________________ATREUS_L2__________________, ________________ATREUS_R2__________________, - ________________ATREUS_L3__________________, ________________ATREUS_R3__________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________ - ), - [_DVORAK] = LAYOUT_atreus_wrapper( /* Qwerty */ - ________________DVORAK_L1__________________, ________________DVORAK_R1__________________, - ________________DVORAK_L2__________________, ________________DVORAK_R2__________________, - ________________DVORAK_L3__________________, ________________DVORAK_R3__________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________ - ), - [_COLEMAK] = LAYOUT_atreus_wrapper( /* Qwerty */ - ________________COLEMAK_L1_________________, ________________COLEMAK_R1_________________, - ________________COLEMAK_L2_________________, ________________COLEMAK_R2_________________, - ________________COLEMAK_L3_________________, ________________COLEMAK_R3_________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________ - ), -//#if defined(UNICODEMAP_ENABLE) -//#ifdef UNICODE_H -#ifdef UNICODEMAP_ENABLE - [_GREEK] = LAYOUT_atreus_wrapper( - ________________GREEK_L1___________________, ________________GREEK_R1___________________, - ________________GREEK_L2___________________, ________________GREEK_R2___________________, - ________________GREEK_L3___________________, ________________GREEK_R3___________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________ - ), - [_RUSSIAN] = LAYOUT_atreus_wrapper( - ________________CYRLC_L1___________________, ________________CYRLC_R1___________________, - ________________CYRLC_L2___________________, ________________CYRLC_R2___________________, - ________________CYRLC_L3___________________, ________________CYRLC_R3___________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________CYRLC_R4___________________ - ), - [_RUNES] = LAYOUT_atreus_wrapper( - ________________FTHRK_L1___________________, ________________FTHRK_R1___________________, - ________________FTHRK_L2___________________, ________________FTHRK_R2___________________, - ________________FTHRK_L3___________________, ________________FTHRK_R3___________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________ - ), - [_HIRA1] = LAYOUT_atreus_wrapper( - ________________JIS1_L1____________________, ________________JIS1_R1____________________, - ________________JIS1_L2____________________, ________________JIS1_R2____________________, - ________________JIS1_L3____________________, ________________JIS1_R3____________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________ - ), - [_HIRA2] = LAYOUT_atreus_wrapper( - ________________JIS2_L1____________________, ________________JIS2_R1____________________, - ________________JIS2_L2____________________, ________________JIS2_R2____________________, - ________________JIS2_L3____________________, ________________JIS2_R3____________________, - ________________BOTTOM_L4__________________, ____THUMBS_R4___, ________________BOTTOM_R4__________________ - ), -#endif - [_EDITOR] = LAYOUT_atreus_wrapper( /* ED_A, ED_ESC */ - ________________EDITOR_L1__________________, ________________EDITOR_R1__________________, - ________________EDITOR_L2__________________, ________________EDITOR_R2__________________, - ________________EDITOR_L3__________________, ________________EDITOR_R3__________________, - _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______ - ), - [_NUMBER] = LAYOUT_atreus_wrapper( /* NM_SCLN, NM_BSPC */ - ________________NUMROW_L1__________________, ________________NUMROW_R1__________________, - ________________NUMROW_R1__________________, ________________NUMPAD_R2__________________, - ___________________________________________, ________________NUMPAD_R3__________________, - ___________________________________________, ________________, ________________NUMPAD_R4__________________ - ), - [_SYMBOL] = LAYOUT_atreus_wrapper( /* SM_SPC */ - ________________SYMROW_L1__________________, ________________SYMROW_R1__________________, - ________________SYMROW_R1__________________, ________________SYMROW_R1__________________, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS, - KC_LBRC, _______, _______, _______, _______, ________________, _______, _______, _______, _______, KC_RBRC - ), - [_F_KEYS] = LAYOUT_atreus_wrapper( /* FK_DOT */ - ________________FKEYROW_L1_________________, ________________FKEYROW_R1_________________, - ________________FKEYROW_R1_________________, ________________FKEYROW_L1_________________, - KC_F11, KC_F12, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_DEBUG] = LAYOUT_atreus_wrapper( /* shhhh... */ - ________________DEBUG_L1___________________, ________________DEBUG_R1___________________, - ________________DEBUG_L2___________________, ________________DEBUG_R2___________________, - ________________DEBUG_L3___________________, ________________DEBUG_R3___________________, - _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______ - ), - [_SECRET] = LAYOUT_atreus_wrapper( /* shhhh... */ -/* - _______, _______, _______, RUSTY, FUEL, _______, _______, _______, _______, _______, - AR1ST, SYSNOC, _______, _______, _______, _______, _______, _______, OS_LAB, _______, - CDLOCAL, _______, C0RE, VAXIS, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -*/ - ________________SECRET_L1__________________, ________________SECRET_R1__________________, - ________________SECRET_L2__________________, ________________SECRET_R2__________________, - ________________SECRET_L3__________________, ________________SECRET_R3__________________, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - - ), - [_FINAL] = LAYOUT_atreus( /* . */ - _______, _______, _______, _______, TESTING, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/atreus/keymaps/ridingqwerty/readme.md b/keyboards/atreus/keymaps/ridingqwerty/readme.md deleted file mode 100644 index 936df360993b..000000000000 --- a/keyboards/atreus/keymaps/ridingqwerty/readme.md +++ /dev/null @@ -1 +0,0 @@ -This is a handwired Atreus42 using a Proton C diff --git a/keyboards/atreus/keymaps/ridingqwerty/rules.mk b/keyboards/atreus/keymaps/ridingqwerty/rules.mk deleted file mode 100644 index ecead0e01bce..000000000000 --- a/keyboards/atreus/keymaps/ridingqwerty/rules.mk +++ /dev/null @@ -1,22 +0,0 @@ -# MCU name -MCU = STM32F303 -BOARD = QMK_PROTON_C - -# Bootloader selection -BOOTLOADER = stm32-dfu - -# Build Options -# comment out to disable the options. -# -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = yes # Doot -RGBLIGHT_ENABLE = no -TAP_DANCE_ENABLE = no -UNICODE_ENABLE = no -UNICODEMAP_ENABLE = yes diff --git a/keyboards/atreus/keymaps/talljoe/config.h b/keyboards/atreus/keymaps/talljoe/config.h deleted file mode 100644 index 71c7864b7ced..000000000000 --- a/keyboards/atreus/keymaps/talljoe/config.h +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright 2020 Joseph Wasson - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 SPACE_COUNT 3 - -#define TEMPLATE_TKL( \ - KESC, KF01, KF02, KF03, KF04, KF05, KF06, KF07, KF08, KF09, KF10, KF11, KF12, KSCL, KPRS, KADJ, \ - KGRV, K_1 , K_2 , K_3 , K_4 , K_5 , K_6 , K_7 , K_8 , K_9 , K_0 , KMIN, KEQL, KBSP, KINS, KHOM, KPUP, \ - KTAB, K_Q , K_W , K_E , K_R , K_T , K_Y , K_U , K_I , K_O , K_P , KLBR, KRBR, KBLS, KDEL, KEND, LPDN, \ - KCAP, K_A , K_S , K_D , K_F , K_G , K_H , K_J , K_K , K_L , KSMI, KQUO, KENT, \ - KLSH, K_Z , K_X , K_C , K_V , K_B , K_N , K_M , KCMA, KDOT, KSLS, KRSH, K_UP, \ - KLCT, KLOS, KLAL, KSP3, KSP2, KSP1, KRAL, KROS, KRCT, KPTT, K_LT, K_DN, K_RT \ -) LAYOUT( \ - K_Q , K_W , K_E , K_R , K_T , K_Y , K_U , K_I , K_O , K_P , \ - K_A , K_S , K_D , K_F , K_G , K_H , K_J , K_K , K_L , KSMI, \ - K_Z , K_X , K_C , K_V , K_B , K_N , K_M , KCMA, KDOT, KSLS, \ - KTAB, KLOS, KLAL, KLSH, KSP3, KSP2, KCAP, KSP1, KRSH, KBLS, KQUO, KADJ \ -) - -#define TEMPLATE_NUM( \ - KGRV, K_1 , K_2 , K_3 , K_4 , K_5 , K_6 , K_7 , K_8 , K_9 , K_0 , KMIN, KEQL, KBSL, KESC, \ - KTAB, K_Q , K_W , K_E , K_R , K_T , K_Y , K_U , K_I , K_O , K_P , KLBR, KRBR, KBSP, \ - KCAP, K_A , K_S , K_D , K_F , K_G , K_H , K_J , K_K , K_L , KSMI, KQUO, KENT, \ - KLSH, K_Z , K_X , K_C , K_V , K_B , K_N , K_M , KCMA, KDOT, KSLS, KRSH, KADJ, \ - KLCT, KLOS, KLAL, KSP3, KSP2, KSP1, KRAL, KROS, KRCT, KPTT \ -) LAYOUT( \ - K_Q , K_W , K_E , K_R , K_T , K_Y , K_U , K_I , K_O , K_P , \ - K_A , K_S , K_D , K_F , K_G , K_H , K_J , K_K , K_L , KSMI, \ - K_Z , K_X , K_C , K_V , K_B , K_N , K_M , KCMA, KDOT, KSLS, \ - KTAB, KLOS, KLAL, KLSH, KSP3, KSP2, KCAP, KSP1, KRAL, KROS, KQUO, KADJ \ -) - -#define TEMPLATE_RESET LAYOUT( \ - QK_BOOT, 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, \ - QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ -) diff --git a/keyboards/atreus/keymaps/talljoe/keymap.c b/keyboards/atreus/keymaps/talljoe/keymap.c deleted file mode 100644 index 7812add812b3..000000000000 --- a/keyboards/atreus/keymaps/talljoe/keymap.c +++ /dev/null @@ -1 +0,0 @@ -// This space intentionally left blank diff --git a/keyboards/atreus/keymaps/talljoe/rules.mk b/keyboards/atreus/keymaps/talljoe/rules.mk deleted file mode 100644 index 92007fe8ad71..000000000000 --- a/keyboards/atreus/keymaps/talljoe/rules.mk +++ /dev/null @@ -1 +0,0 @@ -USER_NAME := talljoe diff --git a/keyboards/atreus62/keymaps/d4mation/keymap.c b/keyboards/atreus62/keymaps/d4mation/keymap.c deleted file mode 100644 index e01f5b9ec61a..000000000000 --- a/keyboards/atreus62/keymaps/d4mation/keymap.c +++ /dev/null @@ -1,196 +0,0 @@ -#include QMK_KEYBOARD_H -#include "d4mation.h" - -enum layer_names { - _DVR, - _QWR, - _LOWER, - _RAISE, - _NUM, - _ADJUST -}; - -enum keymap_custom_keycodes { - LOWER = NEW_SAFE_RANGE, - RAISE -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Default/Dvorak layer - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | / | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | ' | , | . | P | Y | | F | G | C | R | L | = | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | O | E | U | I |,------.,------.| D | H | T | N | S | - | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * |Shift | ; | Q | J | K | X ||Super ||Enter || B | M | W | V | Z | \ | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | NUM | Alt | Home | End |Lower | Bksp |`------'`------'|Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------' `-----------------------------------------' - */ - - [_DVR] = LAYOUT( - _GRAVE_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_EQL, - KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, - TD(SHIFT_CAPS), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS, - TG(_NUM), KC_RALT, KC_HOME, KC_END, LOWER, KC_BSPC, KC_LGUI, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT - ), - - /* Qwerty layer, more "standard" for other people who may need to use my keyboard or for games where using Qwerty is just easier - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | S | D | F | G |,------.,------.| H | J | K | L | ; | ' | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * |Shift | Z | X | C | V | B ||Super ||Enter || N | M | , | . | / | = | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | NUM | Alt | Home | End |Lower | Bksp |`------'`------'|Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------' `-----------------------------------------' - */ - - [_QWR] = LAYOUT( - _GRAVE_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - TD(SHIFT_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_EQL, - TG(_NUM), KC_RALT, KC_HOME, KC_END, LOWER, KC_BSPC, KC_LGUI, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT - ), - - /* "Lower" layer - * ,-----------------------------------------. ,-----------------------------------------. - * | F11 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | |SLEEP | | | | | SCRGB| | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | |,------.,------.| | | | { | } | | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | | | | | || || || | Mute | VolD | VolU | | | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | |PageUp|PgDown| | Del |`------'`------'| Ins | | | | | | - * `-----------------------------------------' `-----------------------------------------' - */ - - [_LOWER] = LAYOUT( - KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, - _______, _______, _______, _______, SLEEP, _______, _______, _______, SCRGB, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, _______, - _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, - _______, _______, KC_PGUP, KC_PGDN, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______, _______ - ), - - /* "Raise" layer - * ,-----------------------------------------. ,-----------------------------------------. - * | F11 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | || ?> | | | |ZALGO | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Shrug|Lenny |Magic |Disfac| |,------.,------.| | | | [ | ] | | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | Ameno| Tflip| Tput | | || || || | Prev | Play | Next | | | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | |PageUp|PgDown| | Del |`------'`------'| Ins | | | | | | - * `-----------------------------------------' `-----------------------------------------' - */ - - [_RAISE] = LAYOUT( - KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, - _______, _______, PHPOPEN, PHPCLSE, _______, _______, ZALGO, _______, _______, _______, _______, _______, - _______, SHRUG, LENNY, MAGIC, DISFACE, _______, _______, _______, _______, KC_LBRC, KC_RBRC,_______, - _______, AMENO, TFLIP, TPUT, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, - _______, _______, KC_PGUP, KC_PGDN, _______, KC_DEL, _______, _______, KC_INS, _______, _______, _______, _______, _______ - ), - - /* "Numpad" layer - * ,-----------------------------------------. ,-----------------------------------------. - * | | | / | * | - | | | | | / | * | - | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | 7 | 8 | 9 | + | | | | 7 | 8 | 9 | + | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | 4 | 5 | 6 | + | |,------.,------.| | 4 | 5 | 6 | + | | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | 1 | 2 | 3 | Enter| || || || | 1 | 2 | 3 | Enter| | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | 0 | 0 | . | Enter| |`------'`------'| | 0 | 0 | . | Enter| | - * `-----------------------------------------' `-----------------------------------------' - */ - - [_NUM] = LAYOUT( - _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, _______, - _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______, - _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, - _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, - _______, KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, _______, _______, _______, _______, KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, _______ - ), - - /* "Adjust" layer, only active if both "Lower" and "Raise" are active at the same time - * All unused keys are blanked out for this layer - * ,-----------------------------------------. ,-----------------------------------------. - * | NO | NO | NO | NO | NO | NO | | NO | NO | NO | NO | NO | NO | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | NO |QK_BOOT | NO | NO | NO | NO | | NO | NO | NO | NO | NO | NO | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | NO | NO | NO |UC WIN|UC OSX| NO |,------.,------.| NO |Dvorak|Qwerty| NO | NO | NO | - * |------+------+------+------+------+------|| Swap || ||------+------+------+------+------+------| - * | NO | NO | NO | NO | NO | NO || to || Swap || NO | NO | NO | NO | NO | NO | - * |------+------+------+------+------+------|| Ctrl || Back ||------+------+------+------+------+------| - * | NO | NO | NO | NO | | NO |`------'`------'| NO | | NO | NO | NO | NO | - * `-----------------------------------------' `-----------------------------------------' - */ - - [_ADJUST] = LAYOUT( - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, UC_WIN, UC_MAC, XXXXXXX, XXXXXXX, DF(_DVR),DF(_QWR),XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, CG_SWAP, CG_NORM, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ), - -}; - -/* Runs just one time when the keyboard initializes. */ -void eeconfig_init_keymap( void ) { - set_unicode_input_mode( UNICODE_MODE_MACOS ); -}; - -bool process_record_keymap( 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; - - } - - return true; - -}; \ No newline at end of file diff --git a/keyboards/atreus62/keymaps/d4mation/readme.md b/keyboards/atreus62/keymaps/d4mation/readme.md deleted file mode 100644 index 5642e8e43289..000000000000 --- a/keyboards/atreus62/keymaps/d4mation/readme.md +++ /dev/null @@ -1,40 +0,0 @@ -# d4mation's keymap for the Atreus62 - -This is a bit of a work in-progress, but for the most part I like what I have done here. - -I switched to Dvorak some time ago and software-based support in most OS's for Dvorak isn't very great, so this keymap by default is set to Dvorak. - -## Table of Contents - -* [Layers](#layers) - - [Base layer](#base) - - [Num](#num) - - [Lower](#lower) - - [Raise](#raise) - - [Adjust](#adjust) - -# Layers - -## Base - -* By default, this layer is Dvorak. But using the Adjust layer you can switch to Qwerty -* Double-tapping Shift enables and disables Caps Lock -* Quickly tapping the Grave accent key will output a Grave Accent, but holding it for 200ms will output the ESC key instead - -## Num - -This layer gets toggled off and on to place a numpad on both the left and right sides of the keyboard. - -## Lower - -This layer holds some handy shortcuts that I use often, like the screen grab shortcut and sleep shortcut in OS X. - -It also has quick access to {} as they are inaccessible in the base layer - -## Raise - -Aside from quick access to [] and Play/Pause/Next/Previous, this layer is mostly just goofy things I decided to program into the keyboard because I could. There's a bunch of [kaomoji](https://en.wikipedia.org/wiki/Emoticon#Japanese_style_(kaomoji))/"unicode smileys" and I added a toggle switch to enable a [Zalgo Text](https://zalgo.org/) mode. - -## Adjust - -This layer is a "here be dragons" layer. It can only be accessed by holding down the keys for Lower and Raise at the same time. I added exclusively keys that drastically transformed the keyboard's layout or function on this layer. The ability to switch to Qwerty is on this layer, a way to switch CTRL and CMD back and forth is on this layer, and a hotkey to enter bootloader mode also exists. diff --git a/keyboards/atreus62/keymaps/d4mation/rules.mk b/keyboards/atreus62/keymaps/d4mation/rules.mk deleted file mode 100644 index 517f2700e142..000000000000 --- a/keyboards/atreus62/keymaps/d4mation/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -UNICODE_ENABLE = yes -TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/atreus62/keymaps/hvp/config.h b/keyboards/atreus62/keymaps/hvp/config.h deleted file mode 100644 index 8013c0cb6d83..000000000000 --- a/keyboards/atreus62/keymaps/hvp/config.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define TAPPING_TERM 150 -#define PERMISSIVE_HOLD diff --git a/keyboards/atreus62/keymaps/hvp/keymap.c b/keyboards/atreus62/keymaps/hvp/keymap.c deleted file mode 100644 index 1a49f838fa7e..000000000000 --- a/keyboards/atreus62/keymaps/hvp/keymap.c +++ /dev/null @@ -1,67 +0,0 @@ - -#include QMK_KEYBOARD_H -#include "hvp.c" - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. - -#define LT3_ESC LT(3, KC_ESC) -#define LT4_TAB LT(4, KC_TAB) -#define LT1_ENT LT(1, KC_ENTER) -#define LT2_BSP LT(2, KC_BSPC) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT( /* qwerty */ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC , - LT4_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC , - LT3_ESC, KC_A, KC_S, KC_D, LT(3,KC_F), LT(4,KC_G), KC_H, KC_J, KC_K, KC_L, TD(TD1), TD(TD2) , - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, TD(TD3), SC_SENT , - KC_LCTL, KC_APP, _______, KC_LGUI, KC_LALT,SFT_T(KC_SPC), LT2_BSP, LT1_ENT, SFT_T(KC_SPC), KC_LSFT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - LAYOUT( /* Right */ - 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_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC , - KC_DEL, _______, _______, _______, _______, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END - ), - - LAYOUT(/* Left */ - 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_TILDE, KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR, KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_BSPC, - KC_DELETE, _______, _______, _______, _______, KC_LEFT_PAREN, KC_RIGHT_PAREN, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSLS, - _______ , _______ , _______ , _______ , _______ , KC_LEFT_CURLY_BRACE , KC_RIGHT_CURLY_BRACE ,KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TILD, - _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_HOME, KC_PGDN, KC_PGUP, KC_END - ), - - - LAYOUT(/* 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_NO, KC_NO, KC_NO, D_NAVI, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO , - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_NO, KC_NO , - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPLY, KC_NO, KC_MUTE, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT - ), - - - - LAYOUT(/* Tab */ - _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______ , - _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______ , - _______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______ , - KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - /* - [_TRNS] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - */ -}; diff --git a/keyboards/atreus62/keymaps/hvp/readme.md b/keyboards/atreus62/keymaps/hvp/readme.md deleted file mode 100644 index 766533d3be13..000000000000 --- a/keyboards/atreus62/keymaps/hvp/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -Keyboard: Atreus62 -Keys: 62 keyed ortho staggered keyboard with a split layout and num row. -Layout: Swedish characters on main layer using tap dance. Built for Eurkey keyboard layout. -Flash instructions: Flash using avrdude, will req the hvp user space to compile. - -> make make atreus62:hvp:avrdude - -Links: -Github - https://github.com/qmk/qmk_firmware/tree/master/keyboards/atreus62 -Eurkey layout - https://eurkey.steffen.bruentjen.eu/ diff --git a/keyboards/atreus62/keymaps/hvp/rules.mk b/keyboards/atreus62/keymaps/hvp/rules.mk deleted file mode 100644 index 1ba2fa8fbefa..000000000000 --- a/keyboards/atreus62/keymaps/hvp/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/atreus62/keymaps/jarred/config.h b/keyboards/atreus62/keymaps/jarred/config.h deleted file mode 100644 index 34ab0baaf0b9..000000000000 --- a/keyboards/atreus62/keymaps/jarred/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2018 Jarred Steenvoorden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -// My hand wire diodes are in the opposite direction to the Atreus62 PCB -#undef DIODE_DIRECTION -#define DIODE_DIRECTION COL2ROW diff --git a/keyboards/atreus62/keymaps/jarred/keymap.c b/keyboards/atreus62/keymaps/jarred/keymap.c deleted file mode 100644 index 7a49b2890c4a..000000000000 --- a/keyboards/atreus62/keymaps/jarred/keymap.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright 2018 Jarred Steenvoorden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "jarred.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = LAYOUT_atreus62_grid_wrapper(BLANK_12, QWERTY_1_12, QWERTY_2_12, QWERTY_3_12, QWERTY_L4, KC_NO, KC_NO, QWERTY_R4), - [_LW] = LAYOUT_atreus62_grid_wrapper(BLANK_12, LOWER_1_12 , LOWER_2_12 , LOWER_3_12 , LOWER_L4 , KC_NO, KC_NO, LOWER_R4 ), - [_NV] = LAYOUT_atreus62_grid_wrapper(BLANK_12, NAV_1_12 , NAV_2_12 , NAV_3_12 , NAV_L4 , KC_NO, KC_NO, NAV_R4 ), - [_NP] = LAYOUT_atreus62_grid_wrapper(BLANK_12, NUMPAD_1_12, NUMPAD_2_12, NUMPAD_3_12, NUMPAD_L4, KC_NO, KC_NO, NUMPAD_R4), - [_MS] = LAYOUT_atreus62_grid_wrapper(BLANK_12, MOUSE_1_12 , MOUSE_2_12 , MOUSE_3_12 , MOUSE_L4 , KC_NO, KC_NO, MOUSE_R4 ) -}; diff --git a/keyboards/atreus62/keymaps/pcewing/keymap.c b/keyboards/atreus62/keymaps/pcewing/keymap.c deleted file mode 100644 index c8dfd5734bb3..000000000000 --- a/keyboards/atreus62/keymaps/pcewing/keymap.c +++ /dev/null @@ -1,76 +0,0 @@ -#include QMK_KEYBOARD_H - -#define FN MO(_FN) -#define TODO KC_NO - -enum atreus62_layers { - _DEFAULT, - _FN, - _RESET -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Default layer - * ,-----------------------------------------. ,-----------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Esc | A | S | D | F | G |,------.,------.| H | J | K | L | ; | " | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * |Shift | Z | X | C | V | B ||Delete||Enter || N | M | , | . | / |Shift | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | Ctrl | Win | Alt | ` | Fn | Bksp |`------'`------'|Space | Fn | | Alt | Win | Ctrl | - * `-----------------------------------------' `-----------------------------------------' - */ - [_DEFAULT] = LAYOUT( /* qwerty */ - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, FN, TODO, KC_RALT, KC_RGUI, KC_RCTL - ), - - /* Function layer - * ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | F10 | F11 | F12 | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Home | Up | End | PgUp | | | PrSc | F7 | F8 | F9 | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Caps | Left | Down |Right | PgDn | |,------.,------.|Pause | F4 | F5 | F6 | | | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | { | } | [ | ] | || || ||Insert| F1 | F2 | F3 | | | - * |------+------+------+------+------+------|| || ||------+------+------+------+------+------| - * | | | | | | |`------'`------'| | | | | | | - * `-----------------------------------------' `-----------------------------------------' - */ - [_FN] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, KC_F10, KC_F11, KC_F12, _______, TO(_RESET), - _______, KC_HOME, KC_UP, KC_END, KC_PGDN, _______, KC_PSCR, KC_F7, KC_F8, KC_F9, _______, _______, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGUP, _______, KC_PAUS, KC_F4, KC_F5, KC_F6, _______, _______, - _______, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, _______, KC_INS, KC_F1, KC_F2, KC_F3, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - /* - * This layer makes it possible to reset the firmware; don't get rid of it and make sure there is a way to activate it. - */ - [_RESET] = LAYOUT( - TO(_DEFAULT), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - 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, QK_BOOT - ) - - /* - [_TRNS] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - */ -}; diff --git a/keyboards/atreus62/keymaps/scheiklp/config.h b/keyboards/atreus62/keymaps/scheiklp/config.h deleted file mode 100644 index d8b7abe8d395..000000000000 --- a/keyboards/atreus62/keymaps/scheiklp/config.h +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2017 Benjamin Kesselring - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 -// place overrides here -#define AUTO_SHIFT_TIMEOUT 125 -#define NO_AUTO_SHIFT_SPECIAL -#define NO_AUTO_SHIFT_NUMERIC - -// require two taps for a TT layer switch (default 5) -#define TAPPING_TOGGLE 2 - -// Mouse control -// constant mode (velocity) -#define MK_3_SPEED -// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2 - -// Cursor offset per movement (unmodified) -#define MK_C_OFFSET_UNMOD 20 -// Time between cursor movements (unmodified) -#define MK_C_INTERVAL_UNMOD 1 -/* #define MK_C_INTERVAL_UNMOD 16 */ - -// Cursor offset per movement (KC_ACL0) -#define MK_C_OFFSET_0 1 -// Time between cursor movements (KC_ACL0) -#define MK_C_INTERVAL_0 10 - -// Cursor offset per movement (KC_ACL1) -#define MK_C_OFFSET_1 4 -// Time between cursor movements (KC_ACL1) -#define MK_C_INTERVAL_1 16 - -// Cursor offset per movement (KC_ACL2) -#define MK_C_OFFSET_2 20 -/* #define MK_C_OFFSET_2 32 */ -// Time between cursor movements (KC_ACL2) -#define MK_C_INTERVAL_2 16 diff --git a/keyboards/atreus62/keymaps/scheiklp/keymap.c b/keyboards/atreus62/keymaps/scheiklp/keymap.c deleted file mode 100644 index 13ad3e4f5108..000000000000 --- a/keyboards/atreus62/keymaps/scheiklp/keymap.c +++ /dev/null @@ -1,43 +0,0 @@ -#include QMK_KEYBOARD_H -#include "koy_keys_on_quertz_de_latin1.h" -// Layer shorthand -#define _1 0 -#define _3 1 -#define _4 2 -#define _7 3 - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_1] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, N_Y, KC_V, KC_G, KC_C, KC_L, N_SS, N_Z, - MO(_3), KC_H, KC_A, KC_E, KC_I, KC_U, KC_D, KC_T, KC_R, KC_N, KC_S, KC_F, - KC_LSFT, KC_X, KC_Q, N_AE, N_UE, N_OE, KC_B, KC_P, KC_W, KC_M, KC_J, KC_RSFT, - KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_SPC, KC_ENTER, KC_RCTL, MO(_3), MO(_4), KC_TRNS, KC_TRNS, KC_CAPS, TT(_7) - ), - - [_3] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC, - KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, N_ACUT, - KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT, - KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT, - KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_SPC, KC_ENTER, KC_TRNS, KC_TRNS, KC_RCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_4] = LAYOUT( - KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, - KC_TAB, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS, - KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS, - KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT, - KC_LCTL, N_COPY, N_PASTE, KC_LGUI, KC_LALT, KC_0, KC_ENTER, KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - - [_7] = LAYOUT( - KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, - KC_TAB, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_LSFT, KC_MS_ACCEL1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_LCTL, KC_MS_ACCEL2, KC_TRNS, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ) -}; diff --git a/keyboards/atreus62/keymaps/scheiklp/readme.md b/keyboards/atreus62/keymaps/scheiklp/readme.md deleted file mode 100644 index b5590b6f2f46..000000000000 --- a/keyboards/atreus62/keymaps/scheiklp/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# KOY Layout for the atreus62 pcb board -Compile the layout -```bash -qmk compile -kb atreus62 -km scheiklp -``` -disable this service that interfers with the pro micro -``` -sudo systemctl stop ModemManager.service -``` -and flash it to the board -```bash -qmk flash -kb atreus62 -km scheiklp -``` diff --git a/keyboards/atreus62/keymaps/scheiklp/rules.mk b/keyboards/atreus62/keymaps/scheiklp/rules.mk deleted file mode 100644 index 681e7507b40d..000000000000 --- a/keyboards/atreus62/keymaps/scheiklp/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -AUTO_SHIFT_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -NKRO_ENABLE = yes diff --git a/keyboards/axolstudio/yeti/hotswap/config.h b/keyboards/axolstudio/yeti/hotswap/config.h index 694a6449f0f9..02077e05a7d3 100644 --- a/keyboards/axolstudio/yeti/hotswap/config.h +++ b/keyboards/axolstudio/yeti/hotswap/config.h @@ -61,7 +61,6 @@ along with this program. If not, see . # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // 16 is equivalent to limiting to 60fps # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 64 #endif diff --git a/keyboards/axolstudio/yeti/hotswap/hotswap.c b/keyboards/axolstudio/yeti/hotswap/hotswap.c index 98d37290e6fd..527bec17ee16 100644 --- a/keyboards/axolstudio/yeti/hotswap/hotswap.c +++ b/keyboards/axolstudio/yeti/hotswap/hotswap.c @@ -17,7 +17,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 0, B_1, A_1, C_1 }, { 0, B_2, A_2, C_2 }, { 0, B_3, A_3, C_3 }, diff --git a/keyboards/bajjak/rules.mk b/keyboards/bajjak/rules.mk index 13148ecb0489..21db4112e069 100644 --- a/keyboards/bajjak/rules.mk +++ b/keyboards/bajjak/rules.mk @@ -26,4 +26,4 @@ AUDIO_SUPPORTED = no # project specific files SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/bandominedoni/config.h b/keyboards/bandominedoni/config.h index df0ebb0fdc43..7dfa48fbd435 100644 --- a/keyboards/bandominedoni/config.h +++ b/keyboards/bandominedoni/config.h @@ -35,7 +35,6 @@ # define LED_HITS_TO_REMEMBER 10 # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 -# define RGB_MATRIX_DEFAULT_SPD 127 // the above brighness setting has no effect on rgb_matrix_set_color(). // Use darker colors instead. /* RGB darker COLORS */ diff --git a/keyboards/barleycorn_smd/rules.mk b/keyboards/barleycorn_smd/rules.mk index 173368a047c7..69ecebae2ae1 100644 --- a/keyboards/barleycorn_smd/rules.mk +++ b/keyboards/barleycorn_smd/rules.mk @@ -14,4 +14,4 @@ AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = lite SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/info.json b/keyboards/bastardkb/charybdis/3x5/blackpill/info.json index 89e181b8f93d..a20b2ce636ab 100644 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/info.json +++ b/keyboards/bastardkb/charybdis/3x5/blackpill/info.json @@ -3,6 +3,9 @@ "usb": { "device_version": "1.0.0" }, + "eeprom": { + "driver": "spi" + }, "rgb_matrix": { "driver": "ws2812" }, diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk b/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk index 9cc216bb71fb..4bd570ddd8c3 100644 --- a/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk +++ b/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk @@ -23,5 +23,4 @@ POINTING_DEVICE_DRIVER = pmw3360 MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint KEYBOARD_SHARED_EP = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c index 8f02227c0182..21e823575e8d 100644 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c @@ -210,15 +210,3 @@ layer_state_t layer_state_set_kb(layer_state_t state) { // Forward-declare this helper function since it is defined in rgb_matrix.c. void rgb_matrix_update_pwm_buffers(void); #endif - -void shutdown_user(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - rgblight_setrgb(RGB_RED); -#endif // RGBLIGHT_ENABLE -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all(RGB_RED); - rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE -} diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h deleted file mode 100644 index 6d24808af2d1..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - -Copyright 2021 Quentin LEBASTARD - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#ifdef KEYBOARD_bastardkb_charybdis_3x5_blackpill - -# undef MATRIX_ROW_PINS -# define MATRIX_ROW_PINS \ - { B12, B13, B14, B15 } -# undef MATRIX_COL_PINS -# define MATRIX_COL_PINS \ - { A15, B3, B4, B5, B6 } - -# undef MATRIX_ROW_PINS_RIGHT -# define MATRIX_ROW_PINS_RIGHT \ - { B12, B13, B14, B15 } -# undef MATRIX_COL_PINS_RIGHT -# define MATRIX_COL_PINS_RIGHT \ - { A15, B3, B4, B5, B6 } - -# define USB_VBUS_PIN B10 -# undef SPLIT_HAND_PIN -# define SPLIT_HAND_PIN C14 // high = left, low = right - -// WS2812 RGB LED strip input and number of LEDs -# undef WS2812_DI_PIN -# define WS2812_DI_PIN A1 -# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 -# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2 -# define WS2812_PWM_CHANNEL 2 // default: 2 -# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 -# define WS2812_EXTERNAL_PULLUP -//#define WS2812_PWM_COMPLEMENTARY_OUTPUT // Define for a complementary timer output (TIMx_CHyN); omit for a normal timer output (TIMx_CHy). -# undef WS2812_DMA_STREAM -# define WS2812_DMA_STREAM STM32_DMA1_STREAM7 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. -# define WS2812_DMA_CHANNEL 3 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. -# define WS2812_PWM_TARGET_PERIOD 800000 - -# define DEBUG_LED_PIN C13 - -/* Audio config */ -# define AUDIO_PIN B1 -# define AUDIO_PWM_DRIVER PWMD3 -# define AUDIO_PWM_CHANNEL 4 -# define AUDIO_PWM_PAL_MODE 2 - -/* serial.c configuration for split keyboard */ -# undef SOFT_SERIAL_PIN -# define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode. -# undef SERIAL_USART_TX_PIN -# define SERIAL_USART_TX_PIN A2 -# undef SERIAL_USART_RX_PIN -# define SERIAL_USART_RX_PIN A3 -# define SERIAL_USART_DRIVER SD2 -# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 -# define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 -# define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100 -# define SERIAL_USART_SPEED 921600 -// #define SERIAL_USART_PIN_SWAP // swap RX and TX pins on master -// To use the highest possible baudrate (3.75Mbit/s) uncomment the following -// line, this can result in dropped communications so lower the speed if there -// are many timeouts. -// #define SERIAL_USART_SPEED (STM32_PCLK2 >> 4) - -# define CRC8_USE_TABLE -# define CRC8_OPTIMIZE_SPEED - -/* spi config for eeprom and pmw3360 sensor */ -# define SPI_DRIVER SPID1 -# define SPI_SCK_PIN A5 -# define SPI_SCK_PAL_MODE 5 -# define SPI_MOSI_PIN A7 -# define SPI_MOSI_PAL_MODE 5 -# define SPI_MISO_PIN A6 -# define SPI_MISO_PAL_MODE 5 - -/* eeprom config */ -# define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4 -# define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64 -// #define EXTERNAL_EEPROM_BYTE_COUNT 8196 -// #define EXTERNAL_EEPROM_PAGE_SIZE 32 -// #define EXTERNAL_EEPROM_ADDRESS_SIZE 2 - -/* pmw3360 config */ -# undef PMW33XX_CS_PIN -# define PMW33XX_CS_PIN B0 -#endif - -#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200 -#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400 -#define CHARYBDIS_MINIMUM_SNIPING_DPI 200 -#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100 diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h deleted file mode 100644 index 3b254172b483..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/halconf.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2020 Nick Brassel (tzarc) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#if defined(KEYBOARD_bastardkb_charybdis_3x5_blackpill) -# define HAL_USE_PWM TRUE -# define HAL_USE_SERIAL TRUE -# define HAL_USE_I2C TRUE -# define HAL_USE_SPI TRUE -# define SPI_USE_WAIT TRUE -# define SPI_SELECT_MODE SPI_SELECT_MODE_PAD -#endif - -#include_next diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c deleted file mode 100644 index e458a8437334..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/keymap.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2021 Quentin LEBASTARD - * Copyright 2021 Drashna Jael're @drashna - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" - -#define LAYOUT_charybdis_3x5_wrapper(...) LAYOUT_charybdis_3x5(__VA_ARGS__) -#define LAYOUT_charybdis_3x5_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_charybdis_3x5 ( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - ALT_T(K11), K12, K13, K14, GUI_T(K15), LGUI_T(K16), K17, K18, K19, LALT_T(K1A), \ - CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), \ - LSFT_T(KC_GRV), KC_SPC, BK_LWER, DL_RAIS, RSFT_T(KC_ENT) \ - ) -#define LAYOUT_charybdis_3x5_base_wrapper(...) LAYOUT_charybdis_3x5_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_DEFAULT_LAYER_1] = LAYOUT_charybdis_3x5_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_DEFAULT_LAYER_2] = LAYOUT_charybdis_3x5_base_wrapper( - ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, - ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, - ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ - ), - [_DEFAULT_LAYER_3] = LAYOUT_charybdis_3x5_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DEFAULT_LAYER_4] = LAYOUT_charybdis_3x5_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_MOUSE] = LAYOUT_charybdis_3x5( - _______, _______, _______, _______, _______, KC_WH_U, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, - _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, - _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, - _______, SNIPING, _______, _______, _______ - ), - [_LOWER] = LAYOUT_charybdis_3x5_wrapper( - _________________LOWER_L1__________________, _________________LOWER_R1__________________, - _________________LOWER_L2__________________, _________________LOWER_R2__________________, - _________________LOWER_L3__________________, _________________LOWER_R3__________________, - _______, _______, _______, _______, AUTO_CTN - ), - [_RAISE] = LAYOUT_charybdis_3x5_wrapper( - _________________RAISE_L1__________________, _________________RAISE_R1__________________, - _________________RAISE_L2__________________, _________________RAISE_R2__________________, - _________________RAISE_L3__________________, _________________RAISE_R3__________________, - QK_RBT, _______, _______, _______, _______ - ), - [_ADJUST] = LAYOUT_charybdis_3x5_wrapper( - _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, - _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, - _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, - EE_CLR, KC_NUKE, _______, _______, QK_BOOT - ), -}; diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h deleted file mode 100644 index 3defeed4dd64..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/mcuconf.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright 2020 Nick Brassel (tzarc) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include_next - -#if defined(KEYBOARD_bastardkb_charybdis_3x5_blackpill) -# undef STM32_I2C_USE_I2C1 -# define STM32_I2C_USE_I2C1 TRUE - -// #undef STM32_I2C_I2C1_RX_DMA_STREAM -// #define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0) -# undef STM32_I2C_I2C1_TX_DMA_STREAM -# define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 1) - -# undef STM32_PWM_USE_TIM2 -# define STM32_PWM_USE_TIM2 TRUE - -# undef STM32_PWM_USE_TIM3 -# define STM32_PWM_USE_TIM3 TRUE - -# undef STM32_SPI_USE_SPI1 -# define STM32_SPI_USE_SPI1 TRUE - -# undef STM32_SERIAL_USE_USART2 -# define STM32_SERIAL_USE_USART2 TRUE - -# undef STM32_ST_USE_TIMER -# define STM32_ST_USE_TIMER 5 -#endif diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk deleted file mode 100644 index 029b4a498b30..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk +++ /dev/null @@ -1,43 +0,0 @@ -RGB_MATRIX_ENABLE = no -CUSTOM_UNICODE_ENABLE = no -CUSTOM_POINTING_DEVICE = no -CUSTOM_SPLIT_TRANSPORT_SYNC = no - - -ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/3x5/blackpill) - # Bootloader selection - BOOTLOADER := tinyuf2 - - LTO_ENABLE := no - - AUDIO_SUPPORTED = yes - AUDIO_ENABLE = yes - AUDIO_DRIVER = pwm_hardware - - OVERLOAD_FEATURES = yes -endif - -ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/3x5/v2/stemcell) - OVERLOAD_FEATURES = yes -endif -ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/3x5/v2/splinky) - OVERLOAD_FEATURES = yes -endif - - -ifeq ($(strip $(OVERLOAD_FEATURES)), yes) - BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite - KEYBOARD_SHARED_EP = yes - MOUSE_SHARED_EP = yes - - MOUSEKEY_ENABLE = yes - NKRO_ENABLE = yes - CONSOLE_ENABLE = yes - RGB_MATRIX_ENABLE = yes - - AUTOCORRECT_ENABLE = yes - - CUSTOM_UNICODE_ENABLE = yes - CUSTOM_POINTING_DEVICE = yes - CUSTOM_SPLIT_TRANSPORT_SYNC = yes -endif diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 935444af1b75..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 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 LAYOUT_miryoku( \ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT_charybdis_3x5( \ -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, \ - K32, K33, K34, K35, K36 \ -) diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/rules.mk deleted file mode 100644 index ef40279cbcd6..000000000000 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright 2021 Manna Harbour -# https://github.com/manna-harbour/miryoku - -MIRYOKU_KLUDGE_THUMBCOMBOS=yes diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c index 4a9154809052..5299444ad390 100644 --- a/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c +++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c @@ -255,15 +255,3 @@ layer_state_t layer_state_set_user(layer_state_t state) { // rgb_matrix.c. void rgb_matrix_update_pwm_buffers(void); #endif - -void shutdown_user(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - rgblight_setrgb(RGB_RED); -#endif // RGBLIGHT_ENABLE -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all(RGB_RED); - rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE -} diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk index 80098fbbf670..87a2d912b894 100644 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk +++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky_2/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk index 80098fbbf670..87a2d912b894 100644 --- a/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk +++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky_3/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/info.json b/keyboards/bastardkb/charybdis/3x6/blackpill/info.json index 5ac7a1cdca00..bda53275f830 100644 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/info.json +++ b/keyboards/bastardkb/charybdis/3x6/blackpill/info.json @@ -3,6 +3,9 @@ "usb": { "device_version": "1.0.0" }, + "eeprom": { + "driver": "spi" + }, "rgb_matrix": { "driver": "ws2812" }, diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk index 9cc216bb71fb..4bd570ddd8c3 100644 --- a/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk +++ b/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk @@ -23,5 +23,4 @@ POINTING_DEVICE_DRIVER = pmw3360 MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint KEYBOARD_SHARED_EP = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c index fd56cce25dc0..d78ce8b7ffd1 100644 --- a/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c +++ b/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c @@ -134,15 +134,3 @@ layer_state_t layer_state_set_user(layer_state_t state) { // Forward-declare this helper function since it is defined in rgb_matrix.c. void rgb_matrix_update_pwm_buffers(void); #endif - -void shutdown_user(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(1); - rgblight_setrgb(RGB_RED); -#endif // RGBLIGHT_ENABLE -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all(RGB_RED); - rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE -} diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk index 80098fbbf670..87a2d912b894 100644 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk +++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky_2/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk index 80098fbbf670..87a2d912b894 100644 --- a/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk +++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky_3/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/info.json b/keyboards/bastardkb/charybdis/4x6/blackpill/info.json index b9fb103496c8..b4040e84a5bc 100644 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/info.json +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/info.json @@ -3,6 +3,9 @@ "usb": { "device_version": "1.0.0" }, + "eeprom": { + "driver": "spi" + }, "rgb_matrix": { "driver": "ws2812" }, diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk index 1cfe4724b427..f8de9a3fb13e 100644 --- a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk +++ b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk @@ -23,5 +23,4 @@ POINTING_DEVICE_DRIVER = pmw3360 MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint KEYBOARD_SHARED_EP = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h deleted file mode 100644 index 7fa982612550..000000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h +++ /dev/null @@ -1,69 +0,0 @@ -/** - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -#if defined(KEYBOARD_bastardkb_charybdis_4x6_blackpill) -# undef MATRIX_COL_PINS -# define MATRIX_COL_PINS \ - { B0, B1, B12, B3, B4, B5 } - -# define USB_VBUS_PIN B10 -# define DEBUG_LED_PIN C13 - -# define AUDIO_PIN B7 -# define AUDIO_PWM_DRIVER PWMD4 -# define AUDIO_PWM_CHANNEL 2 -# define AUDIO_PWM_PAL_MODE 2 -# define AUDIO_INIT_DELAY -# define AUDIO_ENABLE_TONE_MULTIPLEXING -# define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10 - -# define SERIAL_USART_SPEED (1 * 1024 * 1024) - -# undef POINTING_DEVICE_CS_PIN -# define POINTING_DEVICE_CS_PIN A15 // b14 -# define PMW33XX_LIFTOFF_DISTANCE 0b1111 - -# define RGB_MATRIX_LED_FLUSH_LIMIT 33 -# define RGB_MATRIX_LED_PROCESS_LIMIT 29 -#endif - -#undef ROTATIONAL_TRANSFORM_ANGLE -#define ROTATIONAL_TRANSFORM_ANGLE 25 -#define POINTING_DEVICE_ROTATION_270 - -/* RGB Matrix. */ -#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS -#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 - -#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200 -#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400 -#define CHARYBDIS_MINIMUM_SNIPING_DPI 200 -#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100 - -#define CHARYBDIS_CONFIG_SYNC - -#define BOOTMAGIC_LITE_ROW 0 -#define BOOTMAGIC_LITE_COLUMN 0 -#define BOOTMAGIC_LITE_ROW_RIGHT 5 -#define BOOTMAGIC_LITE_COLUMN_RIGHT 0 -#define BOOTMAGIC_LITE_EEPROM_ROW 1 -#define BOOTMAGIC_LITE_EEPROM_COLUMN 0 -#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 1 -#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 0 - -#define DEBOUNCE 15 diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c deleted file mode 100644 index 31d1e92a7fb8..000000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c +++ /dev/null @@ -1,154 +0,0 @@ -/** - * Copyright 2021 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "drashna.h" - -// clang-format off -#define LAYOUT_charybdis_4x6_wrapper(...) LAYOUT_charybdis_4x6(__VA_ARGS__) -#define LAYOUT_charybdis_4x6_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_charybdis_4x6_wrapper( \ - KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, UC_CLUE, \ - SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ - LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ - OS_LSFT,CTL_T(K21),ALT_T(K22),GUI_T(K23),K24,K25, K26,K27,RGUI_T(K28),RALT_T(K29),RCTL_T(K2A), OS_RSFT, \ - SFT_T(KC_GRV), OS_LALT, OS_LGUI, TT(_MOUSE), KC_ENT, \ - KC_SPC, BK_LWER, DL_RAIS \ - ) - -#define LAYOUT_base_wrapper(...) LAYOUT_charybdis_4x6_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( - ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, - ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, - ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ - ), - [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_GAMEPAD] = LAYOUT_charybdis_4x6( - KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______, - KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, - KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______, - KC_V, _______, _______, _______, TG_GAME, - KC_SPC, KC_H, _______ - ), - [_DIABLO] = LAYOUT_charybdis_4x6( - KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, - KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______, - KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______, - KC_G, _______, _______, TO(_DIABLOII), TG_DBLO, - KC_LSFT, KC_LCTL, _______ - ), - [_DIABLOII] = LAYOUT_charybdis_4x6( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, _______, _______, _______, _______, _______, - KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, _______, _______, _______, _______, _______, _______, - KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, - KC_DIABLO_CLEAR, _______, _______, _______, TG(_DIABLOII), - SFT_T(KC_SPACE), ALT_T(KC_Q), _______ - ), - [_MOUSE] = LAYOUT_charybdis_4x6( - _______, _______, _______, _______, _______, _______, _______, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, PD_JIGGLER, - _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, DRGSCRL, - _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING, - _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______ - ), - - [_LOWER] = LAYOUT_charybdis_4x6_wrapper( - KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, - _______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______, - _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, - _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, _______, - _______, _______, _______ - ), - - [_RAISE] = LAYOUT_charybdis_4x6_wrapper( - KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, - KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, - _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, _______, - _______, _______, _______ - ), - - [_ADJUST] = LAYOUT_charybdis_4x6_wrapper( - QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_SUPER, KC_NOMODE,KC_COMIC,KC_REGIONAL,TG_GAME,TG_DBLO, QK_BOOT, - VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EE_CLR, - KEYLOCK, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS, - UC_NEXT, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY, - QK_RBT, AUTO_CTN, _______, _______, KC_NUKE, - _______, _______, _______ - ) -}; -// clang-format on - -void keyboard_post_init_keymap(void) { -#ifdef RGB_MATRIX_ENABLE - g_led_config.flags[53] = g_led_config.flags[54] = g_led_config.flags[55] = g_led_config.flags[0] = g_led_config.flags[1] = g_led_config.flags[2] = g_led_config.flags[3] = g_led_config.flags[29] = g_led_config.flags[30] = g_led_config.flags[31] = g_led_config.flags[32] = LED_FLAG_MODIFIER; -#endif -} - -#if defined(KEYBOARD_bastardkb_charybdis_4x6_blackpill) -void keyboard_pre_init_keymap(void) { - setPinInputHigh(A0); -} -#endif - -#ifdef SWAP_HANDS_ENABLE -const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { - /* Left hand, matrix positions */ - {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}}, - {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}}, - {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}}, - {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}}, - {{2, 9}, {4, 9}, {5, 9}, {1, 9}, {0, 9}, {3, 9}}, - /* Right hand, matrix positions */ - {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}}, - {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}}, - {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}}, - {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}}, - {{0, 4}, {3, 4}, {2, 4}, {5, 4}, {4, 4}, {2, 4}} -}; - -# ifdef ENCODER_MAP_ENABLE -const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0}; -# endif -#endif diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h deleted file mode 100644 index 0541043c5384..000000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2020 Nick Brassel (tzarc) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include_next - -#if defined(KEYBOARD_bastardkb_charybdis_4x6_blackpill) -# undef STM32_PWM_USE_ADVANCED -# define STM32_PWM_USE_ADVANCED TRUE - -# undef STM32_PWM_USE_TIM4 -# define STM32_PWM_USE_TIM4 TRUE -#endif diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk deleted file mode 100644 index ef6b7cd24b86..000000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk +++ /dev/null @@ -1,52 +0,0 @@ -CUSTOM_UNICODE_ENABLE = no -CUSTOM_POINTING_DEVICE = no -CUSTOM_SPLIT_TRANSPORT_SYNC = no -PER_KEY_TAPPING = yes - -ifeq ($(strip $(KEYBOARD)), bastardkb/charybdis/4x6/blackpill) - # MCU name - # Bootloader selection - BOOTLOADER := tinyuf2 - - AUDIO_ENABLE = yes # Audio output - AUDIO_SUPPORTED = yes # is set to no in kb, needs to be forcibly enabled - AUDIO_DRIVER = pwm_hardware - - BACKLIGHT_DRIVER = pwm - - OVERLOAD_FEATURES = yes -endif - -ifeq ($(strip $(MCU)), atmega32u4) - LTO_ENABLE = yes - BOOTLOADER = qmk-hid - BOOTLOADER_SIZE = 512 - EXTRAKEY_ENABLE = no -else - OVERLOAD_FEATURES = yes -endif - -ifeq ($(strip $(OVERLOAD_FEATURES)), yes) - BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite - MOUSEKEY_ENABLE = yes # Mouse keys - EXTRAKEY_ENABLE = yes # Audio control and System control - CONSOLE_ENABLE = yes # Console for debug - COMMAND_ENABLE = no # Commands for debug and configuration - NKRO_ENABLE = yes # Enable N-Key Rollover - RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow - - MOUSE_SHARED_EP = no - - AUTOCORRECT_ENABLE = yes - CAPS_WORD_ENABLE = yes - SWAP_HANDS_ENABLE = yes - TAP_DANCE_ENABLE = yes - WPM_ENABLE = yes - LTO_ENABLE = no - # OPT = 3 - - CUSTOM_UNICODE_ENABLE = yes - CUSTOM_POINTING_DEVICE = yes - CUSTOM_SPLIT_TRANSPORT_SYNC = yes - -endif diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index aa8dc8505422..000000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT_charybdis_4x6( \ -XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ - K32, K33, K34, K35, K36, \ - XXX, K32, K37 \ -) diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/rules.mk deleted file mode 100644 index ef40279cbcd6..000000000000 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright 2021 Manna Harbour -# https://github.com/manna-harbour/miryoku - -MIRYOKU_KLUDGE_THUMBCOMBOS=yes diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c index fb795829fde1..a0657b02ec89 100644 --- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c +++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c @@ -157,15 +157,3 @@ layer_state_t layer_state_set_user(layer_state_t state) { // Forward-declare this helper function since it is defined in rgb_matrix.c. void rgb_matrix_update_pwm_buffers(void); #endif - -void shutdown_user(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(1); - rgblight_setrgb(RGB_RED); -#endif // RGBLIGHT_ENABLE -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all(RGB_RED); - rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE -} diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk index 80098fbbf670..87a2d912b894 100644 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk +++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky_2/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk index 80098fbbf670..87a2d912b894 100644 --- a/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk +++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky_3/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/charybdis/charybdis.c b/keyboards/bastardkb/charybdis/charybdis.c index c321af7aa913..c9f0e6317283 100644 --- a/keyboards/bastardkb/charybdis/charybdis.c +++ b/keyboards/bastardkb/charybdis/charybdis.c @@ -382,3 +382,20 @@ void matrix_scan_kb(void) { matrix_scan_user(); } #endif // KEYBOARD_bastardkb_charybdis_3x5_blackpill || KEYBOARD_bastardkb_charybdis_4x6_blackpill + +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } +#ifdef RGBLIGHT_ENABLE + rgblight_enable_noeeprom(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_setrgb(RGB_RED); +#endif // RGBLIGHT_ENABLE +#ifdef RGB_MATRIX_ENABLE + void rgb_matrix_update_pwm_buffers(void); + rgb_matrix_set_color_all(RGB_RED); + rgb_matrix_update_pwm_buffers(); +#endif // RGB_MATRIX_ENABLE + return true; +} diff --git a/keyboards/bastardkb/charybdis/config.h b/keyboards/bastardkb/charybdis/config.h index ced39ef4a1fa..2cd4394da0d3 100644 --- a/keyboards/bastardkb/charybdis/config.h +++ b/keyboards/bastardkb/charybdis/config.h @@ -41,8 +41,6 @@ # define RGB_MATRIX_KEYPRESSES // Startup values. -# define RGB_MATRIX_DEFAULT_HUE 0 -# define RGB_MATRIX_DEFAULT_SAT 255 # define RGB_MATRIX_DEFAULT_VAL 64 // Rainbow swirl as startup mode. diff --git a/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk index 5db74a9d847b..b4722fc8e6a7 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk +++ b/keyboards/bastardkb/dilemma/3x5_2/assembled/rules.mk @@ -22,6 +22,3 @@ POINTING_DEVICE_ENABLE = yes POINTING_DEVICE_DRIVER = cirque_pinnacle_spi # Assembled version uses SPI. SPLIT_KEYBOARD = yes - -# RP2040-specific options -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c index e8c0441d7bbf..5f22184928d9 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c +++ b/keyboards/bastardkb/dilemma/3x5_2/keymaps/bstiq/keymap.c @@ -210,15 +210,3 @@ layer_state_t layer_state_set_kb(layer_state_t state) { // Forward-declare this helper function since it is defined in rgb_matrix.c. void rgb_matrix_update_pwm_buffers(void); #endif - -void shutdown_user(void) { -#ifdef RGBLIGHT_ENABLE - rgblight_enable_noeeprom(); - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - rgblight_setrgb(RGB_RED); -#endif // RGBLIGHT_ENABLE -#ifdef RGB_MATRIX_ENABLE - rgb_matrix_set_color_all(RGB_RED); - rgb_matrix_update_pwm_buffers(); -#endif // RGB_MATRIX_ENABLE -} diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/config.h b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/config.h deleted file mode 100644 index 7c46c833102f..000000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/config.h +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define CIRQUE_PINNACLE_TAP_ENABLE -#define POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE -#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE - -#define OLED_DISPLAY_128X128 diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/halconf.h b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/halconf.h deleted file mode 100644 index 906bd6519780..000000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/halconf.h +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 HAL_USE_SPI TRUE -#define HAL_USE_I2C TRUE - -#include_next diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/keymap.c b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/keymap.c deleted file mode 100644 index bf75e97841b0..000000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/keymap.c +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" - -// clang-format off -#define LAYOUT_split_3x5_2_wrapper(...) LAYOUT_split_3x5_2(__VA_ARGS__) -#define LAYOUT_split_3x5_2_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_split_3x5_2 ( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - ALT_T(K11), K12, K13, K14, GUI_T(K15), LGUI_T(K16), K17, K18, K19, LALT_T(K1A), \ - CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), \ - KC_SPC, BK_LWER, DL_RAIS, RSFT_T(KC_ENT) \ - ) - -#define LAYOUT_split_3x5_2_base_wrapper(...) LAYOUT_split_3x5_2_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_DEFAULT_LAYER_1] = LAYOUT_split_3x5_2_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_DEFAULT_LAYER_2] = LAYOUT_split_3x5_2_base_wrapper( - ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, - ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, - ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ - ), - [_DEFAULT_LAYER_3] = LAYOUT_split_3x5_2_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DEFAULT_LAYER_4] = LAYOUT_split_3x5_2_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_MOUSE] = LAYOUT_split_3x5_2( - _______, _______, _______, _______, _______, KC_WH_U, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, - _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, - _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, - SNIPING, _______, _______, _______ - ), - [_LOWER] = LAYOUT_split_3x5_2_wrapper( - _________________LOWER_L1__________________, _________________LOWER_R1__________________, - _________________LOWER_L2__________________, _________________LOWER_R2__________________, - _________________LOWER_L3__________________, _________________LOWER_R3__________________, - _______, _______, _______, AUTO_CTN - ), - [_RAISE] = LAYOUT_split_3x5_2_wrapper( - _________________RAISE_L1__________________, _________________RAISE_R1__________________, - _________________RAISE_L2__________________, _________________RAISE_R2__________________, - _________________RAISE_L3__________________, _________________RAISE_R3__________________, - _______, _______, _______, _______ - ), - [_ADJUST] = LAYOUT_split_3x5_2_wrapper( - _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, - _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, - _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, - KC_NUKE, _______, _______, QK_BOOT - ), -}; - -#if defined(OLED_ENABLE) && defined(OLED_DISPLAY_128X128) -# ifdef UNICODE_COMMON_ENABLE -# include "process_unicode_common.h" -# include "keyrecords/unicode.h" -# endif - -extern const char PROGMEM display_border[3]; - -extern bool is_oled_enabled; - - -bool oled_task_keymap(void) { - static const char PROGMEM header_image[] = { - 0, 192, 32, 16, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 7, 15, 31, 63, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 63, 31, 15, 7, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 8, 16, 32, 192, 0, - // 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 7, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0 - }; - oled_write_raw_P(header_image, sizeof(header_image)); - oled_set_cursor(7, 0); - oled_write_P(PSTR("Dilemma"), true); - - render_default_layer_state(1, 1); - render_layer_state(1, 2); - render_kitty(0, 5); - render_wpm(1, 7, 5); -# if defined(POINTING_DEVICE_ENABLE) - render_pointing_dpi_status(dilemma_get_pointer_sniping_enabled() ? dilemma_get_pointer_sniping_dpi() : dilemma_get_pointer_default_dpi(), 1, 7, 6); - render_mouse_mode(17, 6); -# elif defined(WPM_ENABLE) && defined(DEBUG_MATRIX_SCAN_RATE) - render_matrix_scan_rate(1, 7, 6); -# endif - render_bootmagic_status(7, 7); - render_user_status(1, 9); - - render_mod_status(get_mods() | get_oneshot_mods(), 1, 10); - render_keylock_status(host_keyboard_led_state(), 1, 11); - render_unicode_mode(1, 12); - -// render_rgb_hsv(1, 13); - oled_set_cursor(1, 13); - oled_write_P(PSTR("OS: "), false); - extern os_variant_t os_type; - switch (os_type) { - case OS_LINUX: - oled_write_ln_P(PSTR("Linux"), false); - break; - case OS_WINDOWS: - oled_write_ln_P(PSTR("Windows"), false); - break; - case OS_MACOS: - oled_write_ln_P(PSTR("MacOS"), false); - break; - case OS_IOS: - oled_write_ln_P(PSTR("iOS"), false); - break; - default: - break; - } - - render_keylogger_status(1, 14); - - for (uint8_t i = 1; i < 15; i++) { - oled_set_cursor(0, i); - oled_write_raw_P(display_border, sizeof(display_border)); - oled_set_cursor(21, i); - oled_write_raw_P(display_border, sizeof(display_border)); - } - - static const char PROGMEM footer_image[] = {0, 3, 4, 8, 16, 32, 64, 128, 128, 128, 128, 128, 128, 128, 192, 224, 240, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 240, 224, 192, 128, 128, 128, 128, 128, 128, 128, 64, 32, 16, 8, 4, 3, 0}; - oled_set_cursor(0, 15); - oled_write_raw_P(footer_image, sizeof(footer_image)); - - return false; -} -#endif - - -#ifdef SWAP_HANDS_ENABLE -const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { - /* Left hand, matrix positions */ - {{0, 4}, {3, 4}, {2, 4}, {5, 4}, {4, 4}}, - {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}}, - {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}}, - {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}}, - /* Right hand, matrix positions */ - {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}}, - {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}}, - {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}}, - {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}}, - }; -#endif diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/mcuconf.h b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/mcuconf.h deleted file mode 100644 index f194dd225ced..000000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/mcuconf.h +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright 2022 Charly Delay (@0xcharly) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include_next - -#undef RP_SPI_USE_SPI1 -#define RP_SPI_USE_SPI1 TRUE - -#undef RP_I2C_USE_I2C1 -#define RP_I2C_USE_I2C1 TRUE diff --git a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/rules.mk deleted file mode 100644 index a1be9cb8fd14..000000000000 --- a/keyboards/bastardkb/dilemma/3x5_2/keymaps/drashna/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -SWAP_HANDS_ENABLE = no -AUTOCORRECT_ENABLE = yes -CAPS_WORD_ENABLE = yes -CONSOLE_ENABLE = yes -KEYLOGGER_ENABLE = no -WPM_ENABLE = yes -OLED_ENABLE = yes diff --git a/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk b/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk index 1e33cc108651..227d42fa24db 100644 --- a/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk +++ b/keyboards/bastardkb/dilemma/3x5_2/splinky/rules.mk @@ -22,6 +22,3 @@ POINTING_DEVICE_ENABLE = yes POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c # DIY version uses I2C. SPLIT_KEYBOARD = yes - -# RP2040-specific options -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. diff --git a/keyboards/bastardkb/dilemma/3x5_3/config.h b/keyboards/bastardkb/dilemma/3x5_3/config.h index 8604597ff8ab..d25bb0752845 100644 --- a/keyboards/bastardkb/dilemma/3x5_3/config.h +++ b/keyboards/bastardkb/dilemma/3x5_3/config.h @@ -47,7 +47,6 @@ # define RGB_MATRIX_LED_COUNT 36 # define RGB_MATRIX_SPLIT { 18, 18 } # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 -# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS # define RGB_DISABLE_WHEN_USB_SUSPENDED # define RGB_MATRIX_KEYPRESSES #endif diff --git a/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c index 2c262521bc82..b55d99b56b72 100644 --- a/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c +++ b/keyboards/bastardkb/dilemma/3x5_3/keymaps/bstiq/keymap.c @@ -210,7 +210,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { void rgb_matrix_update_pwm_buffers(void); #endif -void shutdown_user(void) { +bool shutdown_user(bool jump_to_bootloader) { #ifdef RGBLIGHT_ENABLE rgblight_enable_noeeprom(); rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); @@ -220,4 +220,5 @@ void shutdown_user(void) { rgb_matrix_set_color_all(RGB_RED); rgb_matrix_update_pwm_buffers(); #endif // RGB_MATRIX_ENABLE + return true; } diff --git a/keyboards/bastardkb/dilemma/3x5_3/rules.mk b/keyboards/bastardkb/dilemma/3x5_3/rules.mk index 2b52cffbf707..3cdb41160c21 100644 --- a/keyboards/bastardkb/dilemma/3x5_3/rules.mk +++ b/keyboards/bastardkb/dilemma/3x5_3/rules.mk @@ -22,6 +22,3 @@ POINTING_DEVICE_ENABLE = yes POINTING_DEVICE_DRIVER = cirque_pinnacle_spi SPLIT_KEYBOARD = yes - -# RP2040-specific options -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. diff --git a/keyboards/bastardkb/dilemma/4x6_4/4x6_4.c b/keyboards/bastardkb/dilemma/4x6_4/4x6_4.c new file mode 100644 index 000000000000..c80ccbc8eb83 --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/4x6_4.c @@ -0,0 +1,59 @@ +/** + * Copyright 2020 Christopher Courtney (@drashna) + * Copyright 2021 Quentin LEBASTARD + * Copyright 2022 Charly Delay (@0xcharly) + * Copyright 2023 casuanoob (@casuanoob) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Publicw License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef SWAP_HANDS_ENABLE +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + /* Left hand, matrix positions */ + {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}}, + {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}}, + {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}}, + {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}}, + {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}}, + /* Right hand, matrix positions */ + {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}}, + {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}}, + {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}}, + {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}}, + {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}} +}; + +# ifdef ENCODER_MAP_ENABLE +const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0}; +# endif +#endif + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + switch (index) { + case 0: // Left-half encoder, mouse scroll. + tap_code(clockwise ? KC_MS_WH_DOWN : KC_MS_WH_UP); + break; + case 1: // Right-half encoder, volume control. + tap_code(clockwise ? KC_AUDIO_VOL_UP : KC_AUDIO_VOL_DOWN); + break; + } + return true; +} +#endif // ENCODER_ENABLE diff --git a/keyboards/bastardkb/dilemma/4x6_4/config.h b/keyboards/bastardkb/dilemma/4x6_4/config.h new file mode 100644 index 000000000000..9c76cb76f9e0 --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/config.h @@ -0,0 +1,54 @@ +/** + * Copyright 2022 Charly Delay (@0xcharly) + * Copyright 2023 casuanoob (@casuanoob) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* Handedness. */ +#define SPLIT_HAND_PIN GP29 +#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left. + +/* VBUS detection. */ +#define USB_VBUS_PIN GP19 + +/* CRC. */ +#define CRC8_USE_TABLE +#define CRC8_OPTIMIZE_SPEED + +/* Cirque trackpad over SPI. */ +#define SPI_DRIVER SPID0 +#define SPI_SCK_PIN GP22 +#define SPI_MOSI_PIN GP23 +#define SPI_MISO_PIN GP20 +#define POINTING_DEVICE_CS_PIN GP21 +#undef CIRQUE_PINNACLE_DIAMETER_MM +#define CIRQUE_PINNACLE_DIAMETER_MM 40 + +/* Reset. */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17 +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +/* RGB matrix support. */ +#define SPLIT_TRANSPORT_MIRROR +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +// Startup values. +#define RGB_MATRIX_DEFAULT_VAL 64 +#define RGB_MATRIX_DEFAULT_SPD 32 diff --git a/keyboards/bastardkb/dilemma/4x6_4/halconf.h b/keyboards/bastardkb/dilemma/4x6_4/halconf.h new file mode 100644 index 000000000000..57d15376d63a --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/halconf.h @@ -0,0 +1,22 @@ +/** + * Copyright 2022 Charly Delay (@0xcharly) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/bastardkb/dilemma/4x6_4/info.json b/keyboards/bastardkb/dilemma/4x6_4/info.json new file mode 100644 index 000000000000..ba07a7fccf28 --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/info.json @@ -0,0 +1,266 @@ +{ + "keyboard_name": "Dilemma Max", + "usb": { + "device_version": "1.0.0", + "pid": "0x1837" + }, + "processor": "RP2040", + "bootloader": "rp2040", + "board": "GENERIC_RP_RP2040", + "matrix_pins": { + "cols": ["GP14", "GP8", "GP9", "GP7", "GP6", "GP28"], + "rows": ["GP15", "GP4", "GP5", "GP27", "GP26"] + }, + "diode_direction": "ROW2COL", + "split": { + "enabled": true, + "soft_serial_pin": "GP1", + "bootmagic": { + "matrix": [5, 0] + } + }, + "encoder": { + "enabled" : true, + "rotary" : [ + {"pin_a": "GP25", "pin_b": "GP24"} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true, + "caps_word": true, + "tri_layer": true + }, + "ws2812": { + "pin": "GP10", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "ws2812", + "split_count": [52, 52], + "max_brightness": 176, + "center_point": [112, 28], + "animations": { + "solid_color": true, + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "layout": [ + {"x": 81, "y": 4, "flags": 2}, + {"x": 65, "y": 2, "flags": 2}, + {"x": 40, "y": 0, "flags": 2}, + {"x": 29, "y": 9, "flags": 2}, + {"x": 16, "y": 9, "flags": 2}, + {"x": 0, "y": 16, "flags": 2}, + {"x": 0, "y": 29, "flags": 2}, + {"x": 0, "y": 40, "flags": 2}, + {"x": 5, "y": 50, "flags": 2}, + {"x": 17, "y": 49, "flags": 2}, + {"x": 28, "y": 44, "flags": 2}, + {"x": 40, "y": 43, "flags": 2}, + {"x": 49, "y": 51, "flags": 2}, + {"x": 62, "y": 53, "flags": 2}, + {"x": 73, "y": 56, "flags": 2}, + {"x": 85, "y": 59, "flags": 2}, + {"x": 100, "y": 64, "flags": 2}, + {"x": 106, "y": 55, "flags": 2}, + {"x": 107, "y": 45, "flags": 2}, + {"x": 91, "y": 51, "flags": 2}, + {"x": 94, "y": 40, "flags": 2}, + {"x": 108, "y": 33, "flags": 2}, + {"x": 106, "y": 25, "flags": 2}, + {"x": 108, "y": 16, "flags": 2}, + + {"matrix": [0, 5], "x": 75, "y": 10, "flags": 4}, + {"matrix": [0, 4], "x": 62, "y": 9, "flags": 4}, + {"matrix": [0, 3], "x": 49, "y": 6, "flags": 4}, + {"matrix": [0, 2], "x": 35, "y": 10, "flags": 4}, + {"matrix": [0, 1], "x": 22, "y": 16, "flags": 4}, + {"matrix": [0, 0], "x": 9, "y": 16, "flags": 1}, + {"matrix": [1, 0], "x": 9, "y": 27, "flags": 1}, + {"matrix": [1, 1], "x": 22, "y": 27, "flags": 4}, + {"matrix": [1, 2], "x": 35, "y": 20, "flags": 4}, + {"matrix": [1, 3], "x": 49, "y": 17, "flags": 4}, + {"matrix": [1, 4], "x": 62, "y": 19, "flags": 4}, + {"matrix": [1, 5], "x": 75, "y": 21, "flags": 4}, + {"matrix": [2, 5], "x": 75, "y": 31, "flags": 4}, + {"matrix": [2, 4], "x": 62, "y": 30, "flags": 4}, + {"matrix": [2, 3], "x": 49, "y": 27, "flags": 4}, + {"matrix": [2, 2], "x": 35, "y": 31, "flags": 4}, + {"matrix": [2, 1], "x": 22, "y": 37, "flags": 4}, + {"matrix": [2, 0], "x": 9, "y": 37, "flags": 1}, + {"matrix": [3, 0], "x": 9, "y": 48, "flags": 1}, + {"matrix": [3, 1], "x": 22, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 35, "y": 41, "flags": 4}, + {"matrix": [3, 3], "x": 49, "y": 38, "flags": 4}, + {"matrix": [3, 4], "x": 62, "y": 40, "flags": 4}, + {"matrix": [3, 5], "x": 75, "y": 42, "flags": 4}, + {"matrix": [4, 3], "x": 54, "y": 51, "flags": 4}, + {"matrix": [4, 1], "x": 68, "y": 53, "flags": 4}, + {"matrix": [4, 2], "x": 81, "y": 57, "flags": 4}, + {"matrix": [4, 4], "x": 92, "y": 64, "flags": 4}, + + {"x": 143, "y": 4, "flags": 2}, + {"x": 159, "y": 2, "flags": 2}, + {"x": 184, "y": 0, "flags": 2}, + {"x": 195, "y": 9, "flags": 2}, + {"x": 208, "y": 9, "flags": 2}, + {"x": 224, "y": 16, "flags": 2}, + {"x": 224, "y": 29, "flags": 2}, + {"x": 224, "y": 40, "flags": 2}, + {"x": 219, "y": 50, "flags": 2}, + {"x": 207, "y": 49, "flags": 2}, + {"x": 196, "y": 44, "flags": 2}, + {"x": 184, "y": 43, "flags": 2}, + {"x": 176, "y": 51, "flags": 2}, + {"x": 162, "y": 53, "flags": 2}, + {"x": 151, "y": 56, "flags": 2}, + {"x": 139, "y": 59, "flags": 2}, + {"x": 124, "y": 64, "flags": 2}, + {"x": 118, "y": 55, "flags": 2}, + {"x": 117, "y": 45, "flags": 2}, + {"x": 133, "y": 51, "flags": 2}, + {"x": 130, "y": 40, "flags": 2}, + {"x": 116, "y": 33, "flags": 2}, + {"x": 118, "y": 25, "flags": 2}, + {"x": 116, "y": 16, "flags": 2}, + + {"matrix": [5, 5], "x": 149, "y": 10, "flags": 4}, + {"matrix": [5, 4], "x": 162, "y": 9, "flags": 4}, + {"matrix": [5, 3], "x": 175, "y": 6, "flags": 4}, + {"matrix": [5, 2], "x": 189, "y": 10, "flags": 4}, + {"matrix": [5, 1], "x": 202, "y": 16, "flags": 4}, + {"matrix": [5, 0], "x": 215, "y": 16, "flags": 1}, + {"matrix": [6, 0], "x": 215, "y": 27, "flags": 1}, + {"matrix": [6, 1], "x": 202, "y": 27, "flags": 4}, + {"matrix": [6, 2], "x": 189, "y": 20, "flags": 4}, + {"matrix": [6, 3], "x": 175, "y": 17, "flags": 4}, + {"matrix": [6, 4], "x": 162, "y": 19, "flags": 4}, + {"matrix": [6, 5], "x": 149, "y": 21, "flags": 4}, + {"matrix": [7, 5], "x": 149, "y": 31, "flags": 4}, + {"matrix": [7, 4], "x": 162, "y": 30, "flags": 4}, + {"matrix": [7, 3], "x": 175, "y": 27, "flags": 4}, + {"matrix": [7, 2], "x": 189, "y": 31, "flags": 4}, + {"matrix": [7, 1], "x": 202, "y": 37, "flags": 4}, + {"matrix": [7, 0], "x": 215, "y": 37, "flags": 1}, + {"matrix": [8, 0], "x": 215, "y": 48, "flags": 1}, + {"matrix": [8, 1], "x": 202, "y": 48, "flags": 4}, + {"matrix": [8, 2], "x": 189, "y": 41, "flags": 4}, + {"matrix": [8, 3], "x": 175, "y": 38, "flags": 4}, + {"matrix": [8, 4], "x": 162, "y": 40, "flags": 4}, + {"matrix": [8, 5], "x": 149, "y": 42, "flags": 4}, + {"matrix": [9, 4], "x": 170, "y": 51, "flags": 4}, + {"matrix": [9, 2], "x": 156, "y": 53, "flags": 4}, + {"matrix": [9, 1], "x": 143, "y": 57, "flags": 4}, + {"matrix": [9, 3], "x": 132, "y": 64, "flags": 4} + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"L00", "matrix": [0, 0], "x":0, "y":0}, + {"label":"L01", "matrix": [0, 1], "x":1, "y":0}, + {"label":"L02", "matrix": [0, 2], "x":2, "y":0}, + {"label":"L03", "matrix": [0, 3], "x":3, "y":0}, + {"label":"L04", "matrix": [0, 4], "x":4, "y":0}, + {"label":"L05", "matrix": [0, 5], "x":5, "y":0}, + {"label":"R05", "matrix": [5, 5], "x":8, "y":0}, + {"label":"R04", "matrix": [5, 4], "x":9, "y":0}, + {"label":"R03", "matrix": [5, 3], "x":10, "y":0}, + {"label":"R02", "matrix": [5, 2], "x":11, "y":0}, + {"label":"R01", "matrix": [5, 1], "x":12, "y":0}, + {"label":"R00", "matrix": [5, 0], "x":13, "y":0}, + {"label":"L10", "matrix": [1, 0], "x":0, "y":1}, + {"label":"L11", "matrix": [1, 1], "x":1, "y":1}, + {"label":"L12", "matrix": [1, 2], "x":2, "y":1}, + {"label":"L13", "matrix": [1, 3], "x":3, "y":1}, + {"label":"L14", "matrix": [1, 4], "x":4, "y":1}, + {"label":"L15", "matrix": [1, 5], "x":5, "y":1}, + {"label":"R15", "matrix": [6, 5], "x":8, "y":1}, + {"label":"R14", "matrix": [6, 4], "x":9, "y":1}, + {"label":"R13", "matrix": [6, 3], "x":10, "y":1}, + {"label":"R12", "matrix": [6, 2], "x":11, "y":1}, + {"label":"R11", "matrix": [6, 1], "x":12, "y":1}, + {"label":"R10", "matrix": [6, 0], "x":13, "y":1}, + {"label":"L20", "matrix": [2, 0], "x":0, "y":2}, + {"label":"L21", "matrix": [2, 1], "x":1, "y":2}, + {"label":"L22", "matrix": [2, 2], "x":2, "y":2}, + {"label":"L23", "matrix": [2, 3], "x":3, "y":2}, + {"label":"L24", "matrix": [2, 4], "x":4, "y":2}, + {"label":"L25", "matrix": [2, 5], "x":5, "y":2}, + {"label":"R25", "matrix": [7, 5], "x":8, "y":2}, + {"label":"R24", "matrix": [7, 4], "x":9, "y":2}, + {"label":"R23", "matrix": [7, 3], "x":10, "y":2}, + {"label":"R22", "matrix": [7, 2], "x":11, "y":2}, + {"label":"R21", "matrix": [7, 1], "x":12, "y":2}, + {"label":"R20", "matrix": [7, 0], "x":13, "y":2}, + {"label":"L30", "matrix": [3, 0], "x":0, "y":3}, + {"label":"L31", "matrix": [3, 1], "x":1, "y":3}, + {"label":"L32", "matrix": [3, 2], "x":2, "y":3}, + {"label":"L33", "matrix": [3, 3], "x":3, "y":3}, + {"label":"L34", "matrix": [3, 4], "x":4, "y":3}, + {"label":"L35", "matrix": [3, 5], "x":5, "y":3}, + {"label":"R35", "matrix": [8, 5], "x":8, "y":3}, + {"label":"R34", "matrix": [8, 4], "x":9, "y":3}, + {"label":"R33", "matrix": [8, 3], "x":10, "y":3}, + {"label":"R32", "matrix": [8, 2], "x":11, "y":3}, + {"label":"R31", "matrix": [8, 1], "x":12, "y":3}, + {"label":"R30", "matrix": [8, 0], "x":13, "y":3}, + {"label":"L43", "matrix": [4, 3], "x":2.5, "y":4}, + {"label":"L41", "matrix": [4, 1], "x":3.5, "y":4}, + {"label":"L42", "matrix": [4, 2], "x":4.5, "y":4}, + {"label":"L44", "matrix": [4, 4], "x":5.5, "y":4}, + {"label":"R44", "matrix": [9, 4], "x":7.5, "y":4}, + {"label":"R42", "matrix": [9, 2], "x":8.5, "y":4}, + {"label":"R41", "matrix": [9, 1], "x":9.5, "y":4}, + {"label":"R43", "matrix": [9, 3], "x":10.5, "y":4} + ] + } + } +} diff --git a/keyboards/bastardkb/dilemma/4x6_4/keymaps/default/keymap.c b/keyboards/bastardkb/dilemma/4x6_4/keymaps/default/keymap.c new file mode 100644 index 000000000000..2e5564f5e931 --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/keymaps/default/keymap.c @@ -0,0 +1,73 @@ +/** + * Copyright 2021 Charly Delay (@0xcharly) + * Copyright 2023 casuanoob (@casuanoob) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 dilemma_keymap_layers { + LAYER_BASE = 0, + LAYER_LOWER, + LAYER_RAISE, +}; + +#define LOWER MO(LAYER_LOWER) +#define RAISE MO(LAYER_RAISE) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [LAYER_BASE] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + KC_LALT, KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT, KC_DEL, KC_LGUI + // ╰───────────────────────────────────╯ ╰───────────────────────────────────╯ + ), + + [LAYER_LOWER] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______ + // ╰───────────────────────────────────╯ ╰───────────────────────────────────╯ + ), + + [LAYER_RAISE] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX + // ╰───────────────────────────────────╯ ╰───────────────────────────────────╯ + ), +}; +// clang-format on diff --git a/keyboards/bastardkb/dilemma/4x6_4/keymaps/default/readme.md b/keyboards/bastardkb/dilemma/4x6_4/keymaps/default/readme.md new file mode 100644 index 000000000000..2005c2fec91c --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/keymaps/default/readme.md @@ -0,0 +1,2 @@ +# Dilemma Max (4x6+4) default keymap + diff --git a/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/config.h b/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/config.h new file mode 100644 index 000000000000..24322f990440 --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/config.h @@ -0,0 +1,20 @@ +/** + * Copyright 2021 Charly Delay (@0xcharly) + * Copyright 2023 casuanoob (@casuanoob) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/keymap.c b/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/keymap.c new file mode 100644 index 000000000000..6ac228d7231f --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/keymap.c @@ -0,0 +1,125 @@ +/** + * Copyright 2021 Charly Delay (@0xcharly) + * Copyright 2023 casuanoob (@casuanoob) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 dilemma_keymap_layers { + LAYER_BASE = 0, + LAYER_LOWER, + LAYER_RAISE, + LAYER_POINTER, +}; + +// Automatically enable sniping-mode on the pointer layer. +// #define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER + +#define LOWER MO(LAYER_LOWER) +#define RAISE MO(LAYER_RAISE) +#define PT_Z LT(LAYER_POINTER, KC_Z) +#define PT_SLSH LT(LAYER_POINTER, KC_SLSH) + +#ifndef POINTING_DEVICE_ENABLE +# define DRGSCRL KC_NO +# define DPI_MOD KC_NO +# define S_D_MOD KC_NO +# define SNIPING KC_NO +#endif // !POINTING_DEVICE_ENABLE + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [LAYER_BASE] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_LCTL, PT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, PT_SLSH, KC_LALT, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + KC_LALT, KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT, KC_DEL, KC_MUTE + // ╰───────────────────────────────────╯ ╰───────────────────────────────────╯ + ), + + [LAYER_LOWER] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX + // ╰───────────────────────────────────╯ ╰───────────────────────────────────╯ + ), + + [LAYER_RAISE] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX + // ╰───────────────────────────────────╯ ╰───────────────────────────────────╯ + ), + + [LAYER_POINTER] = LAYOUT( + // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX, + // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤ + XXXXXXX, _______, DRGSCRL, SNIPING, EE_CLR, QK_BOOT, QK_BOOT, EE_CLR, SNIPING, DRGSCRL, _______, XXXXXXX, + // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯ + XXXXXXX, KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1, KC_BTN2, XXXXXXX + // ╰───────────────────────────────────╯ ╰───────────────────────────────────╯ + ), +}; +// clang-format on + +#ifdef POINTING_DEVICE_ENABLE +# ifdef DILEMMA_AUTO_SNIPING_ON_LAYER +layer_state_t layer_state_set_user(layer_state_t state) { + dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER)); + return state; +} +# endif // DILEMMA_AUTO_SNIPING_ON_LAYER +#endif // POINTING_DEVICE_ENABLEE + +#ifdef RGB_MATRIX_ENABLE +// Forward-declare this helper function since it is defined in rgb_matrix.c. +void rgb_matrix_update_pwm_buffers(void); +#endif + +#ifdef ENCODER_MAP_ENABLE +// clang-format off +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [LAYER_BASE] = {ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLU, KC_VOLD)}, + [LAYER_LOWER] = {ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_LEFT, KC_RGHT)}, + [LAYER_RAISE] = {ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLU, KC_VOLD)}, + [LAYER_POINTER] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI)}, +}; +// clang-format on +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/readme.md b/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/readme.md new file mode 100644 index 000000000000..f3636c8a40e3 --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/readme.md @@ -0,0 +1,47 @@ +# Dilemma Max `via` keymap + +The Dilemma Max `via` keymap is based on the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap, with some features and changes specific to the Dilemma. + +This layout also supports VIA. + +## Customizing the keymap + +### Dynamic DPI scaling + +Use the following keycodes to change the default DPI: + +- `POINTER_DEFAULT_DPI_FORWARD`: increases the DPI; decreases when shifted; +- `POINTER_DEFAULT_DPI_REVERSE`: decreases the DPI; increases when shifted. + +There's a maximum of 16 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information. + +Use the following keycodes to change the sniping mode DPI: + +- `POINTER_SNIPING_DPI_FORWARD`: increases the DPI; decreases when shifted; +- `POINTER_SNIPING_DPI_REVERSE`: decreases the DPI; increases when shifted. + +There's a maximum of 4 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information. + +### Drag-scroll + +Use the `DRAGSCROLL_MODE` keycode to enable drag-scroll on hold. Use the `DRAGSCROLL_TOGGLE` keycode to enable/disable drag-scroll on key press. + +### Circular scroll + +By default, the firmware is configured to enable the circular scroll feature on Cirque trackpad. + +To disable this, add the following to your keymap: + +```c +#undef POINTING_DEVICE_GESTURES_SCROLL_ENABLE +``` + +### Sniping + +Use the `SNIPING_MODE` keycode to enable sniping mode on hold. Use the `SNIPING_TOGGLE` keycode to enable/disable sniping mode on key press. + +Change the value of `DILEMMA_AUTO_SNIPING_ON_LAYER` to automatically enable sniping mode on layer change. By default, sniping mode is enabled on the pointer layer: + +```c +#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER +``` diff --git a/keyboards/keychron/q1/ansi_encoder/keymaps/via/rules.mk b/keyboards/bastardkb/dilemma/4x6_4/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q1/ansi_encoder/keymaps/via/rules.mk rename to keyboards/bastardkb/dilemma/4x6_4/keymaps/via/rules.mk diff --git a/keyboards/bastardkb/dilemma/4x6_4/mcuconf.h b/keyboards/bastardkb/dilemma/4x6_4/mcuconf.h new file mode 100644 index 000000000000..52b726a56d5f --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/mcuconf.h @@ -0,0 +1,23 @@ +/** + * Copyright 2022 Charly Delay (@0xcharly) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/bastardkb/dilemma/4x6_4/readme.md b/keyboards/bastardkb/dilemma/4x6_4/readme.md new file mode 100644 index 000000000000..30dd2a99f1de --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/readme.md @@ -0,0 +1,5 @@ +# Dilemma Max (4x6+4) + +This keyboard is an upsized version of the [3x5+3 Dilemma](../3x5_3/). + +The Dilemma Max is available at [bastardkb.com](https://bastardkb.com). diff --git a/keyboards/bastardkb/dilemma/4x6_4/rules.mk b/keyboards/bastardkb/dilemma/4x6_4/rules.mk new file mode 100644 index 000000000000..4923c2c84a50 --- /dev/null +++ b/keyboards/bastardkb/dilemma/4x6_4/rules.mk @@ -0,0 +1,4 @@ +SERIAL_DRIVER = vendor + +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = cirque_pinnacle_spi diff --git a/keyboards/bastardkb/dilemma/dilemma.c b/keyboards/bastardkb/dilemma/dilemma.c index 5452f9e7f6a7..7c87fdcadd61 100644 --- a/keyboards/bastardkb/dilemma/dilemma.c +++ b/keyboards/bastardkb/dilemma/dilemma.c @@ -343,3 +343,20 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } + +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } +#ifdef RGBLIGHT_ENABLE + rgblight_enable_noeeprom(); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + rgblight_setrgb(RGB_RED); +#endif // RGBLIGHT_ENABLE +#ifdef RGB_MATRIX_ENABLE + void rgb_matrix_update_pwm_buffers(void); + rgb_matrix_set_color_all(RGB_RED); + rgb_matrix_update_pwm_buffers(); +#endif // RGB_MATRIX_ENABLE + return true; +} diff --git a/keyboards/bastardkb/dilemma/readme.md b/keyboards/bastardkb/dilemma/readme.md index ac3c818bd6f1..876400ae52ac 100644 --- a/keyboards/bastardkb/dilemma/readme.md +++ b/keyboards/bastardkb/dilemma/readme.md @@ -1,16 +1,21 @@ # Dilemma -A very small keyboard made for ergonomic enthusiasts. +A family of split keyboards with embedded RP2040 controllers, support for Cirque GlidePoint circle trackpads, and SPI + I2C breakouts for other peripherals - Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/) -- Hardware Supported: RP2040-based controller (_eg._ Splinky, Elite-c, ...) +- Hardware Supported: [Bastardkb Dilemma](https://github.com/Bastardkb/Dilemma) - Hardware Availability: [Bastardkb.com](https://bastardkb.com/) -A pre-assembled version (with embedded controller) is also available. +A DIY version of the 3x5_2 PCB with promicro compatible footprint is also available. Make example for this keyboard (after setting up your build environment): - make bastardkb/dilemma/3x5_2/splinky:default - make bastardkb/dilemma/3x5_2/assembled:default + make bastardkb/dilemma/3x5_3:default + make bastardkb/dilemma/4x6_4:default + +Flashing example for this keyboard: + + make bastardkb/dilemma/3x5_3:default:flash + make bastardkb/dilemma/4x6_4:default:flash See the [keyboard build instructions](http://docs.bastardkb.com/) diff --git a/keyboards/bastardkb/scylla/blackpill/info.json b/keyboards/bastardkb/scylla/blackpill/info.json index 24fb8bc701bd..8d7cb4c823af 100644 --- a/keyboards/bastardkb/scylla/blackpill/info.json +++ b/keyboards/bastardkb/scylla/blackpill/info.json @@ -3,6 +3,9 @@ "usb": { "device_version": "1.0.0" }, + "eeprom": { + "driver": "spi" + }, "rgb_matrix": { "driver": "ws2812" }, diff --git a/keyboards/bastardkb/scylla/blackpill/rules.mk b/keyboards/bastardkb/scylla/blackpill/rules.mk index 8c0e9b589186..b5612ce38a86 100644 --- a/keyboards/bastardkb/scylla/blackpill/rules.mk +++ b/keyboards/bastardkb/scylla/blackpill/rules.mk @@ -21,5 +21,4 @@ SPLIT_KEYBOARD = yes MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint KEYBOARD_SHARED_EP = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h index 33c62549a10d..ec538f8a55b6 100644 --- a/keyboards/bastardkb/scylla/config.h +++ b/keyboards/bastardkb/scylla/config.h @@ -24,7 +24,6 @@ # define RGB_MATRIX_LED_COUNT 58 # define RGB_MATRIX_SPLIT { 29, 29 } # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 -# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS # define RGB_DISABLE_WHEN_USB_SUSPENDED # define RGB_MATRIX_KEYPRESSES #endif diff --git a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 5a3153ae37ab..000000000000 --- a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT_split_4x6_5( \ -XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ - K32, K33, K34, K35, K36, K37, \ - XXX, XXX, XXX, XXX \ -) diff --git a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/bastardkb/scylla/v2/splinky_2/rules.mk b/keyboards/bastardkb/scylla/v2/splinky_2/rules.mk index 274e95c039d1..53f4c0baa87c 100644 --- a/keyboards/bastardkb/scylla/v2/splinky_2/rules.mk +++ b/keyboards/bastardkb/scylla/v2/splinky_2/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/scylla/v2/splinky_3/rules.mk b/keyboards/bastardkb/scylla/v2/splinky_3/rules.mk index 274e95c039d1..53f4c0baa87c 100644 --- a/keyboards/bastardkb/scylla/v2/splinky_3/rules.mk +++ b/keyboards/bastardkb/scylla/v2/splinky_3/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/skeletyl/blackpill/info.json b/keyboards/bastardkb/skeletyl/blackpill/info.json index 1d256392819f..c0f0d6a3b118 100644 --- a/keyboards/bastardkb/skeletyl/blackpill/info.json +++ b/keyboards/bastardkb/skeletyl/blackpill/info.json @@ -3,6 +3,9 @@ "usb": { "device_version": "1.0.0" }, + "eeprom": { + "driver": "spi" + }, "rgb_matrix": { "driver": "ws2812" }, diff --git a/keyboards/bastardkb/skeletyl/blackpill/rules.mk b/keyboards/bastardkb/skeletyl/blackpill/rules.mk index 8c0e9b589186..b5612ce38a86 100644 --- a/keyboards/bastardkb/skeletyl/blackpill/rules.mk +++ b/keyboards/bastardkb/skeletyl/blackpill/rules.mk @@ -21,5 +21,4 @@ SPLIT_KEYBOARD = yes MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint KEYBOARD_SHARED_EP = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/skeletyl/config.h b/keyboards/bastardkb/skeletyl/config.h index a7f9c9438762..58dacb5c53b0 100644 --- a/keyboards/bastardkb/skeletyl/config.h +++ b/keyboards/bastardkb/skeletyl/config.h @@ -24,7 +24,6 @@ # define RGB_MATRIX_LED_COUNT 36 # define RGB_MATRIX_SPLIT { 18, 18 } # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 -# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS # define RGB_DISABLE_WHEN_USB_SUSPENDED # define RGB_MATRIX_KEYPRESSES #endif diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk index 274e95c039d1..53f4c0baa87c 100644 --- a/keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk +++ b/keyboards/bastardkb/skeletyl/v2/splinky_2/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk index 274e95c039d1..53f4c0baa87c 100644 --- a/keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk +++ b/keyboards/bastardkb/skeletyl/v2/splinky_3/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/tbkmini/blackpill/info.json b/keyboards/bastardkb/tbkmini/blackpill/info.json index dcdce8f63b5b..c41046085746 100644 --- a/keyboards/bastardkb/tbkmini/blackpill/info.json +++ b/keyboards/bastardkb/tbkmini/blackpill/info.json @@ -3,6 +3,9 @@ "usb": { "device_version": "1.0.0" }, + "eeprom": { + "driver": "spi" + }, "rgb_matrix": { "driver": "ws2812" }, diff --git a/keyboards/bastardkb/tbkmini/blackpill/rules.mk b/keyboards/bastardkb/tbkmini/blackpill/rules.mk index 8c0e9b589186..b5612ce38a86 100644 --- a/keyboards/bastardkb/tbkmini/blackpill/rules.mk +++ b/keyboards/bastardkb/tbkmini/blackpill/rules.mk @@ -21,5 +21,4 @@ SPLIT_KEYBOARD = yes MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint KEYBOARD_SHARED_EP = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart diff --git a/keyboards/bastardkb/tbkmini/config.h b/keyboards/bastardkb/tbkmini/config.h index ea18f4349e7b..1a1540b280da 100644 --- a/keyboards/bastardkb/tbkmini/config.h +++ b/keyboards/bastardkb/tbkmini/config.h @@ -24,7 +24,6 @@ # define RGB_MATRIX_LED_COUNT 42 # define RGB_MATRIX_SPLIT { 21, 21 } # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 -# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS # define RGB_DISABLE_WHEN_USB_SUSPENDED # define RGB_MATRIX_KEYPRESSES #endif diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk index 274e95c039d1..53f4c0baa87c 100644 --- a/keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk +++ b/keyboards/bastardkb/tbkmini/v2/splinky_2/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk index 274e95c039d1..53f4c0baa87c 100644 --- a/keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk +++ b/keyboards/bastardkb/tbkmini/v2/splinky_3/rules.mk @@ -1,7 +1,3 @@ -# RP2040-specific options -ALLOW_WARNINGS = yes -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS. - # Build Options # change yes to no to disable # diff --git a/keyboards/beekeeb/piantor/estardyn/config.h b/keyboards/beekeeb/piantor/estardyn/config.h new file mode 100644 index 000000000000..10b9d99344ae --- /dev/null +++ b/keyboards/beekeeb/piantor/estardyn/config.h @@ -0,0 +1,6 @@ +#define WS2812_DI_PIN GP23 +#define RGBLED_NUM 2 +#define RGBLED_SPLIT { 1, 1 } + +#define RGBLIGHT_LAYERS +#define RGBLIGHT_LAYERS_RETAIN_VAL diff --git a/keyboards/beekeeb/piantor/estardyn/readme.md b/keyboards/beekeeb/piantor/estardyn/readme.md new file mode 100644 index 000000000000..df803dad7977 --- /dev/null +++ b/keyboards/beekeeb/piantor/estardyn/readme.md @@ -0,0 +1,11 @@ +# EstarDyn Raspberry Pi Pico Clone + +Like [this](https://www.aliexpress.us/item/3256803610338545.html) + +Because of a difference in how `VIN` and `VOUT` (called `VBUS` and `VSYS` on the genuine Pico) are wired, +`USB_VBUS_PIN` cannot be used. + +For the same reason as above, you will have to bridge the `VIN` and `VOUT` pins for the right half to be powered properly + +The EstarDyn clone has a ws2812 wired to pin `GP23`. Both (one per half) have been enabled +in this config and configured as layer indicator leds diff --git a/keyboards/beekeeb/piantor/estardyn/rules.mk b/keyboards/beekeeb/piantor/estardyn/rules.mk new file mode 100644 index 000000000000..ca767bdc6043 --- /dev/null +++ b/keyboards/beekeeb/piantor/estardyn/rules.mk @@ -0,0 +1,3 @@ +RGBLIGHT_ENABLE = yes +RGBLIGHT_DRIVER = ws2812 +WS2812_DRIVER = vendor diff --git a/keyboards/beekeeb/piantor/keymaps/vial/config.h b/keyboards/beekeeb/piantor/keymaps/vial/config.h new file mode 100644 index 000000000000..2c1e29fe14b1 --- /dev/null +++ b/keyboards/beekeeb/piantor/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* keyboard uid */ +#define VIAL_KEYBOARD_UID {0xDC, 0x6D, 0x9C, 0x42, 0x53, 0x42, 0x75, 0x0F} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 5 } + +/* default layer count */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 10 diff --git a/keyboards/beekeeb/piantor/keymaps/vial/keymap.c b/keyboards/beekeeb/piantor/keymaps/vial/keymap.c new file mode 100644 index 000000000000..3df7a022add8 --- /dev/null +++ b/keyboards/beekeeb/piantor/keymaps/vial/keymap.c @@ -0,0 +1,85 @@ +// Copyright 2022 Diego Palacios (@diepala) +// SPDX-License-Identifier: GPL-2.0 + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐ + * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│ + * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + * │Ctl│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │ + * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤ + * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│ + * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │GUI├───┐ ┌───┤Alt│ + * └───┤ ├───┐ ┌───┤ ├───┘ + * └───┤Bsp│ │Ent├───┘ + * └───┘ └───┘ + */ + [0] = LAYOUT_split_3x6_3( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LGUI, KC_SPC, KC_BSPC, KC_ENT, KC_SPC, KC_RALT + ) +}; + +#ifdef RGBLIGHT_ENABLE + +const rgblight_segment_t PROGMEM layer0_colors[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 2, 85, 255, 75} +); +const rgblight_segment_t PROGMEM layer1_colors[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 2, 170, 255, 75} +); +const rgblight_segment_t PROGMEM layer2_colors[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 2, 0, 255, 75} +); +const rgblight_segment_t PROGMEM layer3_colors[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 2, 191, 255, 75} +); +const rgblight_segment_t PROGMEM layer4_colors[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 2, 30, 218, 75} +); +const rgblight_segment_t PROGMEM layer5_colors[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 2, 11, 176, 75} +); +const rgblight_segment_t PROGMEM layer6_colors[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 2, 106, 255, 75} +); + +// Now define the array of layers. Later layers take precedence +const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST( + layer0_colors, + layer1_colors, + layer2_colors, + layer3_colors, + layer4_colors, + layer5_colors, + layer6_colors +); + +void keyboard_post_init_user(void) { + // Enable the LED layers + rgblight_layers = rgb_layers; +} + +layer_state_t default_layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + return state; +} + +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + rgblight_set_layer_state(3, layer_state_cmp(state, 3)); + rgblight_set_layer_state(4, layer_state_cmp(state, 4)); + rgblight_set_layer_state(5, layer_state_cmp(state, 5)); + rgblight_set_layer_state(6, layer_state_cmp(state, 6)); + return state; +} + +#endif diff --git a/keyboards/beekeeb/piantor/keymaps/vial/rules.mk b/keyboards/beekeeb/piantor/keymaps/vial/rules.mk new file mode 100644 index 000000000000..b60410dc1a12 --- /dev/null +++ b/keyboards/beekeeb/piantor/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes diff --git a/keyboards/beekeeb/piantor/keymaps/vial/vial.json b/keyboards/beekeeb/piantor/keymaps/vial/vial.json new file mode 100644 index 000000000000..6221ea4535be --- /dev/null +++ b/keyboards/beekeeb/piantor/keymaps/vial/vial.json @@ -0,0 +1,214 @@ +{ + "name": "piantor", + "lighting": "none", + "matrix": { + "rows": 8, + "cols": 6 + }, + "layouts": { + "keymap": [ + [ + { + "x": 3 + }, + "0,3", + { + "x": 7.5 + }, + "4,2" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "0,2", + { + "x": 1 + }, + "0,4", + { + "x": 5.5 + }, + "4,1", + { + "x": 1 + }, + "4,3" + ], + [ + { + "y": -0.9, + "x": 5 + }, + "0,5", + { + "x": 3.5 + }, + "4,0" + ], + [ + { + "y": -0.3500000000000001 + }, + "0,0", + "0,1", + { + "x": 1 + }, + "1,3", + { + "x": 7.5 + }, + "5,2", + { + "x": 1 + }, + "4,4", + "4,5" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "1,2", + { + "x": 1 + }, + "1,4", + { + "x": 5.5 + }, + "5,1", + { + "x": 1 + }, + "5,3" + ], + [ + { + "y": -0.8999999999999999, + "x": 5 + }, + "1,5", + { + "x": 3.5 + }, + "5,0" + ], + [ + { + "y": -0.3500000000000001 + }, + "1,0", + "1,1", + { + "x": 1 + }, + "2,3", + { + "x": 7.5 + }, + "6,2", + { + "x": 1 + }, + "5,4", + "5,5" + ], + [ + { + "y": -0.75, + "x": 2 + }, + "2,2", + { + "x": 1 + }, + "2,4", + { + "x": 5.5 + }, + "6,1", + { + "x": 1 + }, + "6,3" + ], + [ + { + "y": -0.8999999999999999, + "x": 5 + }, + "2,5", + { + "x": 3.5 + }, + "6,0" + ], + [ + { + "y": -0.3500000000000001 + }, + "2,0", + "2,1", + { + "x": 11.5 + }, + "6,4", + "6,5" + ], + [ + { + "r": 5, + "rx": 5, + "ry": 3.5, + "x": 0.09999999999999964 + }, + "3,1" + ], + [ + { + "rx": 10.75 + }, + "7,2" + ], + [ + { + "r": 15, + "rx": 6.5, + "y": 0.20000000000000018, + "x": -0.04999999999999982 + }, + "3,2" + ], + [ + { + "r": -15, + "rx": 8.25, + "y": 0.3900000000000001, + "x": -0.15000000000000036 + }, + "7,0" + ], + [ + { + "r": -5, + "rx": 3.6, + "y": 0.10000000000000009, + "x": 0.20000000000000018 + }, + "3,0" + ], + [ + { + "rx": 9.5, + "y": 0.10000000000000009, + "x": -0.05000000000000071 + }, + "7,1" + ] + ] + } +} diff --git a/keyboards/beekeeb/piantor/rpi_pico/config.h b/keyboards/beekeeb/piantor/rpi_pico/config.h new file mode 100644 index 000000000000..ef4ec3ce9474 --- /dev/null +++ b/keyboards/beekeeb/piantor/rpi_pico/config.h @@ -0,0 +1 @@ +#define USB_VBUS_PIN GP24 diff --git a/layouts/community/ortho_4x12/grahampheath/rules.mk b/keyboards/beekeeb/piantor/rpi_pico/rules.mk similarity index 100% rename from layouts/community/ortho_4x12/grahampheath/rules.mk rename to keyboards/beekeeb/piantor/rpi_pico/rules.mk diff --git a/keyboards/beekeeb/piantor/weact/config.h b/keyboards/beekeeb/piantor/weact/config.h new file mode 100644 index 000000000000..64380f6e6b7f --- /dev/null +++ b/keyboards/beekeeb/piantor/weact/config.h @@ -0,0 +1 @@ +#define USB_VBUS_PIN GP29 diff --git a/layouts/community/ortho_5x12/alfrdmalr/rules.mk b/keyboards/beekeeb/piantor/weact/rules.mk similarity index 100% rename from layouts/community/ortho_5x12/alfrdmalr/rules.mk rename to keyboards/beekeeb/piantor/weact/rules.mk diff --git a/keyboards/beekeeb/piantor_pro/config.h b/keyboards/beekeeb/piantor_pro/config.h new file mode 100644 index 000000000000..4f0be6dbbea0 --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/config.h @@ -0,0 +1,17 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 +#define SERIAL_USART_PIN_SWAP + +#define USB_VBUS_PIN GP19 + +#define SPLIT_HAND_PIN GP17 +#define SPLIT_HAND_PIN_LOW_IS_LEFT diff --git a/keyboards/beekeeb/piantor_pro/info.json b/keyboards/beekeeb/piantor_pro/info.json new file mode 100644 index 000000000000..c85247550e21 --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/info.json @@ -0,0 +1,78 @@ +{ + "manufacturer": "beekeeb", + "keyboard_name": "piantor_pro", + "maintainer": "beekeeb", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP11", "GP12", "GP13", "GP14", "GP15", "GP16"], + "rows": ["GP7", "GP8", "GP9", "GP10"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0xBEEB" + }, + "split": { + "enabled": true + }, + "community_layouts": [ "split_3x6_3" ], + "layouts": { + "LAYOUT_split_3x6_3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0.25}, + {"matrix": [0, 2], "x": 2, "y": 0.125}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.125}, + {"matrix": [0, 5], "x": 5, "y": 0.25}, + {"matrix": [4, 5], "x": 8, "y": 0.25}, + {"matrix": [4, 4], "x": 9, "y": 0.125}, + {"matrix": [4, 3], "x": 10, "y": 0}, + {"matrix": [4, 2], "x": 11, "y": 0.125}, + {"matrix": [4, 1], "x": 12, "y": 0.25}, + {"matrix": [4, 0], "x": 13, "y": 0.25}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.125}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.125}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [5, 5], "x": 8, "y": 1.25}, + {"matrix": [5, 4], "x": 9, "y": 1.125}, + {"matrix": [5, 3], "x": 10, "y": 1}, + {"matrix": [5, 2], "x": 11, "y": 1.125}, + {"matrix": [5, 1], "x": 12, "y": 1.25}, + {"matrix": [5, 0], "x": 13, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.125}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.125}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + {"matrix": [6, 5], "x": 8, "y": 2.25}, + {"matrix": [6, 4], "x": 9, "y": 2.125}, + {"matrix": [6, 3], "x": 10, "y": 2}, + {"matrix": [6, 2], "x": 11, "y": 2.125}, + {"matrix": [6, 1], "x": 12, "y": 2.25}, + {"matrix": [6, 0], "x": 13, "y": 2.25}, + {"matrix": [3, 3], "x": 3.5, "y": 3.25}, + {"matrix": [3, 4], "x": 4.5, "y": 3.5}, + {"matrix": [3, 5], "x": 5.5, "y": 3.75}, + {"matrix": [7, 5], "x": 7.5, "y": 3.75}, + {"matrix": [7, 4], "x": 8.5, "y": 3.5}, + {"matrix": [7, 3], "x": 9.5, "y": 3.25} + ] + } + } +} diff --git a/keyboards/beekeeb/piantor_pro/keymaps/default/keymap.c b/keyboards/beekeeb/piantor_pro/keymaps/default/keymap.c new file mode 100644 index 000000000000..ed09dd7d069f --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT + //`--------------------------' `--------------------------' + + ), + + [1] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, _______, KC_SPC, KC_ENT, MO(3), KC_RALT + //`--------------------------' `--------------------------' + ), + + [2] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT + //`--------------------------' `--------------------------' + ), + + [3] = LAYOUT_split_3x6_3( + //,-----------------------------------------------------. ,-----------------------------------------------------. + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT + //`--------------------------' `--------------------------' + ) +}; diff --git a/keyboards/beekeeb/piantor_pro/readme.md b/keyboards/beekeeb/piantor_pro/readme.md new file mode 100644 index 000000000000..08012e43dff2 --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/readme.md @@ -0,0 +1,20 @@ +# Piantor Pro + +![Piantor Pro](https://i.imgur.com/UPRI64ch.jpg) + +A 42 key hotswappable keyboard with RP2040. + +* Keyboard Maintainer: [beekeeb](https://github.com/beekeeb) +* Hardware Availability: [beekeeb.shop](https://beekeeb.shop) + +Make example for this keyboard (after setting up your build environment): + + make beekeeb/piantor_pro: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). + +## Flashing + +To enter the bootloader mode, disconnect the keyboard from the computer. While holding the BOOT button, connect the keyboard to the computer. + +Run `make beekeeb/piantor_pro:default:flash` or copy the compiled uf2 firmware to the USB mass storage device. diff --git a/keyboards/beekeeb/piantor_pro/rules.mk b/keyboards/beekeeb/piantor_pro/rules.mk new file mode 100644 index 000000000000..161ec22b16e2 --- /dev/null +++ b/keyboards/beekeeb/piantor_pro/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor diff --git a/keyboards/bemeier/bmek/bmek.c b/keyboards/bemeier/bmek/bmek.c index eaae446d6384..dd0372aaee46 100755 --- a/keyboards/bemeier/bmek/bmek.c +++ b/keyboards/bemeier/bmek/bmek.c @@ -15,9 +15,12 @@ */ #include "quantum.h" -__attribute__((weak)) -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } #ifdef RGBLIGHT_ENABLE rgblight_setrgb(255, 0, 0); #endif + return true; } diff --git a/keyboards/bemeier/bmek/config.h b/keyboards/bemeier/bmek/config.h index 455345409626..1deca961a0cb 100755 --- a/keyboards/bemeier/bmek/config.h +++ b/keyboards/bemeier/bmek/config.h @@ -15,6 +15,4 @@ */ #pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 5 #define VIA_EEPROM_CUSTOM_CONFIG_SIZE 20 diff --git a/keyboards/bemeier/bmek/info.json b/keyboards/bemeier/bmek/info.json index 0959f9f3a6f2..31d2b5f9bd96 100755 --- a/keyboards/bemeier/bmek/info.json +++ b/keyboards/bemeier/bmek/info.json @@ -7,6 +7,9 @@ "vid": "0x626D", "pid": "0x656B" }, + "dynamic_keymap": { + "layer_count": 5 + }, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/bestway/bestway.c b/keyboards/bestway/bestway.c new file mode 100644 index 000000000000..e41836ca691b --- /dev/null +++ b/keyboards/bestway/bestway.c @@ -0,0 +1,43 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGBLIGHT_ENABLE + +const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( + {0, 1, HSV_RED} +); + +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + my_capslock_layer +); + +bool led_update_kb(led_t led_state) { + if (!led_update_user(led_state)) { return false; } + rgblight_set_layer_state(0, led_state.caps_lock); + return true; +} + +void keyboard_post_init_kb(void) { + rgblight_layers = my_rgb_layers; + keyboard_post_init_user(); +} + +#endif +void board_init(void) { + AFIO->MAPR |= AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2; +} diff --git a/keyboards/bestway/config.h b/keyboards/bestway/config.h new file mode 100644 index 000000000000..c63a25d9a661 --- /dev/null +++ b/keyboards/bestway/config.h @@ -0,0 +1,22 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 4 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 diff --git a/keyboards/bestway/halconf.h b/keyboards/bestway/halconf.h new file mode 100644 index 000000000000..76f44ff900a3 --- /dev/null +++ b/keyboards/bestway/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/bestway/info.json b/keyboards/bestway/info.json new file mode 100644 index 000000000000..66856115f8bd --- /dev/null +++ b/keyboards/bestway/info.json @@ -0,0 +1,212 @@ +{ + "manufacturer": "meet_lab", + "keyboard_name": "Best", + "maintainer": "yuezp", + "development_board": "bluepill", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["B3", "B9", "B8", "B7", "B6", "B5", "B4", "B10", "A7", "A3", "A4", "A5", "A6", "B0", "B12", "B13", "B14"], + "rows": ["A15", "A10", "A8", "A9", "B15"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "layers": { + "enabled": true, + "override_rgb": false + }, + "brightness_steps": 10, + "led_count": 3, + "saturation_steps": 8 + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0xBB05", + "vid": "0xAA05" + }, + "ws2812": { + "driver": "pwm", + "pin": "B11" + }, + "community_layouts": ["tkl_nofrow_ansi"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [1, 16], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [4, 16], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [1, 16], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [4, 16], "x": 17.25, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/bestway/keymaps/default/keymap.c b/keyboards/bestway/keymaps/default/keymap.c new file mode 100644 index 000000000000..8cddc919321c --- /dev/null +++ b/keyboards/bestway/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_APP, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/bestway/keymaps/via/keymap.c b/keyboards/bestway/keymaps/via/keymap.c new file mode 100644 index 000000000000..ae87243f2406 --- /dev/null +++ b/keyboards/bestway/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_all( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_APP, KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT_all( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk b/keyboards/bestway/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk rename to keyboards/bestway/keymaps/via/rules.mk diff --git a/keyboards/bestway/matrix_diagram.md b/keyboards/bestway/matrix_diagram.md new file mode 100644 index 000000000000..f9757653c125 --- /dev/null +++ b/keyboards/bestway/matrix_diagram.md @@ -0,0 +1,19 @@ +# Matrix Diagram for Best + +``` +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D ││0E │0F │0G │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D ││1E │1F │1G │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴┐2C │ ISO Enter +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ │1D │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │ │3F │ +├────────┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ +│40 │41 │42 │45 │49 │4A │4B │4C ││4E │4F │4G │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │42 │45 │4A │4B │4C │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +``` diff --git a/keyboards/bestway/mcuconf.h b/keyboards/bestway/mcuconf.h new file mode 100644 index 000000000000..206afe376eba --- /dev/null +++ b/keyboards/bestway/mcuconf.h @@ -0,0 +1,21 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once +#include_next + +#undef STM32_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE diff --git a/keyboards/bestway/readme.md b/keyboards/bestway/readme.md new file mode 100644 index 000000000000..c91d09e83f20 --- /dev/null +++ b/keyboards/bestway/readme.md @@ -0,0 +1,27 @@ +# Best - PCB + +![bestway](https://i.imgur.com/5q7i7ayh.jpg) + +A 71 keys keyboard with rgb. +This keyboard use 16mhz HSE and STM32F103 as MCU. + +* Keyboard Maintainer: https://github.com/LXF-YZP +* Hardware Supported: bestway PCB + +Make example for this keyboard (after setting up your build environment): + + make bestway:default + +Flashing example for this keyboard: + + make bestway:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/bestway/rules.mk b/keyboards/bestway/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/bestway/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/bfake/keymaps/mechmerlin/keymap.c b/keyboards/bfake/keymaps/mechmerlin/keymap.c deleted file mode 100644 index fec728d87eb1..000000000000 --- a/keyboards/bfake/keymaps/mechmerlin/keymap.c +++ /dev/null @@ -1,51 +0,0 @@ -/* -Copyright 2017 Luiz Ribeiro - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_all( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, 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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TG(2), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, MO(1), KC_RALT, KC_RGUI, KC_RCTL - ), - [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_NO, KC_DEL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [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_UP, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT - ), - - [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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/bfake/keymaps/mechmerlin/readme.md b/keyboards/bfake/keymaps/mechmerlin/readme.md deleted file mode 100644 index b85b6537c1c6..000000000000 --- a/keyboards/bfake/keymaps/mechmerlin/readme.md +++ /dev/null @@ -1,18 +0,0 @@ -MechMerlin's FaceW Sprit Edition Layout -====================== - -This is the preferred 60% layout used by u/merlin36, host of the [MechMerlin YouTube channel](www.youtube.com/mechmerlin). - -## Keyboard Notes -- The FaceW Sprit Edition can be purchased on [mechanicalkeyboards.com](www.mechanicalkeyboards.com) -- Uses ps2avru instead of ps2avrgb -- To put in reset mode hold `q` while inserting the USB cable -- Use flashing instructions from ps2avrgb QMK port - -## Keymap Notes -- Does not support any form of inswitch lighting as Merlin hates them. -- Arrow toggle switch to the right of right shift -- Reset is FN + Left Shift + R - -### Build -To build this keymap, simply run `make bfake:mechmerlin` from the qmk_firmware directory. diff --git a/keyboards/binepad/bn006/config.h b/keyboards/binepad/bn006/config.h index 41c3822655c4..0569ccff03cf 100755 --- a/keyboards/binepad/bn006/config.h +++ b/keyboards/binepad/bn006/config.h @@ -3,14 +3,6 @@ #pragma once -/* - * Wear Leveling EEPROM Emulation - */ - -#define WEAR_LEVELING_LOGICAL_SIZE 2048 // Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. -#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) // Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size. - - /* * RGB Matrix */ diff --git a/keyboards/binepad/bn006/info.json b/keyboards/binepad/bn006/info.json index 756b82e330a7..81e68d2e0c62 100755 --- a/keyboards/binepad/bn006/info.json +++ b/keyboards/binepad/bn006/info.json @@ -24,6 +24,11 @@ "pid": "0x426E", "device_version": "1.0.0" }, + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, "ws2812": { "pin": "B15" }, diff --git a/keyboards/binepad/bn006/rules.mk b/keyboards/binepad/bn006/rules.mk index 58561c984b4f..7ff128fa692e 100755 --- a/keyboards/binepad/bn006/rules.mk +++ b/keyboards/binepad/bn006/rules.mk @@ -1,5 +1 @@ -# Copyright 2022 Binepad (@binpad) -# SPDX-License-Identifier: GPL-2.0-or-later - -EPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = embedded_flash +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/binepad/bn009/r2/config.h b/keyboards/binepad/bn009/r2/config.h deleted file mode 100644 index 45b63ec10528..000000000000 --- a/keyboards/binepad/bn009/r2/config.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2023 Binepad (@binepad) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - - -/* - * Wear Leveling EEPROM Emulation - */ - -#define WEAR_LEVELING_LOGICAL_SIZE 2048 // Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. -#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) // Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size. diff --git a/keyboards/binepad/bn009/r2/info.json b/keyboards/binepad/bn009/r2/info.json index c011fe0e32df..870608b5c80b 100644 --- a/keyboards/binepad/bn009/r2/info.json +++ b/keyboards/binepad/bn009/r2/info.json @@ -6,6 +6,11 @@ "cols": ["A1", "A2", "A6"], "rows": ["B6", "B7", "B2"] }, + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, "processor": "STM32F103", "usb": { "device_version": "2.0.0" diff --git a/keyboards/binepad/bnr1/v2/config.h b/keyboards/binepad/bnr1/v2/config.h deleted file mode 100644 index c408f95d383d..000000000000 --- a/keyboards/binepad/bnr1/v2/config.h +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2022 BINEPAD (@binepad) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#define WEAR_LEVELING_LOGICAL_SIZE 1024 -#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) diff --git a/keyboards/binepad/bnr1/v2/rules.mk b/keyboards/binepad/bnr1/v2/rules.mk index 77b90d035df4..6e7633bfe015 100644 --- a/keyboards/binepad/bnr1/v2/rules.mk +++ b/keyboards/binepad/bnr1/v2/rules.mk @@ -1,5 +1 @@ -# This file only contains EFL/WL settings and enables F103 low-power mode - -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = embedded_flash - +# This file intentionally left blank diff --git a/keyboards/binepad/pixie/config.h b/keyboards/binepad/pixie/config.h new file mode 100644 index 000000000000..00d5ddf0355f --- /dev/null +++ b/keyboards/binepad/pixie/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 binepad (@binepad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define ENCODER_DEFAULT_POS 0x3 // enable 1:1 resolution diff --git a/keyboards/binepad/pixie/info.json b/keyboards/binepad/pixie/info.json new file mode 100644 index 000000000000..7d9d2ceb9ad9 --- /dev/null +++ b/keyboards/binepad/pixie/info.json @@ -0,0 +1,49 @@ +{ + "manufacturer": "binepad", + "keyboard_name": "PIXIE", + "url": "http://binepad.com", + "maintainer": "binepad", + "processor": "RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "usb": { + "vid": "0x4249", + "pid": "0x5078", + "device_version": "1.0.0" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false, + "encoder": true + }, + "matrix_pins": { + "cols": ["GP19", "GP4"], + "rows": ["GP28", "GP5"] + }, + "encoder": { + "rotary": [ + { + "pin_a": "GP18", + "pin_b": "GP17" + }, + { + "pin_a": "GP20", + "pin_b": "GP21" + } + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1.25, "y": 1.25 } + ] + } + } +} diff --git a/keyboards/binepad/pixie/keymaps/default/keymap.c b/keyboards/binepad/pixie/keymaps/default/keymap.c new file mode 100644 index 000000000000..b49c4db6de3a --- /dev/null +++ b/keyboards/binepad/pixie/keymaps/default/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2023 Binepad (@binpad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, KC_MPLY, + KC_MPRV, KC_MNXT + ) +}; + +#if defined(ENCODER_MAP_ENABLE) + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { + ENCODER_CCW_CW(KC_VOLD, KC_VOLU), + ENCODER_CCW_CW(KC_WH_U, KC_WH_D) + } +}; + +#endif diff --git a/keyboards/binepad/pixie/keymaps/default/rules.mk b/keyboards/binepad/pixie/keymaps/default/rules.mk new file mode 100644 index 000000000000..34789bf1728c --- /dev/null +++ b/keyboards/binepad/pixie/keymaps/default/rules.mk @@ -0,0 +1,2 @@ + +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/binepad/pixie/keymaps/via/keymap.c b/keyboards/binepad/pixie/keymaps/via/keymap.c new file mode 100644 index 000000000000..b49c4db6de3a --- /dev/null +++ b/keyboards/binepad/pixie/keymaps/via/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2023 Binepad (@binpad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, KC_MPLY, + KC_MPRV, KC_MNXT + ) +}; + +#if defined(ENCODER_MAP_ENABLE) + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { + ENCODER_CCW_CW(KC_VOLD, KC_VOLU), + ENCODER_CCW_CW(KC_WH_U, KC_WH_D) + } +}; + +#endif diff --git a/keyboards/binepad/pixie/keymaps/via/rules.mk b/keyboards/binepad/pixie/keymaps/via/rules.mk new file mode 100644 index 000000000000..82b46f5873fc --- /dev/null +++ b/keyboards/binepad/pixie/keymaps/via/rules.mk @@ -0,0 +1,3 @@ + +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/binepad/pixie/readme.md b/keyboards/binepad/pixie/readme.md new file mode 100644 index 000000000000..98287ab97bf3 --- /dev/null +++ b/keyboards/binepad/pixie/readme.md @@ -0,0 +1,27 @@ +# BINEPAD PIXIE + +![BINEPAD PIXIE](https://i.imgur.com/OnQnkdUh.jpeg) + +*A 2x2 macropad with 2x rotary encoders* + +* Keyboard Maintainer: [binepad](https://github.com/binepad) +* Hardware Supported: BINPAD PIXIE +* Hardware Availability: [binepad.com](https://www.binepad.com/pixie) + +Make example for this keyboard (after setting up your build environment): + + make binepad/pixie:default + +Flashing example for this keyboard: + + make binepad/pixie:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (010) in the matrix (the bottom left key) and plug in the keyboard +* **Physical reset button**: Briefly press the PCB button located on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` or `RESET` if it is available diff --git a/keyboards/binepad/pixie/rules.mk b/keyboards/binepad/pixie/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/binepad/pixie/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/bioi/ble.c b/keyboards/bioi/ble.c deleted file mode 100644 index 12c180966a9f..000000000000 --- a/keyboards/bioi/ble.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright 2019 Basic I/O Instruments(Scott Wei) -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "bluetooth.h" -#include "ble.h" -#include "usart.h" -#include "progmem.h" -#include "wait.h" -#include "debug.h" -#include "usb_descriptor.h" -#include "report.h" - -keyboard_config_t ble_config; - -static void bluefruit_serial_send(uint8_t); - -void send_str(const char *str) -{ - uint8_t c; - while ((c = pgm_read_byte(str++))) - uart1_putc(c); -} - -void serial_send(uint8_t data) -{ - dprintf("Sending: %u\n", data); -} - -void send_bytes(uint8_t data) -{ - char hexStr[3]; - sprintf(hexStr, "%02X", data); - for (int j = 0; j < sizeof(hexStr) - 1; j++) - { - uart1_putc(hexStr[j]); - } -} - -#ifdef BLUEFRUIT_TRACE_SERIAL -static void bluefruit_trace_header(void) -{ - dprintf("+------------------------------------+\n"); - dprintf("| HID report to Bluefruit via serial |\n"); - dprintf("+------------------------------------+\n|"); -} - -static void bluefruit_trace_footer(void) -{ - dprintf("|\n+------------------------------------+\n\n"); -} -#endif - -static void bluefruit_serial_send(uint8_t data) -{ -#ifdef BLUEFRUIT_TRACE_SERIAL - dprintf(" "); - debug_hex8(data); - dprintf(" "); -#endif - serial_send(data); -} - -void bluetooth_init(void) { - usart_init(); -} - -void bluetooth_task(void) {} - -void bluetooth_send_keyboard(report_keyboard_t *report) -{ -#ifdef BLUEFRUIT_TRACE_SERIAL - bluefruit_trace_header(); -#endif - dprintf("Sending...\n"); - - send_str(PSTR("AT+BLEKEYBOARDCODE=")); - - for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) - { - send_bytes(report->raw[i]); - if (i < (KEYBOARD_EPSIZE - 1)) - { - send_str(PSTR("-")); - } - } - - send_str(PSTR("\r\n")); -#ifdef BLUEFRUIT_TRACE_SERIAL - bluefruit_trace_footer(); -#endif -} - -void bluetooth_send_mouse(report_mouse_t *report) -{ -#ifdef BLUEFRUIT_TRACE_SERIAL - bluefruit_trace_header(); -#endif - bluefruit_serial_send(0xFD); - bluefruit_serial_send(0x00); - bluefruit_serial_send(0x03); - bluefruit_serial_send(report->buttons); - bluefruit_serial_send(report->x); - bluefruit_serial_send(report->y); - bluefruit_serial_send(report->v); // should try sending the wheel v here - bluefruit_serial_send(report->h); // should try sending the wheel h here - bluefruit_serial_send(0x00); -#ifdef BLUEFRUIT_TRACE_SERIAL - bluefruit_trace_footer(); -#endif -} - -/* -+-----------------+-------------------+-------+ -| Consumer Key | Bit Map | Hex | -+-----------------+-------------------+-------+ -| Home | 00000001 00000000 | 01 00 | -| KeyboardLayout | 00000010 00000000 | 02 00 | -| Search | 00000100 00000000 | 04 00 | -| Snapshot | 00001000 00000000 | 08 00 | -| VolumeUp | 00010000 00000000 | 10 00 | -| VolumeDown | 00100000 00000000 | 20 00 | -| Play/Pause | 01000000 00000000 | 40 00 | -| Fast Forward | 10000000 00000000 | 80 00 | -| Rewind | 00000000 00000001 | 00 01 | -| Scan Next Track | 00000000 00000010 | 00 02 | -| Scan Prev Track | 00000000 00000100 | 00 04 | -| Random Play | 00000000 00001000 | 00 08 | -| Stop | 00000000 00010000 | 00 10 | -+-------------------------------------+-------+ -*/ -#define CONSUMER2BLUEFRUIT(usage) \ - (usage == AUDIO_MUTE ? 0x00e2 : (usage == AUDIO_VOL_UP ? 0x00e9 : (usage == AUDIO_VOL_DOWN ? 0x00ea : (usage == TRANSPORT_NEXT_TRACK ? 0x00b5 : (usage == TRANSPORT_PREV_TRACK ? 0x00b6 : (usage == TRANSPORT_STOP ? 0x00b7 : (usage == TRANSPORT_STOP_EJECT ? 0x00b8 : (usage == TRANSPORT_PLAY_PAUSE ? 0x00b1 : (usage == AL_CC_CONFIG ? 0x0183 : (usage == AL_EMAIL ? 0x018c : (usage == AL_CALCULATOR ? 0x0192 : (usage == AL_LOCAL_BROWSER ? 0x0196 : (usage == AC_SEARCH ? 0x021f : (usage == AC_HOME ? 0x0223 : (usage == AC_BACK ? 0x0224 : (usage == AC_FORWARD ? 0x0225 : (usage == AC_STOP ? 0x0226 : (usage == AC_REFRESH ? 0x0227 : (usage == AC_BOOKMARKS ? 0x022a : 0))))))))))))))))))) - -void bluetooth_send_consumer(uint16_t usage) -{ - uint16_t bitmap = CONSUMER2BLUEFRUIT(usage); - -#ifdef BLUEFRUIT_TRACE_SERIAL - dprintf("\nData: "); - debug_hex16(data); - dprintf("; bitmap: "); - debug_hex16(bitmap); - dprintf("\n"); - bluefruit_trace_header(); -#endif - send_str(PSTR("AT+BLEHIDCONTROLKEY=0x")); - send_bytes((bitmap >> 8) & 0xFF); - send_bytes(bitmap & 0xFF); - send_str(PSTR("\r\n")); -#ifdef BLUEFRUIT_TRACE_SERIAL - bluefruit_trace_footer(); -#endif -} - -void usart_init(void) -{ - uart1_init(UART_BAUD_SELECT_DOUBLE_SPEED(76800, 8000000L)); - wait_ms(250); - - send_str(PSTR("\r\n")); - send_str(PSTR("\r\n")); - send_str(PSTR("\r\n")); -} diff --git a/keyboards/bioi/ble.h b/keyboards/bioi/ble.h deleted file mode 100644 index 529ebf5241d6..000000000000 --- a/keyboards/bioi/ble.h +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2019 Basic I/O Instruments(Scott Wei) -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -typedef union { - uint32_t raw; - struct { - bool init : 1; - }; -} keyboard_config_t; - -extern keyboard_config_t ble_config; - -void send_str(const char *str); -void usart_init(void); -void module_reset(void); diff --git a/keyboards/bioi/bluetooth_custom.c b/keyboards/bioi/bluetooth_custom.c new file mode 100644 index 000000000000..4ea277f731a6 --- /dev/null +++ b/keyboards/bioi/bluetooth_custom.c @@ -0,0 +1,163 @@ +/* +Copyright 2019 Basic I/O Instruments(Scott Wei) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 "bluetooth.h" +#include "uart.h" +#include "progmem.h" +#include "wait.h" +#include "debug.h" +#include "usb_descriptor.h" +#include "report.h" + +void send_str(const char *str) +{ + uint8_t c; + while ((c = pgm_read_byte(str++))) + uart_write(c); +} + +void serial_send(uint8_t data) +{ + dprintf("Sending: %u\n", data); +} + +void send_bytes(uint8_t data) +{ + char hexStr[3]; + sprintf(hexStr, "%02X", data); + for (int j = 0; j < sizeof(hexStr) - 1; j++) + { + uart_write(hexStr[j]); + } +} + +#ifdef BLUEFRUIT_TRACE_SERIAL +static void bluefruit_trace_header(void) +{ + dprintf("+------------------------------------+\n"); + dprintf("| HID report to Bluefruit via serial |\n"); + dprintf("+------------------------------------+\n|"); +} + +static void bluefruit_trace_footer(void) +{ + dprintf("|\n+------------------------------------+\n\n"); +} +#endif + +static void bluefruit_serial_send(uint8_t data) +{ +#ifdef BLUEFRUIT_TRACE_SERIAL + dprintf(" "); + debug_hex8(data); + dprintf(" "); +#endif + serial_send(data); +} + +void bluetooth_init(void) { + uart_init(76800); + wait_ms(250); + + send_str(PSTR("\r\n")); + send_str(PSTR("\r\n")); + send_str(PSTR("\r\n")); +} + +void bluetooth_task(void) {} + +void bluetooth_send_keyboard(report_keyboard_t *report) +{ +#ifdef BLUEFRUIT_TRACE_SERIAL + bluefruit_trace_header(); +#endif + dprintf("Sending...\n"); + + send_str(PSTR("AT+BLEKEYBOARDCODE=")); + + send_bytes(report->mods); + send_str(PSTR("-")); + send_bytes(0); + for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { + send_str(PSTR("-")); + send_bytes(report->keys[i]); + } + + send_str(PSTR("\r\n")); +#ifdef BLUEFRUIT_TRACE_SERIAL + bluefruit_trace_footer(); +#endif +} + +void bluetooth_send_mouse(report_mouse_t *report) +{ +#ifdef BLUEFRUIT_TRACE_SERIAL + bluefruit_trace_header(); +#endif + bluefruit_serial_send(0xFD); + bluefruit_serial_send(0x00); + bluefruit_serial_send(0x03); + bluefruit_serial_send(report->buttons); + bluefruit_serial_send(report->x); + bluefruit_serial_send(report->y); + bluefruit_serial_send(report->v); // should try sending the wheel v here + bluefruit_serial_send(report->h); // should try sending the wheel h here + bluefruit_serial_send(0x00); +#ifdef BLUEFRUIT_TRACE_SERIAL + bluefruit_trace_footer(); +#endif +} + +/* ++-----------------+-------------------+-------+ +| Consumer Key | Bit Map | Hex | ++-----------------+-------------------+-------+ +| Home | 00000001 00000000 | 01 00 | +| KeyboardLayout | 00000010 00000000 | 02 00 | +| Search | 00000100 00000000 | 04 00 | +| Snapshot | 00001000 00000000 | 08 00 | +| VolumeUp | 00010000 00000000 | 10 00 | +| VolumeDown | 00100000 00000000 | 20 00 | +| Play/Pause | 01000000 00000000 | 40 00 | +| Fast Forward | 10000000 00000000 | 80 00 | +| Rewind | 00000000 00000001 | 00 01 | +| Scan Next Track | 00000000 00000010 | 00 02 | +| Scan Prev Track | 00000000 00000100 | 00 04 | +| Random Play | 00000000 00001000 | 00 08 | +| Stop | 00000000 00010000 | 00 10 | ++-------------------------------------+-------+ +*/ +#define CONSUMER2BLUEFRUIT(usage) \ + (usage == AUDIO_MUTE ? 0x00e2 : (usage == AUDIO_VOL_UP ? 0x00e9 : (usage == AUDIO_VOL_DOWN ? 0x00ea : (usage == TRANSPORT_NEXT_TRACK ? 0x00b5 : (usage == TRANSPORT_PREV_TRACK ? 0x00b6 : (usage == TRANSPORT_STOP ? 0x00b7 : (usage == TRANSPORT_STOP_EJECT ? 0x00b8 : (usage == TRANSPORT_PLAY_PAUSE ? 0x00b1 : (usage == AL_CC_CONFIG ? 0x0183 : (usage == AL_EMAIL ? 0x018c : (usage == AL_CALCULATOR ? 0x0192 : (usage == AL_LOCAL_BROWSER ? 0x0196 : (usage == AC_SEARCH ? 0x021f : (usage == AC_HOME ? 0x0223 : (usage == AC_BACK ? 0x0224 : (usage == AC_FORWARD ? 0x0225 : (usage == AC_STOP ? 0x0226 : (usage == AC_REFRESH ? 0x0227 : (usage == AC_BOOKMARKS ? 0x022a : 0))))))))))))))))))) + +void bluetooth_send_consumer(uint16_t usage) +{ + uint16_t bitmap = CONSUMER2BLUEFRUIT(usage); + +#ifdef BLUEFRUIT_TRACE_SERIAL + dprintf("\nData: "); + debug_hex16(data); + dprintf("; bitmap: "); + debug_hex16(bitmap); + dprintf("\n"); + bluefruit_trace_header(); +#endif + send_str(PSTR("AT+BLEHIDCONTROLKEY=0x")); + send_bytes((bitmap >> 8) & 0xFF); + send_bytes(bitmap & 0xFF); + send_str(PSTR("\r\n")); +#ifdef BLUEFRUIT_TRACE_SERIAL + bluefruit_trace_footer(); +#endif +} diff --git a/keyboards/bioi/g60/rules.mk b/keyboards/bioi/g60/rules.mk index 2b955ce793ba..375cb52732a1 100644 --- a/keyboards/bioi/g60/rules.mk +++ b/keyboards/bioi/g60/rules.mk @@ -18,7 +18,5 @@ BLUETOOTH_ENABLE = yes VIA_ENABLE = yes # VIA support should be enabled here due to the main() loop will be compiled first. -SRC += usart.c ble.c - -OPT_DEFS += -DUART_RX1_BUFFER_SIZE=16 -DUART_TX1_BUFFER_SIZE=16 -OPT_DEFS += -DUSART1_ENABLED +UART_DRIVER_REQUIRED = yes +SRC += bluetooth_custom.c diff --git a/keyboards/bioi/g60ble/rules.mk b/keyboards/bioi/g60ble/rules.mk index 31cc2c22b691..6bfcc62d7e00 100644 --- a/keyboards/bioi/g60ble/rules.mk +++ b/keyboards/bioi/g60ble/rules.mk @@ -13,8 +13,7 @@ BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes LTO_ENABLE = yes -# these lines are all for bluetooth BLUETOOTH_ENABLE = yes -SRC += usart.c ble.c -OPT_DEFS += -DUART_RX1_BUFFER_SIZE=16 -DUART_TX1_BUFFER_SIZE=16 -OPT_DEFS += -DUSART1_ENABLED + +UART_DRIVER_REQUIRED = yes +SRC += bluetooth_custom.c diff --git a/keyboards/bioi/morgan65/rules.mk b/keyboards/bioi/morgan65/rules.mk index 2b955ce793ba..375cb52732a1 100644 --- a/keyboards/bioi/morgan65/rules.mk +++ b/keyboards/bioi/morgan65/rules.mk @@ -18,7 +18,5 @@ BLUETOOTH_ENABLE = yes VIA_ENABLE = yes # VIA support should be enabled here due to the main() loop will be compiled first. -SRC += usart.c ble.c - -OPT_DEFS += -DUART_RX1_BUFFER_SIZE=16 -DUART_TX1_BUFFER_SIZE=16 -OPT_DEFS += -DUSART1_ENABLED +UART_DRIVER_REQUIRED = yes +SRC += bluetooth_custom.c diff --git a/keyboards/bioi/usart.c b/keyboards/bioi/usart.c deleted file mode 100644 index f37845e5c63a..000000000000 --- a/keyboards/bioi/usart.c +++ /dev/null @@ -1,1522 +0,0 @@ -/************************************************************************* - - Title: Interrupt UART library with receive/transmit circular buffers - Author: Andy Gock - Software: AVR-GCC 4.1, AVR Libc 1.4 - Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz - License: GNU General Public License - Usage: see README.md and Doxygen manual - - Based on original library by Peter Fluery, Tim Sharpe, Nicholas Zambetti. - - https://github.com/andygock/avr-uart - - Updated UART library (this one) by Andy Gock - https://github.com/andygock/avr-uart - - Based on updated UART library (this one) by Tim Sharpe - http://beaststwo.org/avr-uart/index.shtml - - Based on original library by Peter Fluery - http://homepage.hispeed.ch/peterfleury/avr-software.html - -*************************************************************************/ - -/************************************************************************* - -LICENSE: - Copyright (C) 2012 Andy Gock - Copyright (C) 2006 Peter Fleury - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - -*************************************************************************/ - -/************************************************************************ -uart_available, uart_flush, uart1_available, and uart1_flush functions -were adapted from the Arduino HardwareSerial.h library by Tim Sharpe on -11 Jan 2009. The license info for HardwareSerial.h is as follows: - - HardwareSerial.cpp - Hardware serial library for Wiring - Copyright (c) 2006 Nicholas Zambetti. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Modified 23 November 2006 by David A. Mellis -************************************************************************/ - -/************************************************************************ -Changelog for modifications made by Tim Sharpe, starting with the current - library version on his Web site as of 05/01/2009. - -Date Description -========================================================================= -05/11/2009 Changed all existing UARTx_RECEIVE_INTERRUPT and UARTx_TRANSMIT_INTERRUPT - macros to use the "_vect" format introduced in AVR-Libc - v1.4.0. Had to split the 3290 and 6490 out of their existing - macro due to an inconsistency in the UART0_RECEIVE_INTERRUPT - vector name (seems like a typo: USART_RX_vect for the 3290/6490 - vice USART0_RX_vect for the others in the macro). - Verified all existing macro register names against the device - header files in AVR-Libc v1.6.6 to catch any inconsistencies. -05/12/2009 Added support for 48P, 88P, 168P, and 328P by adding them to the - existing 48/88/168 macro. - Added Arduino-style available() and flush() functions for both - supported UARTs. Really wanted to keep them out of the library, so - that it would be as close as possible to Peter Fleury's original - library, but has scoping issues accessing internal variables from - another program. Go C! -05/13/2009 Changed Interrupt Service Routine label from the old "SIGNAL" to - the "ISR" format introduced in AVR-Libc v1.4.0. - -************************************************************************/ - -#include -#include -#include -#include -#include "usart.h" - -/* - * constants and macros - */ - -/* size of RX/TX buffers */ -#define UART_RX0_BUFFER_MASK (UART_RX0_BUFFER_SIZE - 1) -#define UART_RX1_BUFFER_MASK (UART_RX1_BUFFER_SIZE - 1) -#define UART_RX2_BUFFER_MASK (UART_RX2_BUFFER_SIZE - 1) -#define UART_RX3_BUFFER_MASK (UART_RX3_BUFFER_SIZE - 1) - -#define UART_TX0_BUFFER_MASK (UART_TX0_BUFFER_SIZE - 1) -#define UART_TX1_BUFFER_MASK (UART_TX1_BUFFER_SIZE - 1) -#define UART_TX2_BUFFER_MASK (UART_TX2_BUFFER_SIZE - 1) -#define UART_TX3_BUFFER_MASK (UART_TX3_BUFFER_SIZE - 1) - -#if (UART_RX0_BUFFER_SIZE & UART_RX0_BUFFER_MASK) - #error RX0 buffer size is not a power of 2 -#endif -#if (UART_TX0_BUFFER_SIZE & UART_TX0_BUFFER_MASK) - #error TX0 buffer size is not a power of 2 -#endif - -#if (UART_RX1_BUFFER_SIZE & UART_RX1_BUFFER_MASK) - #error RX1 buffer size is not a power of 2 -#endif -#if (UART_TX1_BUFFER_SIZE & UART_TX1_BUFFER_MASK) - #error TX1 buffer size is not a power of 2 -#endif - -#if (UART_RX2_BUFFER_SIZE & UART_RX2_BUFFER_MASK) - #error RX2 buffer size is not a power of 2 -#endif -#if (UART_TX2_BUFFER_SIZE & UART_TX2_BUFFER_MASK) - #error TX2 buffer size is not a power of 2 -#endif - -#if (UART_RX3_BUFFER_SIZE & UART_RX3_BUFFER_MASK) - #error RX3 buffer size is not a power of 2 -#endif -#if (UART_TX3_BUFFER_SIZE & UART_TX3_BUFFER_MASK) - #error TX3 buffer size is not a power of 2 -#endif - -#if defined(__AVR_AT90S2313__) \ - || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \ - || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \ - || defined(__AVR_ATmega103__) - /* old AVR classic or ATmega103 with one UART */ - #define AT90_UART - #define UART0_RECEIVE_INTERRUPT UART_RX_vect - #define UART0_TRANSMIT_INTERRUPT UART_UDRE_vect - #define UART0_STATUS USR - #define UART0_CONTROL UCR - #define UART0_DATA UDR - #define UART0_UDRIE UDRIE -#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__) - /* old AVR classic with one UART */ - #define AT90_UART - #define UART0_RECEIVE_INTERRUPT UART_RX_vect - #define UART0_TRANSMIT_INTERRUPT UART_UDRE_vect - #define UART0_STATUS UCSRA - #define UART0_CONTROL UCSRB - #define UART0_DATA UDR - #define UART0_UDRIE UDRIE -#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ - || defined(__AVR_ATmega323__) - /* ATmega with one USART */ - #define ATMEGA_USART - #define UART0_RECEIVE_INTERRUPT USART_RXC_vect - #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect - #define UART0_STATUS UCSRA - #define UART0_CONTROL UCSRB - #define UART0_DATA UDR - #define UART0_UDRIE UDRIE -#elif defined(__AVR_ATmega8U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega16U4__) || \ - defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega32U6__) - /* ATmega with one USART, but is called USART1 (untested) */ - #define ATMEGA_USART1 - #define UART1_RECEIVE_INTERRUPT USART1_RX_vect - #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect - #define UART1_STATUS UCSR1A - #define UART1_CONTROL UCSR1B - #define UART1_DATA UDR1 - #define UART1_UDRIE UDRIE1 -#elif defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) - /* ATmega with one USART */ - #define ATMEGA_USART - #define UART0_RECEIVE_INTERRUPT USART_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect - #define UART0_STATUS UCSRA - #define UART0_CONTROL UCSRB - #define UART0_DATA UDR - #define UART0_UDRIE UDRIE -#elif defined(__AVR_ATmega163__) - /* ATmega163 with one UART */ - #define ATMEGA_UART - #define UART0_RECEIVE_INTERRUPT UART_RX_vect - #define UART0_TRANSMIT_INTERRUPT UART_UDRE_vect - #define UART0_STATUS UCSRA - #define UART0_CONTROL UCSRB - #define UART0_DATA UDR - #define UART0_UDRIE UDRIE -#elif defined(__AVR_ATmega162__) - /* ATmega with two USART */ - #define ATMEGA_USART0 - #define ATMEGA_USART1 - #define UART0_RECEIVE_INTERRUPT USART0_RXC_vect - #define UART1_RECEIVE_INTERRUPT USART1_RXC_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 - #define UART1_STATUS UCSR1A - #define UART1_CONTROL UCSR1B - #define UART1_DATA UDR1 - #define UART1_UDRIE UDRIE1 -#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) - /* ATmega with two USART */ - #define ATMEGA_USART0 - #define ATMEGA_USART1 - #define UART0_RECEIVE_INTERRUPT USART0_RX_vect - #define UART1_RECEIVE_INTERRUPT USART1_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 - #define UART1_STATUS UCSR1A - #define UART1_CONTROL UCSR1B - #define UART1_DATA UDR1 - #define UART1_UDRIE UDRIE1 -#elif defined(__AVR_ATmega161__) - /* ATmega with UART */ - #error "AVR ATmega161 currently not supported by this libaray !" -#elif defined(__AVR_ATmega169__) - /* ATmega with one USART */ - #define ATMEGA_USART - #define UART0_RECEIVE_INTERRUPT USART0_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART0_STATUS UCSRA - #define UART0_CONTROL UCSRB - #define UART0_DATA UDR - #define UART0_UDRIE UDRIE -#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || \ - defined(__AVR_ATmega48P__) ||defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || \ - defined(__AVR_ATmega328P__) - /* TLS-Added 48P/88P/168P/328P */ - /* ATmega with one USART */ - #define ATMEGA_USART0 - #define UART0_RECEIVE_INTERRUPT USART_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 -#elif defined(__AVR_ATtiny2313__) || defined(__AVR_ATtiny2313A__) || defined(__AVR_ATtiny4313__) - #define ATMEGA_USART - #define UART0_RECEIVE_INTERRUPT USART_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART_UDRE_vect - #define UART0_STATUS UCSRA - #define UART0_CONTROL UCSRB - #define UART0_DATA UDR - #define UART0_UDRIE UDRIE -#elif defined(__AVR_ATmega329__) ||\ - defined(__AVR_ATmega649__) ||\ - defined(__AVR_ATmega325__) ||defined(__AVR_ATmega3250__) ||\ - defined(__AVR_ATmega645__) ||defined(__AVR_ATmega6450__) - /* ATmega with one USART */ - #define ATMEGA_USART0 - #define UART0_RECEIVE_INTERRUPT USART0_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 -#elif defined(__AVR_ATmega3290__) ||\ - defined(__AVR_ATmega6490__) - /* TLS-Separated these two from the previous group because of inconsistency in the USART_RX */ - /* ATmega with one USART */ - #define ATMEGA_USART0 - #define UART0_RECEIVE_INTERRUPT USART_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 -#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega640__) - /* ATmega with four USART */ - #define ATMEGA_USART0 - #define ATMEGA_USART1 - #define ATMEGA_USART2 - #define ATMEGA_USART3 - #define UART0_RECEIVE_INTERRUPT USART0_RX_vect - #define UART1_RECEIVE_INTERRUPT USART1_RX_vect - #define UART2_RECEIVE_INTERRUPT USART2_RX_vect - #define UART3_RECEIVE_INTERRUPT USART3_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect - #define UART2_TRANSMIT_INTERRUPT USART2_UDRE_vect - #define UART3_TRANSMIT_INTERRUPT USART3_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 - #define UART1_STATUS UCSR1A - #define UART1_CONTROL UCSR1B - #define UART1_DATA UDR1 - #define UART1_UDRIE UDRIE1 - #define UART2_STATUS UCSR2A - #define UART2_CONTROL UCSR2B - #define UART2_DATA UDR2 - #define UART2_UDRIE UDRIE2 - #define UART3_STATUS UCSR3A - #define UART3_CONTROL UCSR3B - #define UART3_DATA UDR3 - #define UART3_UDRIE UDRIE3 -#elif defined(__AVR_ATmega644__) - /* ATmega with one USART */ - #define ATMEGA_USART0 - #define UART0_RECEIVE_INTERRUPT USART0_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 -#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega644P__) || \ - defined(__AVR_ATmega1284P__) - /* ATmega with two USART */ - #define ATMEGA_USART0 - #define ATMEGA_USART1 - #define UART0_RECEIVE_INTERRUPT USART0_RX_vect - #define UART1_RECEIVE_INTERRUPT USART1_RX_vect - #define UART0_TRANSMIT_INTERRUPT USART0_UDRE_vect - #define UART1_TRANSMIT_INTERRUPT USART1_UDRE_vect - #define UART0_STATUS UCSR0A - #define UART0_CONTROL UCSR0B - #define UART0_DATA UDR0 - #define UART0_UDRIE UDRIE0 - #define UART1_STATUS UCSR1A - #define UART1_CONTROL UCSR1B - #define UART1_DATA UDR1 - #define UART1_UDRIE UDRIE1 -#else - #error "no UART definition for MCU available" -#endif - -/* - * Module global variables - */ - -#if defined(USART0_ENABLED) - #if defined(ATMEGA_USART) || defined(ATMEGA_USART0) - static volatile uint8_t UART_TxBuf[UART_TX0_BUFFER_SIZE]; - static volatile uint8_t UART_RxBuf[UART_RX0_BUFFER_SIZE]; - - #if defined(USART0_LARGE_BUFFER) - static volatile uint16_t UART_TxHead; - static volatile uint16_t UART_TxTail; - static volatile uint16_t UART_RxHead; - static volatile uint16_t UART_RxTail; - static volatile uint8_t UART_LastRxError; - #else - static volatile uint8_t UART_TxHead; - static volatile uint8_t UART_TxTail; - static volatile uint8_t UART_RxHead; - static volatile uint8_t UART_RxTail; - static volatile uint8_t UART_LastRxError; - #endif - - #endif -#endif - -#if defined(USART1_ENABLED) - #if defined(ATMEGA_USART1) - static volatile uint8_t UART1_TxBuf[UART_TX1_BUFFER_SIZE]; - static volatile uint8_t UART1_RxBuf[UART_RX1_BUFFER_SIZE]; - - #if defined(USART1_LARGE_BUFFER) - static volatile uint16_t UART1_TxHead; - static volatile uint16_t UART1_TxTail; - static volatile uint16_t UART1_RxHead; - static volatile uint16_t UART1_RxTail; - static volatile uint8_t UART1_LastRxError; - #else - static volatile uint8_t UART1_TxHead; - static volatile uint8_t UART1_TxTail; - static volatile uint8_t UART1_RxHead; - static volatile uint8_t UART1_RxTail; - static volatile uint8_t UART1_LastRxError; - #endif - #endif -#endif - -#if defined(USART2_ENABLED) - #if defined(ATMEGA_USART2) - static volatile uint8_t UART2_TxBuf[UART_TX2_BUFFER_SIZE]; - static volatile uint8_t UART2_RxBuf[UART_RX2_BUFFER_SIZE]; - - #if defined(USART2_LARGE_BUFFER) - static volatile uint16_t UART2_TxHead; - static volatile uint16_t UART2_TxTail; - static volatile uint16_t UART2_RxHead; - static volatile uint16_t UART2_RxTail; - static volatile uint8_t UART2_LastRxError; - #else - static volatile uint8_t UART2_TxHead; - static volatile uint8_t UART2_TxTail; - static volatile uint8_t UART2_RxHead; - static volatile uint8_t UART2_RxTail; - static volatile uint8_t UART2_LastRxError; - #endif - #endif -#endif - -#if defined(USART3_ENABLED) - #if defined(ATMEGA_USART3) - static volatile uint8_t UART3_TxBuf[UART_TX3_BUFFER_SIZE]; - static volatile uint8_t UART3_RxBuf[UART_RX3_BUFFER_SIZE]; - - #if defined(USART3_LARGE_BUFFER) - static volatile uint16_t UART3_TxHead; - static volatile uint16_t UART3_TxTail; - static volatile uint16_t UART3_RxHead; - static volatile uint16_t UART3_RxTail; - static volatile uint8_t UART3_LastRxError; - #else - static volatile uint8_t UART3_TxHead; - static volatile uint8_t UART3_TxTail; - static volatile uint8_t UART3_RxHead; - static volatile uint8_t UART3_RxTail; - static volatile uint8_t UART3_LastRxError; - #endif - - #endif -#endif - -#if defined(USART0_ENABLED) - -#if defined(AT90_UART) || defined(ATMEGA_USART) || defined(ATMEGA_USART0) - -ISR(UART0_RECEIVE_INTERRUPT) -/************************************************************************* -Function: UART Receive Complete interrupt -Purpose: called when the UART has received a character -**************************************************************************/ -{ - uint16_t tmphead; - uint8_t data; - uint8_t usr; - uint8_t lastRxError; - - /* read UART status register and UART data register */ - usr = UART0_STATUS; - data = UART0_DATA; - - /* */ -#if defined(AT90_UART) - lastRxError = (usr & (_BV(FE)|_BV(DOR))); -#elif defined(ATMEGA_USART) - lastRxError = (usr & (_BV(FE)|_BV(DOR))); -#elif defined(ATMEGA_USART0) - lastRxError = (usr & (_BV(FE0)|_BV(DOR0))); -#elif defined (ATMEGA_UART) - lastRxError = (usr & (_BV(FE)|_BV(DOR))); -#endif - - /* calculate buffer index */ - tmphead = (UART_RxHead + 1) & UART_RX0_BUFFER_MASK; - - if (tmphead == UART_RxTail) { - /* error: receive buffer overflow */ - lastRxError = UART_BUFFER_OVERFLOW >> 8; - } else { - /* store new index */ - UART_RxHead = tmphead; - /* store received data in buffer */ - UART_RxBuf[tmphead] = data; - } - UART_LastRxError = lastRxError; -} - - -ISR(UART0_TRANSMIT_INTERRUPT) -/************************************************************************* -Function: UART Data Register Empty interrupt -Purpose: called when the UART is ready to transmit the next byte -**************************************************************************/ -{ - uint16_t tmptail; - - if (UART_TxHead != UART_TxTail) { - /* calculate and store new buffer index */ - tmptail = (UART_TxTail + 1) & UART_TX0_BUFFER_MASK; - UART_TxTail = tmptail; - /* get one byte from buffer and write it to UART */ - UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */ - } else { - /* tx buffer empty, disable UDRE interrupt */ - UART0_CONTROL &= ~_BV(UART0_UDRIE); - } -} - - -/************************************************************************* -Function: uart0_init() -Purpose: initialize UART and set baudrate -Input: baudrate using macro UART_BAUD_SELECT() -Returns: none -**************************************************************************/ -void uart0_init(uint16_t baudrate) -{ - ATOMIC_BLOCK(ATOMIC_FORCEON) { - UART_TxHead = 0; - UART_TxTail = 0; - UART_RxHead = 0; - UART_RxTail = 0; - } - -#if defined(AT90_UART) - /* set baud rate */ - UBRR = (uint8_t) baudrate; - - /* enable UART receiver and transmitter and receive complete interrupt */ - UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN); - -#elif defined (ATMEGA_USART) - /* Set baud rate */ - if (baudrate & 0x8000) { - UART0_STATUS = (1<>8); - UBRRL = (uint8_t) baudrate; - - /* Enable USART receiver and transmitter and receive complete interrupt */ - UART0_CONTROL = _BV(RXCIE)|(1<>8); - UBRR0L = (uint8_t) baudrate; - - /* Enable USART receiver and transmitter and receive complete interrupt */ - UART0_CONTROL = _BV(RXCIE0)|(1<>8); - UBRR = (uint8_t) baudrate; - - /* Enable UART receiver and transmitter and receive complete interrupt */ - UART0_CONTROL = _BV(RXCIE)|(1<> 8; - } else { - /* store new index */ - UART1_RxHead = tmphead; - /* store received data in buffer */ - UART1_RxBuf[tmphead] = data; - } - UART1_LastRxError = lastRxError; -} - - -ISR(UART1_TRANSMIT_INTERRUPT) -/************************************************************************* -Function: UART1 Data Register Empty interrupt -Purpose: called when the UART1 is ready to transmit the next byte -**************************************************************************/ -{ - uint16_t tmptail; - - if (UART1_TxHead != UART1_TxTail) { - /* calculate and store new buffer index */ - tmptail = (UART1_TxTail + 1) & UART_TX1_BUFFER_MASK; - UART1_TxTail = tmptail; - /* get one byte from buffer and write it to UART */ - UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */ - } else { - /* tx buffer empty, disable UDRE interrupt */ - UART1_CONTROL &= ~_BV(UART1_UDRIE); - } -} - - -/************************************************************************* -Function: uart1_init() -Purpose: initialize UART1 and set baudrate -Input: baudrate using macro UART_BAUD_SELECT() -Returns: none -**************************************************************************/ -void uart1_init(uint16_t baudrate) -{ - ATOMIC_BLOCK(ATOMIC_FORCEON) { - UART1_TxHead = 0; - UART1_TxTail = 0; - UART1_RxHead = 0; - UART1_RxTail = 0; - } - - /* Set baud rate */ - if (baudrate & 0x8000) { - UART1_STATUS = (1<>8); - UBRR1L = (uint8_t) baudrate; - - /* Enable USART receiver and transmitter and receive complete interrupt */ - UART1_CONTROL = _BV(RXCIE1)|(1<> 8; - } else { - /* store new index */ - UART2_RxHead = tmphead; - /* store received data in buffer */ - UART2_RxBuf[tmphead] = data; - } - UART2_LastRxError = lastRxError; -} - - -ISR(UART2_TRANSMIT_INTERRUPT) -/************************************************************************* -Function: UART2 Data Register Empty interrupt -Purpose: called when the UART2 is ready to transmit the next byte -**************************************************************************/ -{ - uint16_t tmptail; - - - if (UART2_TxHead != UART2_TxTail) { - /* calculate and store new buffer index */ - tmptail = (UART2_TxTail + 1) & UART_TX2_BUFFER_MASK; - UART2_TxTail = tmptail; - /* get one byte from buffer and write it to UART */ - UART2_DATA = UART2_TxBuf[tmptail]; /* start transmission */ - } else { - /* tx buffer empty, disable UDRE interrupt */ - UART2_CONTROL &= ~_BV(UART2_UDRIE); - } -} - - -/************************************************************************* -Function: uart2_init() -Purpose: initialize UART2 and set baudrate -Input: baudrate using macro UART_BAUD_SELECT() -Returns: none -**************************************************************************/ -void uart2_init(uint16_t baudrate) -{ - ATOMIC_BLOCK(ATOMIC_FORCEON) { - UART2_TxHead = 0; - UART2_TxTail = 0; - UART2_RxHead = 0; - UART2_RxTail = 0; - } - - /* Set baud rate */ - if (baudrate & 0x8000) { - UART2_STATUS = (1<>8); - UBRR2L = (uint8_t) baudrate; - - /* Enable USART receiver and transmitter and receive complete interrupt */ - UART2_CONTROL = _BV(RXCIE2)|(1<> 8; - } else { - /* store new index */ - UART3_RxHead = tmphead; - /* store received data in buffer */ - UART3_RxBuf[tmphead] = data; - } - UART3_LastRxError = lastRxError; -} - - -ISR(UART3_TRANSMIT_INTERRUPT) -/************************************************************************* -Function: UART3 Data Register Empty interrupt -Purpose: called when the UART3 is ready to transmit the next byte -**************************************************************************/ -{ - uint16_t tmptail; - - - if (UART3_TxHead != UART3_TxTail) { - /* calculate and store new buffer index */ - tmptail = (UART3_TxTail + 1) & UART_TX3_BUFFER_MASK; - UART3_TxTail = tmptail; - /* get one byte from buffer and write it to UART */ - UART3_DATA = UART3_TxBuf[tmptail]; /* start transmission */ - } else { - /* tx buffer empty, disable UDRE interrupt */ - UART3_CONTROL &= ~_BV(UART3_UDRIE); - } -} - - -/************************************************************************* -Function: uart3_init() -Purpose: initialize UART3 and set baudrate -Input: baudrate using macro UART_BAUD_SELECT() -Returns: none -**************************************************************************/ -void uart3_init(uint16_t baudrate) -{ - ATOMIC_BLOCK(ATOMIC_FORCEON) { - UART3_TxHead = 0; - UART3_TxTail = 0; - UART3_RxHead = 0; - UART3_RxTail = 0; - } - - /* Set baud rate */ - if (baudrate & 0x8000) { - UART3_STATUS = (1<>8); - UBRR3L = (uint8_t) baudrate; - - /* Enable USART receiver and transmitter and receive complete interrupt */ - UART3_CONTROL = _BV(RXCIE3)|(1< @endcode - * - * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers. - * @see README.md - * - * This library can be used to transmit and receive data through the built in UART. - * - * An interrupt is generated when the UART has finished transmitting or - * receiving a byte. The interrupt handling routines use circular buffers - * for buffering received and transmitted data. - * - * The UART_RXn_BUFFER_SIZE and UART_TXn_BUFFER_SIZE constants define - * the size of the circular buffers in bytes. Note that these constants must be a power of 2. - * - * You need to define these buffer sizes as a symbol in your compiler settings or in uart.h - * - * See README.md for more detailed information. Especially that relating to symbols: USARTn_ENABLED and USARTn_LARGE_BUFFER - * - * @author Andy Gock - * @note Based on Atmel Application Note AVR306 and original library by Peter Fleury and Tim Sharpe. - */ - -/**@{*/ -#include -#include - -#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 -#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" -#endif - -/* - * constants and macros - */ - -/* Enable USART 1, 2, 3 as required */ -/* Can be defined in compiler symbol setup with -D option (preferred) */ -#ifndef USART0_ENABLED - #define USART0_ENABLED /**< Enable USART0 */ -#endif -//#define USART1_ENABLED -//#define USART2_ENABLED -//#define USART3_ENABLED - -/* Set size of receive and transmit buffers */ - -#ifndef UART_RX0_BUFFER_SIZE - #define UART_RX0_BUFFER_SIZE 128 /**< Size of the circular receive buffer, must be power of 2 */ -#endif -#ifndef UART_RX1_BUFFER_SIZE - #define UART_RX1_BUFFER_SIZE 128 /**< Size of the circular receive buffer, must be power of 2 */ -#endif -#ifndef UART_RX2_BUFFER_SIZE - #define UART_RX2_BUFFER_SIZE 128 /**< Size of the circular receive buffer, must be power of 2 */ -#endif -#ifndef UART_RX3_BUFFER_SIZE - #define UART_RX3_BUFFER_SIZE 128 /**< Size of the circular receive buffer, must be power of 2 */ -#endif - -#ifndef UART_TX0_BUFFER_SIZE - #define UART_TX0_BUFFER_SIZE 128 /**< Size of the circular transmit buffer, must be power of 2 */ -#endif -#ifndef UART_TX1_BUFFER_SIZE - #define UART_TX1_BUFFER_SIZE 128 /**< Size of the circular transmit buffer, must be power of 2 */ -#endif -#ifndef UART_TX2_BUFFER_SIZE - #define UART_TX2_BUFFER_SIZE 128 /**< Size of the circular transmit buffer, must be power of 2 */ -#endif -#ifndef UART_TX3_BUFFER_SIZE - #define UART_TX3_BUFFER_SIZE 128 /**< Size of the circular transmit buffer, must be power of 2 */ -#endif - -/* Check buffer sizes are not too large for 8-bit positioning */ - -#if (UART_RX0_BUFFER_SIZE > 256 & !defined(USART0_LARGE_BUFFER)) - #error "Buffer too large, please use -DUSART0_LARGE_BUFFER switch in compiler options" -#endif - -#if (UART_RX1_BUFFER_SIZE > 256 & !defined(USART1_LARGE_BUFFER)) - #error "Buffer too large, please use -DUSART1_LARGE_BUFFER switch in compiler options" -#endif - -#if (UART_RX2_BUFFER_SIZE > 256 & !defined(USART2_LARGE_BUFFER)) - #error "Buffer too large, please use -DUSART2_LARGE_BUFFER switch in compiler options" -#endif - -#if (UART_RX3_BUFFER_SIZE > 256 & !defined(USART3_LARGE_BUFFER)) - #error "Buffer too large, please use -DUSART3_LARGE_BUFFER switch in compiler options" -#endif - -/* Check buffer sizes are not too large for *_LARGE_BUFFER operation (16-bit positioning) */ - -#if (UART_RX0_BUFFER_SIZE > 32768) - #error "Buffer too large, maximum allowed is 32768 bytes" -#endif - -#if (UART_RX1_BUFFER_SIZE > 32768) - #error "Buffer too large, maximum allowed is 32768 bytes" -#endif - -#if (UART_RX2_BUFFER_SIZE > 32768) - #error "Buffer too large, maximum allowed is 32768 bytes" -#endif - -#if (UART_RX3_BUFFER_SIZE > 32768) - #error "Buffer too large, maximum allowed is 32768 bytes" -#endif - -/** @brief UART Baudrate Expression - * @param xtalCpu system clock in Mhz, e.g. 4000000L for 4Mhz - * @param baudRate baudrate in bps, e.g. 1200, 2400, 9600 - */ -#define UART_BAUD_SELECT(baudRate,xtalCpu) (((xtalCpu)+8UL*(baudRate))/(16UL*(baudRate))-1UL) - -/** @brief UART Baudrate Expression for ATmega double speed mode - * @param xtalCpu system clock in Mhz, e.g. 4000000L for 4Mhz - * @param baudRate baudrate in bps, e.g. 1200, 2400, 9600 - */ -#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) ((((xtalCpu)+4UL*(baudRate))/(8UL*(baudRate))-1)|0x8000) - -/* test if the size of the circular buffers fits into SRAM */ - -#if defined(USART0_ENABLED) && ( (UART_RX0_BUFFER_SIZE+UART_TX0_BUFFER_SIZE) >= (RAMEND-0x60)) - #error "size of UART_RX0_BUFFER_SIZE + UART_TX0_BUFFER_SIZE larger than size of SRAM" -#endif - -#if defined(USART1_ENABLED) && ( (UART_RX1_BUFFER_SIZE+UART_TX1_BUFFER_SIZE) >= (RAMEND-0x60)) - #error "size of UART_RX1_BUFFER_SIZE + UART_TX1_BUFFER_SIZE larger than size of SRAM" -#endif - -#if defined(USART2_ENABLED) && ( (UART_RX2_BUFFER_SIZE+UART_RX2_BUFFER_SIZE) >= (RAMEND-0x60)) - #error "size of UART_RX2_BUFFER_SIZE + UART_TX2_BUFFER_SIZE larger than size of SRAM" -#endif - -#if defined(USART3_ENABLED) && ( (UART_RX3_BUFFER_SIZE+UART_RX3_BUFFER_SIZE) >= (RAMEND-0x60)) - #error "size of UART_RX3_BUFFER_SIZE + UART_TX3_BUFFER_SIZE larger than size of SRAM" -#endif - -/* -** high byte error return code of uart_getc() -*/ -#define UART_FRAME_ERROR 0x0800 /**< Framing Error by UART */ -#define UART_OVERRUN_ERROR 0x0400 /**< Overrun condition by UART */ -#define UART_BUFFER_OVERFLOW 0x0200 /**< receive ringbuffer overflow */ -#define UART_NO_DATA 0x0100 /**< no receive data available */ - -/* Macros, to allow use of legacy names */ - -/** @brief Macro to initialize USART0 (only available on selected ATmegas) @see uart0_init */ -#define uart_init(b) uart0_init(b) - -/** @brief Macro to get received byte of USART0 from ringbuffer. (only available on selected ATmega) @see uart0_getc */ -#define uart_getc() uart0_getc() - -/** @brief Macro to peek at next byte in USART0 ringbuffer */ -#define uart_peek() uart0_peek() - -/** @brief Macro to put byte to ringbuffer for transmitting via USART0 (only available on selected ATmega) @see uart0_putc */ -#define uart_putc(d) uart0_putc(d) - -/** @brief Macro to put string to ringbuffer for transmitting via USART0 (only available on selected ATmega) @see uart0_puts */ -#define uart_puts(s) uart0_puts(s) - -/** @brief Macro to put string from program memory to ringbuffer for transmitting via USART0 (only available on selected ATmega) @see uart0_puts_p */ -#define uart_puts_p(s) uart0_puts_p(s) - -/** @brief Macro to return number of bytes waiting in the receive buffer of USART0 @see uart0_available */ -#define uart_available() uart0_available() - -/** @brief Macro to flush bytes waiting in receive buffer of USART0 @see uart0_flush */ -#define uart_flush() uart0_flush() - -/* -** function prototypes -*/ - -/** - @brief Initialize UART and set baudrate - @param baudrate Specify baudrate using macro UART_BAUD_SELECT() - @return none -*/ -/*extern*/void uart0_init(uint16_t baudrate); - - -/** - * @brief Get received byte from ringbuffer - * - * Returns in the lower byte the received character and in the - * higher byte the last receive error. - * UART_NO_DATA is returned when no data is available. - * - * @return lower byte: received byte from ringbuffer - * @return higher byte: last receive status - * - \b 0 successfully received data from UART - * - \b UART_NO_DATA - *
no receive data available - * - \b UART_BUFFER_OVERFLOW - *
Receive ringbuffer overflow. - * We are not reading the receive buffer fast enough, - * one or more received character have been dropped - * - \b UART_OVERRUN_ERROR - *
Overrun condition by UART. - * A character already present in the UART UDR register was - * not read by the interrupt handler before the next character arrived, - * one or more received characters have been dropped. - * - \b UART_FRAME_ERROR - *
Framing Error by UART - */ -/*extern*/uint16_t uart0_getc(void); - -/** - * @brief Peek at next byte in ringbuffer - * - * Returns the next byte (character) of incoming UART data without removing it from the - * internal ring buffer. That is, successive calls to uartN_peek() will return the same - * character, as will the next call to uartN_getc(). - * - * UART_NO_DATA is returned when no data is available. - * - * @return lower byte: next byte in ringbuffer - * @return higher byte: last receive status - * - \b 0 successfully received data from UART - * - \b UART_NO_DATA - *
no receive data available - * - \b UART_BUFFER_OVERFLOW - *
Receive ringbuffer overflow. - * We are not reading the receive buffer fast enough, - * one or more received character have been dropped - * - \b UART_OVERRUN_ERROR - *
Overrun condition by UART. - * A character already present in the UART UDR register was - * not read by the interrupt handler before the next character arrived, - * one or more received characters have been dropped. - * - \b UART_FRAME_ERROR - *
Framing Error by UART - */ -/*extern*/uint16_t uart0_peek(void); - -/** - * @brief Put byte to ringbuffer for transmitting via UART - * @param data byte to be transmitted - * @return none - */ -/*extern*/void uart0_putc(uint8_t data); - - -/** - * @brief Put string to ringbuffer for transmitting via UART - * - * The string is buffered by the uart library in a circular buffer - * and one character at a time is transmitted to the UART using interrupts. - * Blocks if it can not write the whole string into the circular buffer. - * - * @param s string to be transmitted - * @return none - */ -/*extern*/void uart0_puts(const char *s); - - -/** - * @brief Put string from program memory to ringbuffer for transmitting via UART. - * - * The string is buffered by the uart library in a circular buffer - * and one character at a time is transmitted to the UART using interrupts. - * Blocks if it can not write the whole string into the circular buffer. - * - * @param s program memory string to be transmitted - * @return none - * @see uart0_puts_P - */ -/*extern*/void uart0_puts_p(const char *s); - -/** - * @brief Macro to automatically put a string constant into program memory - * \param __s string in program memory - */ -#define uart_puts_P(__s) uart0_puts_p(PSTR(__s)) - -/** @brief Macro to automatically put a string constant into program memory */ -#define uart0_puts_P(__s) uart0_puts_p(PSTR(__s)) - -/** - * @brief Return number of bytes waiting in the receive buffer - * @return bytes waiting in the receive buffer - */ -/*extern*/uint16_t uart0_available(void); - -/** - * @brief Flush bytes waiting in receive buffer - */ -/*extern*/void uart0_flush(void); - - -/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */ -/*extern*/void uart1_init(uint16_t baudrate); - -/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */ -/*extern*/uint16_t uart1_getc(void); - -/** @brief Peek at next byte in USART1 ringbuffer */ -/*extern*/uint16_t uart1_peek(void); - -/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */ -/*extern*/void uart1_putc(uint8_t data); - -/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */ -/*extern*/void uart1_puts(const char *s); - -/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */ -/*extern*/void uart1_puts_p(const char *s); - -/** @brief Macro to automatically put a string constant into program memory of USART1 @see uart1_puts_p */ -#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s)) - -/** @brief Return number of bytes waiting in the receive buffer of USART1 */ -/*extern*/uint16_t uart1_available(void); - -/** @brief Flush bytes waiting in receive buffer of USART1 */ -/*extern*/void uart1_flush(void); - - -/** @brief Initialize USART2 (only available on selected ATmegas) @see uart_init */ -/*extern*/void uart2_init(uint16_t baudrate); - -/** @brief Get received byte of USART2 from ringbuffer. (only available on selected ATmega) @see uart_getc */ -/*extern*/uint16_t uart2_getc(void); - -/** @brief Peek at next byte in USART2 ringbuffer */ -/*extern*/uint16_t uart2_peek(void); - -/** @brief Put byte to ringbuffer for transmitting via USART2 (only available on selected ATmega) @see uart_putc */ -/*extern*/void uart2_putc(uint8_t data); - -/** @brief Put string to ringbuffer for transmitting via USART2 (only available on selected ATmega) @see uart_puts */ -/*extern*/void uart2_puts(const char *s); - -/** @brief Put string from program memory to ringbuffer for transmitting via USART2 (only available on selected ATmega) @see uart_puts_p */ -/*extern*/void uart2_puts_p(const char *s); - -/** @brief Macro to automatically put a string constant into program memory of USART2 @see uart2_puts_p */ -#define uart2_puts_P(__s) uart2_puts_p(PSTR(__s)) - -/** @brief Return number of bytes waiting in the receive buffer of USART2 */ -/*extern*/uint16_t uart2_available(void); - -/** @brief Flush bytes waiting in receive buffer of USART2 */ -/*extern*/void uart2_flush(void); - - -/** @brief Initialize USART3 (only available on selected ATmegas) @see uart_init */ -/*extern*/void uart3_init(uint16_t baudrate); - -/** @brief Get received byte of USART3 from ringbuffer. (only available on selected ATmega) @see uart_getc */ -/*extern*/uint16_t uart3_getc(void); - -/** @brief Peek at next byte in USART3 ringbuffer */ -/*extern*/uint16_t uart3_peek(void); - -/** @brief Put byte to ringbuffer for transmitting via USART3 (only available on selected ATmega) @see uart_putc */ -/*extern*/void uart3_putc(uint8_t data); - -/** @brief Put string to ringbuffer for transmitting via USART3 (only available on selected ATmega) @see uart_puts */ -/*extern*/void uart3_puts(const char *s); - -/** @brief Put string from program memory to ringbuffer for transmitting via USART3 (only available on selected ATmega) @see uart_puts_p */ -/*extern*/void uart3_puts_p(const char *s); - -/** @brief Macro to automatically put a string constant into program memory of USART3 @see uart3_puts_p */ -#define uart3_puts_P(__s) uart3_puts_p(PSTR(__s)) - -/** @brief Return number of bytes waiting in the receive buffer of USART3 */ -/*extern*/uint16_t uart3_available(void); - -/** @brief Flush bytes waiting in receive buffer of USART3 */ -/*extern*/void uart3_flush(void); - -/**@}*/ - -#endif // UART_H - diff --git a/keyboards/blu/vimclutch/info.json b/keyboards/blu/vimclutch/info.json index bb9586b61f84..cbee78735cfb 100644 --- a/keyboards/blu/vimclutch/info.json +++ b/keyboards/blu/vimclutch/info.json @@ -11,8 +11,9 @@ "development_board": "promicro", "diode_direction": "ROW2COL", "matrix_pins": { - "cols": ["B3", "B2", "B6"], - "rows": ["B5"] + "direct": [ + ["B3", "B2", "B6"] + ] }, "layouts": { "LAYOUT": { diff --git a/keyboards/blu/vimclutch/readme.md b/keyboards/blu/vimclutch/readme.md index bbc6b9826066..94ebc183332b 100644 --- a/keyboards/blu/vimclutch/readme.md +++ b/keyboards/blu/vimclutch/readme.md @@ -19,8 +19,6 @@ Here are some included keymaps and their modes to get you started: * vc_i: the same as default but using `i` instead of `a` * vim_ai: vim clutch only, selectable between `a` and `i` -Also includes a mode for single-keypress in case of "push to talk clutch" - Make example for this keyboard after setting up your development environment: make blu/vimclutch:default @@ -34,3 +32,7 @@ Flashing example for this keyboard: Reset button on the reverse side of the enclosure for initializing flashing. 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). + +## Hardware Revision Compatibility +This keyboard as-it-is in the QMK repository at the is only designed to work with Revision B (and possibly beyond!) + diff --git a/keyboards/boardsource/equals/48/config.h b/keyboards/boardsource/equals/48/config.h new file mode 100644 index 000000000000..952fa269c6e7 --- /dev/null +++ b/keyboards/boardsource/equals/48/config.h @@ -0,0 +1,23 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U + +#define RGB_MATRIX_LED_COUNT 58 + +#define AUDIO_PIN GP29 +#define AUDIO_PWM_DRIVER PWMD6 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +#define AUDIO_INIT_DELAY + +// SPI Configuration +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN GP26 +#define SPI_MOSI_PIN GP27 + +// Display Configuration +#define OLED_CS_PIN GP25 +#define OLED_DC_PIN GP20 +#define OLED_RST_PIN GP28 diff --git a/keyboards/boardsource/equals/48/halconf.h b/keyboards/boardsource/equals/48/halconf.h new file mode 100644 index 000000000000..ec1c061eeca5 --- /dev/null +++ b/keyboards/boardsource/equals/48/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/boardsource/equals/48/info.json b/keyboards/boardsource/equals/48/info.json new file mode 100644 index 000000000000..63561f4c5979 --- /dev/null +++ b/keyboards/boardsource/equals/48/info.json @@ -0,0 +1,180 @@ +{ + "keyboard_name": "Equals 48", + "bootloader": "rp2040", + "processor": "RP2040", + "features": { + "audio":true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11"], + "rows": ["GP12", "GP13", "GP16", "GP17"] + }, + "ws2812": { + "driver": "vendor", + "pin": "GP21" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 150, + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "layout": [ + { "flags": 2, "x": 220, "y": 17 }, + { "flags": 2, "x": 172, "y": 17 }, + { "flags": 2, "x": 112, "y": 17 }, + { "flags": 2, "x": 50, "y": 17 }, + { "flags": 2, "x": 4, "y": 17 }, + { "flags": 2, "x": 4, "y": 56 }, + { "flags": 2, "x": 50, "y": 56 }, + { "flags": 2, "x": 112, "y": 56 }, + { "flags": 2, "x": 172, "y": 56 }, + { "flags": 2, "x": 220, "y": 56 }, + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 }, + { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 }, + { "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 }, + { "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 }, + { "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 }, + { "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 }, + { "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 }, + { "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 }, + { "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 }, + { "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 }, + { "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 }, + { "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 }, + { "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 }, + { "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 }, + { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 }, + { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 }, + { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 }, + { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 }, + { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 }, + { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 }, + { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 }, + { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 }, + { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 }, + { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 }, + { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 }, + { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 }, + { "flags": 1, "matrix": [3, 1], "x": 20, "y": 64 }, + { "flags": 1, "matrix": [3, 2], "x": 40, "y": 64 }, + { "flags": 1, "matrix": [3, 3], "x": 61, "y": 64 }, + { "flags": 1, "matrix": [3, 4], "x": 81, "y": 64 }, + { "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 }, + { "flags": 1, "matrix": [3, 6], "x": 122, "y": 64 }, + { "flags": 1, "matrix": [3, 7], "x": 142, "y": 64 }, + { "flags": 1, "matrix": [3, 8], "x": 162, "y": 64 }, + { "flags": 1, "matrix": [3, 9], "x": 183, "y": 64 }, + { "flags": 1, "matrix": [3, 10], "x": 203, "y": 64 }, + { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 } + ] + }, + "community_layouts": ["ortho_4x12"], + "layouts": { + "LAYOUT_ortho_4x12": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 }, + { "matrix": [3, 10], "x": 10, "y": 3 }, + { "matrix": [3, 11], "x": 11, "y": 3 } + ] + } + } +} diff --git a/keyboards/boardsource/equals/48/keymaps/default/keymap.c b/keyboards/boardsource/equals/48/keymaps/default/keymap.c new file mode 100644 index 000000000000..92d83bb0e892 --- /dev/null +++ b/keyboards/boardsource/equals/48/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +// Copyright 2022 @boardsource +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/48/keymaps/via/keymap.c b/keyboards/boardsource/equals/48/keymaps/via/keymap.c new file mode 100644 index 000000000000..3c3427d12255 --- /dev/null +++ b/keyboards/boardsource/equals/48/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +// Copyright 2022 @boardsource +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_4x12( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_4x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_4x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY), + +}; diff --git a/keyboards/keychron/q1/iso/keymaps/via/rules.mk b/keyboards/boardsource/equals/48/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q1/iso/keymaps/via/rules.mk rename to keyboards/boardsource/equals/48/keymaps/via/rules.mk diff --git a/keyboards/boardsource/equals/48/mcuconf.h b/keyboards/boardsource/equals/48/mcuconf.h new file mode 100644 index 000000000000..e38c802c071a --- /dev/null +++ b/keyboards/boardsource/equals/48/mcuconf.h @@ -0,0 +1,11 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM6 +#define RP_PWM_USE_PWM6 TRUE + +#undef RP_SPI_USE_SPI1 +#define RP_SPI_USE_SPI1 TRUE diff --git a/keyboards/boardsource/equals/48/rules.mk b/keyboards/boardsource/equals/48/rules.mk new file mode 100644 index 000000000000..4192b0c2e54d --- /dev/null +++ b/keyboards/boardsource/equals/48/rules.mk @@ -0,0 +1,3 @@ +AUDIO_DRIVER = pwm_hardware +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += st7735_spi diff --git a/keyboards/boardsource/equals/60/config.h b/keyboards/boardsource/equals/60/config.h new file mode 100644 index 000000000000..ee4bc6b1e850 --- /dev/null +++ b/keyboards/boardsource/equals/60/config.h @@ -0,0 +1,23 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U + +#define RGB_MATRIX_LED_COUNT 70 + +#define AUDIO_PIN GP29 +#define AUDIO_PWM_DRIVER PWMD6 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +#define AUDIO_INIT_DELAY + +// SPI Configuration +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN GP26 +#define SPI_MOSI_PIN GP27 + +// Display Configuration +#define OLED_CS_PIN GP25 +#define OLED_DC_PIN GP20 +#define OLED_RST_PIN GP28 diff --git a/keyboards/boardsource/equals/60/halconf.h b/keyboards/boardsource/equals/60/halconf.h new file mode 100644 index 000000000000..ec1c061eeca5 --- /dev/null +++ b/keyboards/boardsource/equals/60/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/boardsource/equals/60/info.json b/keyboards/boardsource/equals/60/info.json new file mode 100644 index 000000000000..355e434b4e5d --- /dev/null +++ b/keyboards/boardsource/equals/60/info.json @@ -0,0 +1,203 @@ +{ + "keyboard_name": "Equals 60", + "bootloader": "rp2040", + "processor": "RP2040", + "features": { + "audio":true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11"], + "rows": ["GP12", "GP13", "GP16", "GP17", "GP18"] + }, + "ws2812": { + "driver": "vendor", + "pin": "GP21" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 150, + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "layout": [ + { "flags": 2, "x": 220, "y": 17 }, + { "flags": 2, "x": 172, "y": 17 }, + { "flags": 2, "x": 112, "y": 17 }, + { "flags": 2, "x": 50, "y": 17 }, + { "flags": 2, "x": 4, "y": 17 }, + { "flags": 2, "x": 4, "y": 56 }, + { "flags": 2, "x": 50, "y": 56 }, + { "flags": 2, "x": 112, "y": 56 }, + { "flags": 2, "x": 172, "y": 56 }, + { "flags": 2, "x": 220, "y": 56 }, + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 }, + { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 }, + { "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 }, + { "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 }, + { "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 }, + { "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 }, + { "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 }, + { "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 }, + { "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 }, + { "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 }, + { "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 }, + { "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 }, + { "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 }, + { "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 }, + { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 }, + { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 }, + { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 }, + { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 }, + { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 }, + { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 }, + { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 }, + { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 }, + { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 }, + { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 }, + { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 }, + { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 }, + { "flags": 4, "matrix": [3, 1], "x": 20, "y": 64 }, + { "flags": 4, "matrix": [3, 2], "x": 40, "y": 64 }, + { "flags": 4, "matrix": [3, 3], "x": 61, "y": 64 }, + { "flags": 4, "matrix": [3, 4], "x": 81, "y": 64 }, + { "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 }, + { "flags": 4, "matrix": [3, 6], "x": 122, "y": 64 }, + { "flags": 4, "matrix": [3, 7], "x": 142, "y": 64 }, + { "flags": 4, "matrix": [3, 8], "x": 162, "y": 64 }, + { "flags": 4, "matrix": [3, 9], "x": 183, "y": 64 }, + { "flags": 4, "matrix": [3, 10], "x": 203, "y": 64 }, + { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 }, + { "flags": 1, "matrix": [4, 0], "x": 0, "y": 86 }, + { "flags": 1, "matrix": [4, 1], "x": 20, "y": 86 }, + { "flags": 1, "matrix": [4, 2], "x": 40, "y": 86 }, + { "flags": 1, "matrix": [4, 3], "x": 61, "y": 86 }, + { "flags": 1, "matrix": [4, 4], "x": 81, "y": 86 }, + { "flags": 4, "matrix": [4, 5], "x": 111, "y": 86 }, + { "flags": 1, "matrix": [4, 7], "x": 142, "y": 86 }, + { "flags": 1, "matrix": [4, 8], "x": 162, "y": 86 }, + { "flags": 1, "matrix": [4, 9], "x": 183, "y": 86 }, + { "flags": 1, "matrix": [4, 10], "x": 203, "y": 86 }, + { "flags": 1, "matrix": [4, 11], "x": 224, "y": 86 } + ] + }, + "community_layouts": ["ortho_5x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 }, + { "matrix": [3, 10], "x": 10, "y": 3 }, + { "matrix": [3, 11], "x": 11, "y": 3 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1, "y": 4 }, + { "matrix": [4, 2], "x": 2, "y": 4 }, + { "matrix": [4, 3], "x": 3, "y": 4 }, + { "matrix": [4, 4], "x": 4, "y": 4 }, + { "matrix": [4, 5], "x": 5, "y": 4 }, + { "matrix": [4, 6], "x": 6, "y": 4 }, + { "matrix": [4, 7], "x": 7, "y": 4 }, + { "matrix": [4, 8], "x": 8, "y": 4 }, + { "matrix": [4, 9], "x": 9, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 } + ] + } + } +} diff --git a/keyboards/boardsource/equals/60/keymaps/default/keymap.c b/keyboards/boardsource/equals/60/keymaps/default/keymap.c new file mode 100644 index 000000000000..48e26a409474 --- /dev/null +++ b/keyboards/boardsource/equals/60/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_RGHT, RGB_MOD, RGB_TOG + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + 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_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/60/keymaps/via/keymap.c b/keyboards/boardsource/equals/60/keymaps/via/keymap.c new file mode 100644 index 000000000000..54528b8f600e --- /dev/null +++ b/keyboards/boardsource/equals/60/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/60/keymaps/via/rules.mk b/keyboards/boardsource/equals/60/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/boardsource/equals/60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/boardsource/equals/60/mcuconf.h b/keyboards/boardsource/equals/60/mcuconf.h new file mode 100644 index 000000000000..e38c802c071a --- /dev/null +++ b/keyboards/boardsource/equals/60/mcuconf.h @@ -0,0 +1,11 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM6 +#define RP_PWM_USE_PWM6 TRUE + +#undef RP_SPI_USE_SPI1 +#define RP_SPI_USE_SPI1 TRUE diff --git a/keyboards/boardsource/equals/60/rules.mk b/keyboards/boardsource/equals/60/rules.mk new file mode 100644 index 000000000000..4192b0c2e54d --- /dev/null +++ b/keyboards/boardsource/equals/60/rules.mk @@ -0,0 +1,3 @@ +AUDIO_DRIVER = pwm_hardware +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += st7735_spi diff --git a/keyboards/boardsource/equals/avr/config.h b/keyboards/boardsource/equals/avr/config.h new file mode 100644 index 000000000000..68754cbe528d --- /dev/null +++ b/keyboards/boardsource/equals/avr/config.h @@ -0,0 +1,4 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once +#define RGB_MATRIX_LED_COUNT 70 diff --git a/keyboards/boardsource/equals/avr/info.json b/keyboards/boardsource/equals/avr/info.json new file mode 100644 index 000000000000..bbade34e6383 --- /dev/null +++ b/keyboards/boardsource/equals/avr/info.json @@ -0,0 +1,202 @@ +{ + "keyboard_name": "Equals kit", + + "build": { + "lto": true + }, + "development_board": "promicro", + "matrix_pins": { + "cols": ["F4","F5","F6","F7","B1","B3","B2","B6","B5","B4","E6","D7"], + "rows": ["D3","D2","D1","D0","D4"] + }, + "ws2812": { + "pin": "C6" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 150, + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "layout": [ + { "flags": 2, "x": 220, "y": 17 }, + { "flags": 2, "x": 172, "y": 17 }, + { "flags": 2, "x": 112, "y": 17 }, + { "flags": 2, "x": 50, "y": 17 }, + { "flags": 2, "x": 4, "y": 17 }, + { "flags": 2, "x": 4, "y": 56 }, + { "flags": 2, "x": 50, "y": 56 }, + { "flags": 2, "x": 112, "y": 56 }, + { "flags": 2, "x": 172, "y": 56 }, + { "flags": 2, "x": 220, "y": 56 }, + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 }, + { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 }, + { "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 }, + { "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 }, + { "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 }, + { "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 }, + { "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 }, + { "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 }, + { "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 }, + { "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 }, + { "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 }, + { "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 }, + { "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 }, + { "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 }, + { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 }, + { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 }, + { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 }, + { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 }, + { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 }, + { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 }, + { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 }, + { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 }, + { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 }, + { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 }, + { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 }, + { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 }, + { "flags": 4, "matrix": [3, 1], "x": 20, "y": 64 }, + { "flags": 4, "matrix": [3, 2], "x": 40, "y": 64 }, + { "flags": 4, "matrix": [3, 3], "x": 61, "y": 64 }, + { "flags": 4, "matrix": [3, 4], "x": 81, "y": 64 }, + { "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 }, + { "flags": 4, "matrix": [3, 6], "x": 122, "y": 64 }, + { "flags": 4, "matrix": [3, 7], "x": 142, "y": 64 }, + { "flags": 4, "matrix": [3, 8], "x": 162, "y": 64 }, + { "flags": 4, "matrix": [3, 9], "x": 183, "y": 64 }, + { "flags": 4, "matrix": [3, 10], "x": 203, "y": 64 }, + { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 }, + { "flags": 1, "matrix": [4, 0], "x": 0, "y": 86 }, + { "flags": 1, "matrix": [4, 1], "x": 20, "y": 86 }, + { "flags": 1, "matrix": [4, 2], "x": 40, "y": 86 }, + { "flags": 1, "matrix": [4, 3], "x": 61, "y": 86 }, + { "flags": 1, "matrix": [4, 4], "x": 81, "y": 86 }, + { "flags": 4, "matrix": [4, 5], "x": 111, "y": 86 }, + { "flags": 1, "matrix": [4, 7], "x": 142, "y": 86 }, + { "flags": 1, "matrix": [4, 8], "x": 162, "y": 86 }, + { "flags": 1, "matrix": [4, 9], "x": 183, "y": 86 }, + { "flags": 1, "matrix": [4, 10], "x": 203, "y": 86 }, + { "flags": 1, "matrix": [4, 11], "x": 224, "y": 86 } + ] + }, + "community_layouts": ["ortho_5x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 }, + { "matrix": [3, 10], "x": 10, "y": 3 }, + { "matrix": [3, 11], "x": 11, "y": 3 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1, "y": 4 }, + { "matrix": [4, 2], "x": 2, "y": 4 }, + { "matrix": [4, 3], "x": 3, "y": 4 }, + { "matrix": [4, 4], "x": 4, "y": 4 }, + { "matrix": [4, 5], "x": 5, "y": 4 }, + { "matrix": [4, 6], "x": 6, "y": 4 }, + { "matrix": [4, 7], "x": 7, "y": 4 }, + { "matrix": [4, 8], "x": 8, "y": 4 }, + { "matrix": [4, 9], "x": 9, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 } + ] + } + } +} diff --git a/keyboards/boardsource/equals/avr/keymaps/default/keymap.c b/keyboards/boardsource/equals/avr/keymaps/default/keymap.c new file mode 100644 index 000000000000..99a049214b14 --- /dev/null +++ b/keyboards/boardsource/equals/avr/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, CK_TOGG, RGB_MOD, RGB_TOG + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + 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_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/avr/keymaps/via/keymap.c b/keyboards/boardsource/equals/avr/keymaps/via/keymap.c new file mode 100644 index 000000000000..54528b8f600e --- /dev/null +++ b/keyboards/boardsource/equals/avr/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +enum layers { + _MAIN, + _RAISE, + _LOWER +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_MAIN] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [_RAISE] = LAYOUT_ortho_5x12( + 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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_LOWER] = LAYOUT_ortho_5x12( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ) +}; diff --git a/keyboards/boardsource/equals/avr/keymaps/via/rules.mk b/keyboards/boardsource/equals/avr/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/boardsource/equals/avr/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/boardsource/equals/equals.c b/keyboards/boardsource/equals/equals.c new file mode 100644 index 000000000000..8eb933e70d21 --- /dev/null +++ b/keyboards/boardsource/equals/equals.c @@ -0,0 +1,18 @@ +// Copyright 2023 @boardsource +// SPDX-License-Identifier: GPL-2.0-or-later +#include "quantum.h" +__attribute__((weak)) void ui_init(void) {}; +__attribute__((weak)) void ui_task(void) {}; + +#ifdef QUANTUM_PAINTER_ENABLE +void keyboard_post_init_kb(void) { + // Init the display + ui_init(); + keyboard_post_init_user(); +} + +void housekeeping_task_kb(void) { + // Draw the display + ui_task(); +} +#endif //QUANTUM_PAINTER_ENABLE diff --git a/keyboards/boardsource/equals/graphics/thintel15.qff.c b/keyboards/boardsource/equals/graphics/thintel15.qff.c new file mode 100644 index 000000000000..c361ad5346eb --- /dev/null +++ b/keyboards/boardsource/equals/graphics/thintel15.qff.c @@ -0,0 +1,69 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include + +// clang-format off +const uint8_t font_thintel15[966] = { + 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0xC6, 0x03, 0x00, 0x00, 0x39, 0xFC, 0xFF, + 0xFF, 0x0B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x02, 0x00, + 0x00, 0xC2, 0x00, 0x00, 0x84, 0x01, 0x00, 0x06, 0x03, 0x00, 0x46, 0x05, 0x00, 0x88, 0x07, 0x00, + 0x46, 0x0A, 0x00, 0x82, 0x0C, 0x00, 0x43, 0x0D, 0x00, 0x83, 0x0E, 0x00, 0xC4, 0x0F, 0x00, 0x46, + 0x11, 0x00, 0x83, 0x13, 0x00, 0xC5, 0x14, 0x00, 0x82, 0x16, 0x00, 0x44, 0x17, 0x00, 0xC5, 0x18, + 0x00, 0x84, 0x1A, 0x00, 0x05, 0x1C, 0x00, 0xC5, 0x1D, 0x00, 0x85, 0x1F, 0x00, 0x45, 0x21, 0x00, + 0x05, 0x23, 0x00, 0xC5, 0x24, 0x00, 0x85, 0x26, 0x00, 0x45, 0x28, 0x00, 0x02, 0x2A, 0x00, 0xC3, + 0x2A, 0x00, 0x05, 0x2C, 0x00, 0xC5, 0x2D, 0x00, 0x85, 0x2F, 0x00, 0x45, 0x31, 0x00, 0x08, 0x33, + 0x00, 0xC5, 0x35, 0x00, 0x85, 0x37, 0x00, 0x45, 0x39, 0x00, 0x05, 0x3B, 0x00, 0xC4, 0x3C, 0x00, + 0x44, 0x3E, 0x00, 0xC5, 0x3F, 0x00, 0x85, 0x41, 0x00, 0x44, 0x43, 0x00, 0xC5, 0x44, 0x00, 0x85, + 0x46, 0x00, 0x44, 0x48, 0x00, 0xC6, 0x49, 0x00, 0x06, 0x4C, 0x00, 0x45, 0x4E, 0x00, 0x05, 0x50, + 0x00, 0xC5, 0x51, 0x00, 0x85, 0x53, 0x00, 0x45, 0x55, 0x00, 0x06, 0x57, 0x00, 0x45, 0x59, 0x00, + 0x06, 0x5B, 0x00, 0x46, 0x5D, 0x00, 0x86, 0x5F, 0x00, 0xC6, 0x61, 0x00, 0x06, 0x64, 0x00, 0x44, + 0x66, 0x00, 0xC4, 0x67, 0x00, 0x44, 0x69, 0x00, 0xC6, 0x6A, 0x00, 0x05, 0x6D, 0x00, 0xC3, 0x6E, + 0x00, 0x05, 0x70, 0x00, 0xC5, 0x71, 0x00, 0x84, 0x73, 0x00, 0x05, 0x75, 0x00, 0xC5, 0x76, 0x00, + 0x84, 0x78, 0x00, 0x05, 0x7A, 0x00, 0xC5, 0x7B, 0x00, 0x82, 0x7D, 0x00, 0x43, 0x7E, 0x00, 0x85, + 0x7F, 0x00, 0x42, 0x81, 0x00, 0x06, 0x82, 0x00, 0x45, 0x84, 0x00, 0x05, 0x86, 0x00, 0xC5, 0x87, + 0x00, 0x85, 0x89, 0x00, 0x44, 0x8B, 0x00, 0xC5, 0x8C, 0x00, 0x83, 0x8E, 0x00, 0xC5, 0x8F, 0x00, + 0x86, 0x91, 0x00, 0xC6, 0x93, 0x00, 0x06, 0x96, 0x00, 0x45, 0x98, 0x00, 0x04, 0x9A, 0x00, 0x85, + 0x9B, 0x00, 0x42, 0x9D, 0x00, 0x05, 0x9E, 0x00, 0xC5, 0x9F, 0x00, 0x04, 0xFB, 0x86, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x54, 0x45, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFD, 0xD2, + 0xAF, 0x28, 0x00, 0x00, 0x00, 0x84, 0x53, 0x15, 0x0E, 0x55, 0x39, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x15, 0x0A, 0x28, 0x54, 0x24, 0x00, 0x00, 0x00, 0x80, 0x50, 0x14, 0x52, 0x95, 0x58, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x4A, 0x92, 0x24, 0x02, 0x00, 0x91, 0x24, 0x49, 0x01, 0x00, 0x20, + 0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x1F, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x0A, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x24, 0x22, + 0x11, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00, 0x20, 0x23, 0x22, 0x72, 0x00, 0x00, + 0xC0, 0x24, 0x44, 0x44, 0x78, 0x00, 0x00, 0xC0, 0x24, 0x44, 0x50, 0x32, 0x00, 0x00, 0x80, 0x29, + 0x95, 0x1E, 0x42, 0x00, 0x00, 0xE0, 0x85, 0x83, 0x50, 0x32, 0x00, 0x00, 0xC0, 0xA4, 0x70, 0x52, + 0x32, 0x00, 0x00, 0xE0, 0x21, 0x42, 0x84, 0x10, 0x00, 0x00, 0xC0, 0xA4, 0x64, 0x52, 0x32, 0x00, + 0x00, 0xC0, 0xA4, 0xE4, 0x50, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x30, 0x60, 0x0A, 0x00, + 0x00, 0x11, 0x11, 0x04, 0x41, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x08, + 0x82, 0x88, 0x08, 0x00, 0x00, 0xC0, 0x24, 0x64, 0x04, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x59, + 0x55, 0x2D, 0x02, 0x1C, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0xE0, 0xA4, + 0x74, 0x52, 0x3A, 0x00, 0x00, 0xC0, 0xA4, 0x10, 0x42, 0x32, 0x00, 0x00, 0xE0, 0xA4, 0x94, 0x52, + 0x3A, 0x00, 0x00, 0x70, 0x11, 0x17, 0x71, 0x00, 0x00, 0x70, 0x11, 0x17, 0x11, 0x00, 0x00, 0xC0, + 0xA4, 0xD0, 0x52, 0x32, 0x00, 0x00, 0x20, 0xA5, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0x70, 0x22, 0x22, + 0x72, 0x00, 0x00, 0xC0, 0x21, 0x84, 0x50, 0x32, 0x00, 0x00, 0x20, 0xA5, 0x32, 0x4A, 0x4A, 0x00, + 0x00, 0x10, 0x11, 0x11, 0x71, 0x00, 0x00, 0x40, 0xB4, 0x55, 0x51, 0x14, 0x45, 0x00, 0x00, 0x00, + 0x40, 0x34, 0x55, 0x59, 0x14, 0x45, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00, + 0xE0, 0xA4, 0x74, 0x42, 0x08, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x51, 0x00, 0x00, 0xE0, 0xA4, + 0x74, 0x52, 0x4A, 0x00, 0x00, 0xC0, 0xA4, 0x60, 0x50, 0x32, 0x00, 0x00, 0xC0, 0x47, 0x10, 0x04, + 0x41, 0x10, 0x00, 0x00, 0x00, 0x20, 0xA5, 0x94, 0x52, 0x32, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51, + 0xA4, 0x10, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51, 0xB5, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14, + 0x29, 0x84, 0x12, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x0E, 0x41, 0x10, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x21, 0x84, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x17, 0x11, 0x11, 0x11, 0x07, 0x00, 0x10, + 0x21, 0x22, 0x44, 0x00, 0x00, 0x47, 0x44, 0x44, 0x44, 0x07, 0x00, 0x84, 0x12, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x93, 0x5C, 0x72, 0x00, 0x00, 0x20, 0x84, 0x93, 0x52, 0x3A, 0x00, 0x00, 0x00, 0x60, + 0x11, 0x61, 0x00, 0x00, 0x00, 0x21, 0x97, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x93, 0x5E, 0x70, + 0x00, 0x00, 0x60, 0x11, 0x13, 0x11, 0x00, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x28, 0x19, 0x20, + 0x84, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x10, 0x55, 0x00, 0x80, 0x20, 0x49, 0x0A, 0x00, 0x20, 0x84, + 0x94, 0x4E, 0x4A, 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0x2C, 0x55, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x93, 0x52, 0x32, 0x00, 0x00, 0x00, + 0x80, 0x93, 0x52, 0x3A, 0x21, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x08, 0x01, 0x00, 0x50, 0x13, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0C, 0x3A, 0x00, 0x00, 0x48, 0x96, 0x44, 0x00, 0x00, 0x00, + 0x80, 0x94, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x44, 0x51, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x51, 0x54, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0xA1, 0x44, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x94, 0x52, 0x72, 0x28, 0x19, 0x00, 0x70, 0x24, 0x71, 0x00, 0x00, 0x4C, 0x08, + 0x11, 0x84, 0x10, 0x0C, 0x00, 0x55, 0x55, 0x01, 0x83, 0x10, 0x82, 0x08, 0x21, 0x03, 0x00, 0x00, + 0x00, 0xB0, 0x1A, 0x00, 0x00, 0x00, +}; +// clang-format on diff --git a/keyboards/boardsource/equals/info.json b/keyboards/boardsource/equals/info.json new file mode 100644 index 000000000000..bed8ec2640c5 --- /dev/null +++ b/keyboards/boardsource/equals/info.json @@ -0,0 +1,21 @@ +{ + "manufacturer": "Boardsource", + "maintainer": "Boardsource", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x7688", + "vid": "0x4273" + } + +} diff --git a/keyboards/boardsource/equals/readme.md b/keyboards/boardsource/equals/readme.md new file mode 100644 index 000000000000..9c5d48f5c297 --- /dev/null +++ b/keyboards/boardsource/equals/readme.md @@ -0,0 +1,33 @@ +# equals + +![equals](https://i.imgur.com/c3adFqsh.jpeg) + +* Keyboard Maintainer: [Cole Smith](https://github.com/boardsource) +* Hardware Supported: Equals PCB w/ RP2040 +* Hardware Availability: [boardsource](https://boardsource.xyz) + +Make example for this keyboard (after setting up your build environment): + + make boardsource/equals/48:default + make boardsource/equals/60:default + make boardsource/equals/avr:default + +Flashing example for this keyboard: + + make boardsource/equals/48:default:flash + make boardsource/equals/60:default:flash + make boardsource/equals/avr:default:flash + +Compile `avr` firmware if your PCB uses a drop-in microcontroller like Pro Micro. + + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/boardsource/equals/ui.c b/keyboards/boardsource/equals/ui.c new file mode 100644 index 000000000000..f953fc4c8896 --- /dev/null +++ b/keyboards/boardsource/equals/ui.c @@ -0,0 +1,40 @@ +// Copyright 2023 Cole Smith (@boardsource) +// SPDX-License-Identifier: GPL-2.0-or-later +#include +#include "qp.h" +#include "qp_st7735.h" +#include "graphics/thintel15.qff.c" + +static painter_device_t oled; +static painter_font_handle_t font; + +__attribute__((weak)) void ui_init(void) { + oled = qp_st7735_make_spi_device(128, 160, OLED_CS_PIN, OLED_DC_PIN, OLED_RST_PIN, 8, 0); + font = qp_load_font_mem(font_thintel15); + qp_init(oled, QP_ROTATION_0); + qp_rect(oled, 0, 0, 130, 162, 0, 0, 0, true); + qp_rect(oled, 20, 20, 108, 60, 55, 55, 55, true); + qp_rect(oled, 20, 80, 108, 120, 55, 55, 55, true); + qp_flush(oled); +} + +__attribute__((weak)) void ui_task(void) { + static const char *text = "Layer:"; + int16_t width = qp_textwidth(font, text); + qp_drawtext(oled, 20, 140, font, text); + + switch (get_highest_layer(layer_state)) { + case 0: + qp_drawtext(oled, (20 + width), 140, font, "QWERTY"); + break; + case 1: + qp_drawtext(oled, (20 + width), 140, font, "SYMBOL"); + break; + case 2: + qp_drawtext(oled, (20 + width), 140, font, "NUMBER"); + break; + default: + qp_drawtext(oled, (20 + width), 140, font, "_PANIC_"); + break; + } +} diff --git a/keyboards/boardsource/lulu/keymaps/manna-harbour_miryoku/config.h b/keyboards/boardsource/lulu/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index b4249396da14..000000000000 --- a/keyboards/boardsource/lulu/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT(\ -XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ - XXX, K32, K33, K34, K35, K36, K37, XXX\ -) diff --git a/keyboards/boardsource/lulu/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/boardsource/lulu/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/boardsource/lulu/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/boardsource/lulu/keymaps/rmeli/config.h b/keyboards/boardsource/lulu/keymaps/rmeli/config.h deleted file mode 100644 index 171eaed0dbb6..000000000000 --- a/keyboards/boardsource/lulu/keymaps/rmeli/config.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -Copyright 2022 Rocco Meli <@RMeli> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 MASTER_LEFT // Left side is the master -#define SPLIT_LED_STATE_ENABLE - -#ifdef RGB_MATRIX_ENABLE -// Configure RGB Matrix -# define RGB_MATRIX_KEYPRESSES // enable keypress effects -# define RGB_MATRIX_LED_FLUSH_LIMIT 16 -# define RGB_DISABLE_WHEN_USB_SUSPENDED -# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR -# define RGB_MATRIX_DEFAULT_HUE 10 -# define RGB_MATRIX_DEFAULT_SAT 255 -# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -// Disable RGB Matrix effects (from lulu/config.h) -# 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 -// Enable RGB Matrix effects -# define ENABLE_RGB_MATRIX_BREATHING -# define ENABLE_RGB_MATRIX_TYPING_HEATMAP -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define ENABLE_RGB_MATRIX_SOLID_COLOR -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -#endif diff --git a/keyboards/boardsource/lulu/keymaps/rmeli/keymap.c b/keyboards/boardsource/lulu/keymaps/rmeli/keymap.c deleted file mode 100644 index f9be18ee2d77..000000000000 --- a/keyboards/boardsource/lulu/keymaps/rmeli/keymap.c +++ /dev/null @@ -1,108 +0,0 @@ -/* -Copyright 2022 Cole Smith -Copyright 2022 Rocco Meli <@RMeli> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "rmeli.h" - -enum layers { - _QWERTY, - _COLEMAK_DH, - _RAISE, - _LOWER, - _ADJUST, -}; - -#define RAISE MO(_RAISE) -#define LOWER MO(_LOWER) - -#define QWY_DF DF(_QWERTY) -#define CMK_DF DF(_COLEMAK_DH) - -// clang-format off -#define __________THUMB_LEFT_x4___________ KC_LALT, KC_LGUI, LOWER, KC_SPC -#define __________THUMB_RIGHT_x4__________ KC_ENT, RAISE, KC_LCTL, KC_RGUI -// clang-format on - -/* LAYOUT - * - * ,-----------------------------. ,-----------------------------. - * | | | | | | | | | | | | | | - * |----+----+----+----+----+----| |----+----+----+----+----+----| - * | | | | | | | | | | | | | | - * |----+----+----+----+----+----| |----+----+----+----+----+----| - * | | | | | | |-----. ,-----| | | | | | | - * |----+----+----+----+----+----| | | |----+----+----+----+----+----| - * | | | | | | |-----| |-----| | | | | | | - * `----------------------------/ / \ \----------------------------' - * | | | | / / \ \ | | | | - * | | | |/ / \ \ | | | | - * `--------------''-----' '------''--------------' - */ - -// Define wrapper for standard LULU layout -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_wrapper( - ___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________, - ___________________QWERTY_L1_x6_____________________, ___________________QWERTY_R1_x6_____________________, - ___________________QWERTY_L2_x6_____________________, ___________________QWERTY_R2_x6_____________________, - ___________________QWERTY_L3_x6_____________________, KC_LBRC, KC_RBRC, ___________________QWERTY_R3_x6_____________________, - __________THUMB_LEFT_x4___________, __________THUMB_RIGHT_x4__________ - ), - - [_COLEMAK_DH] = LAYOUT_wrapper( - ___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________, - ________________COLEMAK_MOD_DH_L1_x6________________, ________________COLEMAK_MOD_DH_R1_x6________________, - ________________COLEMAK_MOD_DH_L2_x6________________, ________________COLEMAK_MOD_DH_R2_x6________________, - ________________COLEMAK_MOD_DH_L3_x6________________, KC_LBRC, KC_RBRC, ________________COLEMAK_MOD_DH_R3_x6________________, - __________THUMB_LEFT_x4___________, __________THUMB_RIGHT_x4__________ - ), - - [_LOWER] = LAYOUT_wrapper( - ____________________FUNC_LEFT_x6____________________, ____________________FUNC_RIGHT_x6___________________, - _______, ______________NUMBER_LEFT_x5_______________, ______________NUMBER_RIGHT_x5______________, _______, - _______, ______________UNICODE_L2_x5________________, ________________NAV_R2_x5__________________, XXXXXXX, - _______, ______________UNICODE_L3_x5________________, _______, _______, ________________NAV_R3_x5__________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [_RAISE] = LAYOUT_wrapper( - ___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________, - ___________________SYMBOL_LEFT_x6___________________, ___________________SYMBOL_RIGHT_x6__________________, - _______, ____________NAV_VIM_x4____________, XXXXXXX, ____________________SYMBOL_R2_x6____________________, - _______, _________________NONE_5x___________________, _______, _______, ____________________SYMBOL_R3_x6____________________, - _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [_ADJUST] = LAYOUT_wrapper( - QK_BOOT, _________________NONE_5x___________________, ______________________NONE_6x_______________________, - XXXXXXX, _________________NONE_5x___________________, _______________CONFIG_R1_x5________________, QWY_DF, - RGB_TOG, ________________RGB_L2_x5__________________, _______________CONFIG_R2_x5________________, XXXXXXX, - XXXXXXX, ________________RGB_L3_x5__________________, _______, _______, _______________CONFIG_R3_x5________________, CMK_DF, - _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; -// clang-format on - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} diff --git a/keyboards/boardsource/lulu/keymaps/rmeli/rules.mk b/keyboards/boardsource/lulu/keymaps/rmeli/rules.mk deleted file mode 100644 index 035e9814e241..000000000000 --- a/keyboards/boardsource/lulu/keymaps/rmeli/rules.mk +++ /dev/null @@ -1,9 +0,0 @@ -TAP_DANCE_ENABLE = yes -AUTO_SHIFT_ENABLE = no // disable auto-shift with home row mods - -UNICODEMAP_ENABLE = yes -NKRO_ENABLE = yes -MAGIC_ENABLE = yes - -RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes \ No newline at end of file diff --git a/keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c b/keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c deleted file mode 100644 index 5b37bb666772..000000000000 --- a/keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c +++ /dev/null @@ -1,98 +0,0 @@ -/* Copyright 2020 Stanrc85 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "stanrc85.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Base */ -[_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_BSPC, KC_BSPC, KC_MPLY, - 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, CA_SCLN, - KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, CA_QUOT, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, LT_SPCF, LT_SPCF, LT_SPCF, TD_TWIN, MO(_FN2_60), KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT -), -[_DEFAULT] = 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_MPLY, - 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, CA_SCLN, - KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, CA_QUOT, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, LT_SPCF, LT_SPCF, LT_SPCF, TD_TWIN, MO(_FN2_60), KC_GRV, KC_LEFT, KC_DOWN, KC_RGHT -), -[_FN1_60] = LAYOUT_all( - KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, _______, - _______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, _______, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS, _______, - KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, - _______, _______, KC_RDP, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), -[_FN2_60] = LAYOUT_all( - RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT) -) - -}; - - -bool rgb_matrix_indicators_user(void) { - uint8_t layer = get_highest_layer(layer_state); - switch (layer) { - case _FN1_60: - rgb_matrix_set_color(10, 0, 0, 255); - break; - case _FN2_60: - rgb_matrix_set_color(10, 255, 255, 255); - break; - case _DEFAULT: - rgb_matrix_set_color(10, 0, 255, 0); - break; - default: - break; - } - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(10, 255, 0, 0); - } - return false; -} - -void matrix_init_kb(void){ - -#ifdef RGB_MATRIX_ENABLE - - g_led_config = (led_config_t){ { - // Key Matrix to LED Index - { 10 , 10 , 9 , 9 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 3 , 3 , 2 , 1 , 1 }, - { 11 , 11 , 9 , 9 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 3 , 3 , 2 , 0 , 1 }, - { 12 , 12 , 9 , 9 , 8 , 7 , 7 , 6 , 5 , 5 , 4 , 3 , 3 , 2 , 23 , 1 }, - { 13 , 13 , 14 , 14 , 15 , 16 , 16 , 17 , 18 , 18 , 19 , 20 , 20 , 21 , 22 , 22 }, - { 13 , 13 , 14 , 14 , 15 , 16 , 16 , 17 , 18 , 18 , 19 , 20 , 20 , 21 , 22 , 22 }, - }, { - // LED Index to Physical Position - {224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42}, - {30, 64}, {30, 85}, {45, 85}, {74, 85}, {89, 85}, {119, 85}, {134, 85}, {164, 85}, {179, 85}, {209, 85}, {224, 85}, {224, 64} - }, { - // LED Index to Flag - LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, - LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, - LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL - } }; - -#endif - matrix_init_user(); -} diff --git a/keyboards/boardsource/unicorne/config.h b/keyboards/boardsource/unicorne/config.h index d0d466bb54aa..5843a0c84729 100644 --- a/keyboards/boardsource/unicorne/config.h +++ b/keyboards/boardsource/unicorne/config.h @@ -8,8 +8,6 @@ #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET -#define SPLIT_LAYER_STATE_ENABLE - #define I2C_DRIVER I2CD1 #define I2C1_SDA_PIN GP22 #define I2C1_SCL_PIN GP23 diff --git a/keyboards/boardsource/unicorne/info.json b/keyboards/boardsource/unicorne/info.json index aeeb34812537..4184c870fe48 100644 --- a/keyboards/boardsource/unicorne/info.json +++ b/keyboards/boardsource/unicorne/info.json @@ -20,7 +20,12 @@ }, "split": { "enabled": true, - "soft_serial_pin": "GP0" + "soft_serial_pin": "GP0", + "transport": { + "sync": { + "layer_state": true + } + } }, "usb": { "device_version": "1.0.0", diff --git a/keyboards/boardsource/unicorne/keymaps/vial/config.h b/keyboards/boardsource/unicorne/keymaps/vial/config.h new file mode 100644 index 000000000000..ba283bab5727 --- /dev/null +++ b/keyboards/boardsource/unicorne/keymaps/vial/config.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID \ + { 0x73, 0xFD, 0x11, 0x1F, 0x7F, 0x19, 0xC9, 0x33 } + +#define VIAL_UNLOCK_COMBO_ROWS \ + { 0, 0 } +#define VIAL_UNLOCK_COMBO_COLS \ + { 0, 1 } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/boardsource/unicorne/keymaps/vial/keymap.json b/keyboards/boardsource/unicorne/keymaps/vial/keymap.json new file mode 100644 index 000000000000..9c65568bfabd --- /dev/null +++ b/keyboards/boardsource/unicorne/keymaps/vial/keymap.json @@ -0,0 +1,32 @@ +{ + "keyboard": "boardsource/unicorne", + "keymap": "vial", + "layout": "LAYOUT_split_3x6_3", + "config": { + "features": { + "via": true, + "vial": true, + "vialrgb": true + } + }, + "layers": [ + [ + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ESC", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", "KC_RALT" + ], + [ + "_______", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "_______", + "_______", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ], + [ + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_MOD", "RGB_TOG", "_______", + "EE_CLR", "_______", "_______", "_______", "_______", "_______", "RGB_VAD", "RGB_HUD", "RGB_SAD", "RGB_RMOD", "CK_TOGG", "_______", + "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "_______", "_______", "_______", "_______", "_______", "_______" + ] + ] +} diff --git a/keyboards/boardsource/unicorne/keymaps/vial/vial.json b/keyboards/boardsource/unicorne/keymaps/vial/vial.json new file mode 100644 index 000000000000..e5d534f133cd --- /dev/null +++ b/keyboards/boardsource/unicorne/keymaps/vial/vial.json @@ -0,0 +1,25 @@ +{ + "lighting": "vialrgb", + "matrix": {"rows": 8, "cols": 6}, + "layouts":{ + "keymap":[ + [{"y":1,"x":3.5},"0,3",{"x":7.5},"4,3"], + [{"y":-0.875,"x":2.5},"0,2",{"x":1},"0,4",{"x":5.5},"4,4",{"x":1},"4,2"], + [{"y":-0.875,"x":5.5},"0,5",{"x":3.5},"4,5"], + [{"y":-0.875,"x":0.5},"0,0","0,1",{"x":11.5},"4,1","4,0"], + [{"y":-0.375,"x":3.5},"1,3",{"x":7.5},"5,3"], + [{"y":-0.875,"x":2.5},"1,2",{"x":1},"1,4",{"x":5.5},"5,4",{"x":1},"5,2"], + [{"y":-0.875,"x":5.5},"1,5",{"x":3.5},"5,5"], + [{"y":-0.875,"x":0.5},"1,0","1,1",{"x":11.5},"5,1","5,0"], + [{"y":-0.375,"x":3.5},"2,3",{"x":7.5},"6,3"], + [{"y":-0.875,"x":2.5},"2,2",{"x":1},"2,4",{"x":5.5},"6,4",{"x":1},"6,2"], + [{"y":-0.875,"x":5.5},"2,5",{"x":3.5},"6,5"], + [{"y":-0.875,"x":0.5},"2,0","2,1",{"x":11.5},"6,1","6,0"], + [{"y":-0.125,"x":4},"3,3",{"x":6.5},"7,3"], + [{"r":15,"rx":4.5,"ry":9.1,"y":-4.85,"x":-0.5},"3,4"], + [{"r":30,"rx":5.4,"ry":9.3,"y":-5.05,"x":-1.4,"h":1.5},"3,5"], + [{"r":-30,"rx":11.1,"y":-5.05,"x":0.4,"h":1.5},"7,5"], + [{"r":-15,"rx":12,"ry":9.1,"y":-4.85,"x":-0.5},"7,4"] + ] + } +} diff --git a/keyboards/boardsource/unicorne/unicorne.c b/keyboards/boardsource/unicorne/unicorne.c index 0c443722e027..22cd1e4a37d8 100644 --- a/keyboards/boardsource/unicorne/unicorne.c +++ b/keyboards/boardsource/unicorne/unicorne.c @@ -20,13 +20,13 @@ bool oled_task_kb(void) { oled_write_raw(layer_zero, sizeof(layer_zero)); break; case 1: - oled_write_raw(layer_zero, sizeof(layer_zero)); + oled_write_raw(layer_one, sizeof(layer_one)); break; case 2: - oled_write_raw(layer_zero, sizeof(layer_zero)); + oled_write_raw(layer_two, sizeof(layer_two)); break; case 3: - oled_write_raw(layer_zero, sizeof(layer_zero)); + oled_write_raw(layer_three, sizeof(layer_three)); break; } } else { diff --git a/keyboards/boardwalk/keymaps/nchristus/config.h b/keyboards/boardwalk/keymaps/nchristus/config.h deleted file mode 100644 index a2530241f477..000000000000 --- a/keyboards/boardwalk/keymaps/nchristus/config.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once diff --git a/keyboards/boardwalk/keymaps/nchristus/keymap.c b/keyboards/boardwalk/keymaps/nchristus/keymap.c deleted file mode 100644 index df642bcd6fdc..000000000000 --- a/keyboards/boardwalk/keymaps/nchristus/keymap.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -// Layer shorthand -#define _QW 0 - -#define LOWER LT(1, KC_SPC) -#define RAISE LT(2, KC_ENT) - -#define CTRLESC CTL_T(KC_ESC) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _QWE: Base Layer (Default Layer) */ - [_QW] = LAYOUT_ortho_hhkb( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - CTRLESC, KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - MO(3), KC_LCTL, KC_LALT, KC_LGUI, RAISE, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - ), - - /* Keymap LOWER: Lower Layer */ - [1] = LAYOUT_ortho_hhkb( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______ - ), - - /* Keymap RAISE: Raise Layer */ - [2] = LAYOUT_ortho_hhkb( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______ - ), - - /* Keymap _FL: Function Layer */ - [3] = LAYOUT_ortho_hhkb( - QK_BOOT, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/boardwalk/keymaps/nchristus/readme.md b/keyboards/boardwalk/keymaps/nchristus/readme.md deleted file mode 100644 index 73cf19b06fbd..000000000000 --- a/keyboards/boardwalk/keymaps/nchristus/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for Boardwalk diff --git a/keyboards/boardwalk/keymaps/nchristus/rules.mk b/keyboards/boardwalk/keymaps/nchristus/rules.mk deleted file mode 100644 index b07a6475be53..000000000000 --- a/keyboards/boardwalk/keymaps/nchristus/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -RGBLIGHT_ENABLE = yes diff --git a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c index f0c75284f740..a2f36a303a58 100644 --- a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c +++ b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c @@ -1,5 +1,4 @@ #include QMK_KEYBOARD_H -#include "mousekey.h" #define MEDAPP LT(MEDIA, KC_APP) diff --git a/keyboards/bredworks/wyvern_hs/info.json b/keyboards/bredworks/wyvern_hs/info.json new file mode 100644 index 000000000000..63e85496ae0d --- /dev/null +++ b/keyboards/bredworks/wyvern_hs/info.json @@ -0,0 +1,308 @@ +{ + "manufacturer": "Bred Works", + "keyboard_name": "Wyvern HS", + "maintainer": "DeskDaily", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B3", "B2", "B1", "B0", "F7", "D5", "D3", "D2", "D1", "D0", "E6", "F0", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4"], + "rows": ["B7", "F1", "F6", "F5", "F4"] + }, + "processor": "atmega32u4", + "url": "https://bredworks.com/products/wyvern-hotswap-pcb", + "usb": { + "device_version": "0.0.1", + "pid": "0x0001", + "vid": "0x0571" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.25, "y": 0}, + {"matrix": [0, 11], "x": 11.25, "y": 0}, + {"matrix": [0, 12], "x": 12.25, "y": 0}, + {"matrix": [0, 13], "x": 13.25, "y": 0}, + {"matrix": [0, 14], "x": 14.25, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [0, 19], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1, "w": 1.5}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1}, + {"matrix": [1, 14], "x": 14.75, "y": 1}, + {"matrix": [1, 15], "x": 15.75, "y": 1}, + {"matrix": [1, 16], "x": 16.75, "y": 1}, + {"matrix": [1, 17], "x": 17.75, "y": 1, "w": 1.5}, + {"matrix": [1, 19], "x": 19.75, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2, "w": 1.75}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 8, "y": 2}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 11, "y": 2}, + {"matrix": [2, 11], "x": 12, "y": 2}, + {"matrix": [2, 12], "x": 13, "y": 2}, + {"matrix": [2, 13], "x": 14, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [2, 15], "x": 16, "y": 2}, + {"matrix": [2, 16], "x": 17, "y": 2, "w": 2.25}, + {"matrix": [2, 19], "x": 19.75, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "h": 2}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3, "h": 2}, + {"matrix": [3, 4], "x": 4.25, "y": 3, "w": 1.25}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 8], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 10], "x": 10.5, "y": 3}, + {"matrix": [3, 11], "x": 11.5, "y": 3}, + {"matrix": [3, 12], "x": 12.5, "y": 3}, + {"matrix": [3, 13], "x": 13.5, "y": 3}, + {"matrix": [3, 14], "x": 14.5, "y": 3}, + {"matrix": [3, 15], "x": 15.5, "y": 3}, + {"matrix": [3, 16], "x": 16.5, "y": 3, "w": 1.75}, + {"matrix": [3, 19], "x": 19.75, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "y": 3.25}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 5.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 8, "y": 4, "w": 2.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 2.75}, + {"matrix": [4, 13], "x": 14.25, "y": 4}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"matrix": [4, 18], "x": 19.5, "y": 4.25}, + {"matrix": [0, 18], "x": 18.25, "y": 0} + ] + }, + "LAYOUT_mirrored_numpad": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.25, "y": 0}, + {"matrix": [0, 11], "x": 11.25, "y": 0}, + {"matrix": [0, 12], "x": 12.25, "y": 0}, + {"matrix": [0, 13], "x": 13.25, "y": 0}, + {"matrix": [0, 14], "x": 14.25, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [0, 19], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "h": 2}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1, "w": 1.5}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1}, + {"matrix": [1, 14], "x": 14.75, "y": 1}, + {"matrix": [1, 15], "x": 15.75, "y": 1}, + {"matrix": [1, 16], "x": 16.75, "y": 1}, + {"matrix": [1, 17], "x": 17.75, "y": 1, "w": 1.5}, + {"matrix": [1, 19], "x": 19.75, "y": 1}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2, "w": 1.75}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 8, "y": 2}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 11, "y": 2}, + {"matrix": [2, 11], "x": 12, "y": 2}, + {"matrix": [2, 12], "x": 13, "y": 2}, + {"matrix": [2, 13], "x": 14, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [2, 15], "x": 16, "y": 2}, + {"matrix": [2, 16], "x": 17, "y": 2, "w": 2.25}, + {"matrix": [2, 19], "x": 19.75, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "h": 2}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3, "w": 1.25}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 8], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 10], "x": 10.5, "y": 3}, + {"matrix": [3, 11], "x": 11.5, "y": 3}, + {"matrix": [3, 12], "x": 12.5, "y": 3}, + {"matrix": [3, 13], "x": 13.5, "y": 3}, + {"matrix": [3, 14], "x": 14.5, "y": 3}, + {"matrix": [3, 15], "x": 15.5, "y": 3}, + {"matrix": [3, 16], "x": 16.5, "y": 3, "w": 1.75}, + {"matrix": [3, 19], "x": 19.75, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "y": 3.25}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4, "w": 2}, + {"matrix": [4, 4], "x": 4.25, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 5.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 8, "y": 4, "w": 2.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 2.75}, + {"matrix": [4, 13], "x": 14.25, "y": 4}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"matrix": [4, 18], "x": 19.5, "y": 4.25}, + {"matrix": [0, 18], "x": 18.25, "y": 0} + ] + }, + "LAYOUT_regular_numpad": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.25, "y": 0}, + {"matrix": [0, 6], "x": 6.25, "y": 0}, + {"matrix": [0, 7], "x": 7.25, "y": 0}, + {"matrix": [0, 8], "x": 8.25, "y": 0}, + {"matrix": [0, 9], "x": 9.25, "y": 0}, + {"matrix": [0, 10], "x": 10.25, "y": 0}, + {"matrix": [0, 11], "x": 11.25, "y": 0}, + {"matrix": [0, 12], "x": 12.25, "y": 0}, + {"matrix": [0, 13], "x": 13.25, "y": 0}, + {"matrix": [0, 14], "x": 14.25, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.25, "y": 0}, + {"matrix": [0, 17], "x": 17.25, "y": 0}, + {"matrix": [0, 19], "x": 19.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1, "h": 2}, + {"matrix": [1, 4], "x": 4.25, "y": 1, "w": 1.5}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1}, + {"matrix": [1, 14], "x": 14.75, "y": 1}, + {"matrix": [1, 15], "x": 15.75, "y": 1}, + {"matrix": [1, 16], "x": 16.75, "y": 1}, + {"matrix": [1, 17], "x": 17.75, "y": 1, "w": 1.5}, + {"matrix": [1, 19], "x": 19.75, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2, "w": 1.75}, + {"matrix": [2, 5], "x": 6, "y": 2}, + {"matrix": [2, 6], "x": 7, "y": 2}, + {"matrix": [2, 7], "x": 8, "y": 2}, + {"matrix": [2, 8], "x": 9, "y": 2}, + {"matrix": [2, 9], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 11, "y": 2}, + {"matrix": [2, 11], "x": 12, "y": 2}, + {"matrix": [2, 12], "x": 13, "y": 2}, + {"matrix": [2, 13], "x": 14, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [2, 15], "x": 16, "y": 2}, + {"matrix": [2, 16], "x": 17, "y": 2, "w": 2.25}, + {"matrix": [2, 19], "x": 19.75, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3, "h": 2}, + {"matrix": [3, 4], "x": 4.25, "y": 3, "w": 1.25}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 8], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 10], "x": 10.5, "y": 3}, + {"matrix": [3, 11], "x": 11.5, "y": 3}, + {"matrix": [3, 12], "x": 12.5, "y": 3}, + {"matrix": [3, 13], "x": 13.5, "y": 3}, + {"matrix": [3, 14], "x": 14.5, "y": 3}, + {"matrix": [3, 15], "x": 15.5, "y": 3}, + {"matrix": [3, 16], "x": 16.5, "y": 3, "w": 1.75}, + {"matrix": [3, 19], "x": 19.75, "y": 3}, + {"matrix": [3, 17], "x": 18.5, "y": 3.25}, + {"matrix": [4, 1], "x": 0, "y": 4, "w": 2}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4, "w": 1.25}, + {"matrix": [4, 5], "x": 5.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 6.75, "y": 4, "w": 1.25}, + {"matrix": [4, 8], "x": 8, "y": 4, "w": 2.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 2.75}, + {"matrix": [4, 13], "x": 14.25, "y": 4}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [4, 16], "x": 17.5, "y": 4.25}, + {"matrix": [4, 17], "x": 18.5, "y": 4.25}, + {"matrix": [4, 18], "x": 19.5, "y": 4.25}, + {"matrix": [0, 18], "x": 18.25, "y": 0} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/bredworks/wyvern_hs/keymaps/default/keymap.c b/keyboards/bredworks/wyvern_hs/keymaps/default/keymap.c new file mode 100644 index 000000000000..3d0e06721524 --- /dev/null +++ b/keyboards/bredworks/wyvern_hs/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2023 DeskDaily + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_mirrored_numpad( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_ENT, KC_P1, KC_P2, KC_P3, KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP, + KC_DEL, KC_P0, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC + ), + [1] = LAYOUT_mirrored_numpad( + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/bredworks/wyvern_hs/keymaps/regular_numpad/keymap.c b/keyboards/bredworks/wyvern_hs/keymaps/regular_numpad/keymap.c new file mode 100644 index 000000000000..78037bac14ab --- /dev/null +++ b/keyboards/bredworks/wyvern_hs/keymaps/regular_numpad/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2023 DeskDaily + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_regular_numpad( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_P1, KC_P2, KC_P3, KC_ENT, KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP, + KC_P0, KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC + ), + [1] = LAYOUT_regular_numpad( + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/bredworks/wyvern_hs/keymaps/via/keymap.c b/keyboards/bredworks/wyvern_hs/keymaps/via/keymap.c new file mode 100644 index 000000000000..0b73184e01e0 --- /dev/null +++ b/keyboards/bredworks/wyvern_hs/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2023 DeskDaily + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_PPLS, KC_P7, KC_P8, KC_P9, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_PPLS, KC_P4, KC_P5, KC_P6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_ENT, KC_P1, KC_P2, KC_P3, KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP, + KC_DEL, KC_P0, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; \ No newline at end of file diff --git a/keyboards/durgod/k320/keymaps/moults31/rules.mk b/keyboards/bredworks/wyvern_hs/keymaps/via/rules.mk similarity index 100% rename from keyboards/durgod/k320/keymaps/moults31/rules.mk rename to keyboards/bredworks/wyvern_hs/keymaps/via/rules.mk diff --git a/keyboards/bredworks/wyvern_hs/readme.md b/keyboards/bredworks/wyvern_hs/readme.md new file mode 100644 index 000000000000..0d0ed4e099e5 --- /dev/null +++ b/keyboards/bredworks/wyvern_hs/readme.md @@ -0,0 +1,23 @@ +# Bredworks Wyvern HS + +* Keyboard Maintainer: [DeskDaily](https://github.com/DeskDaily) +* Hardware Supported: Atmega32u4 +* Hardware Availability: [BredWorks](https://bredworks.com/products/wyvern-hotswap-pcb) + +Make example for this keyboard (after setting up your build environment): + + make bredworks/wyvern_hs:default + +Flashing example for this keyboard: + + make bredworks/wyvern_hs:default:flash + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the upper left key/esc) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +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/bredworks/wyvern_hs/rules.mk b/keyboards/bredworks/wyvern_hs/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/bredworks/wyvern_hs/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/bt66tech/bt66tech60/config.h b/keyboards/bt66tech/bt66tech60/config.h index 45693628a6f2..b49e0a11cd5b 100644 --- a/keyboards/bt66tech/bt66tech60/config.h +++ b/keyboards/bt66tech/bt66tech60/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 /* * Feature disable options diff --git a/keyboards/bubble75/hotswap/config.h b/keyboards/bubble75/hotswap/config.h index 7ecadd007624..657c373c7b65 100644 --- a/keyboards/bubble75/hotswap/config.h +++ b/keyboards/bubble75/hotswap/config.h @@ -35,10 +35,6 @@ #define RGB_MATRIX_LED_FLUSH_LIMIT 16 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 //#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT -#define RGB_MATRIX_DEFAULT_HUE 0 -#define RGB_MATRIX_DEFAULT_SAT 255 -#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -#define RGB_MATRIX_DEFAULT_SPD 127 diff --git a/keyboards/budgy/info.json b/keyboards/budgy/info.json index 7310fa5a55a9..5903daa68d08 100644 --- a/keyboards/budgy/info.json +++ b/keyboards/budgy/info.json @@ -38,6 +38,7 @@ } } }, + "community_layouts": ["split_3x5_2"], "layouts": { "LAYOUT_split_3x5_2": { "layout": [ diff --git a/keyboards/buzzard/rev1/config.h b/keyboards/buzzard/rev1/config.h index f29441fac804..36313a1c6a29 100644 --- a/keyboards/buzzard/rev1/config.h +++ b/keyboards/buzzard/rev1/config.h @@ -10,7 +10,6 @@ #ifdef OLED_ENABLE #define OLED_DISPLAY_128X32 -#define SPLIT_OLED_ENABLE #endif #ifdef PS2_DRIVER_INTERRUPT diff --git a/keyboards/buzzard/rev1/info.json b/keyboards/buzzard/rev1/info.json index d0fa9603f716..0e7d246ae379 100644 --- a/keyboards/buzzard/rev1/info.json +++ b/keyboards/buzzard/rev1/info.json @@ -14,7 +14,12 @@ }, "diode_direction": "COL2ROW", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "D2", + "transport": { + "sync": { + "oled": true + } + } }, "processor": "atmega32u4", "bootloader": "atmel-dfu", diff --git a/keyboards/cablecardesigns/phoenix/info.json b/keyboards/cablecardesigns/phoenix/info.json index effa8836b9b8..0d2ea10ad64d 100755 --- a/keyboards/cablecardesigns/phoenix/info.json +++ b/keyboards/cablecardesigns/phoenix/info.json @@ -1,20 +1,9 @@ { - "keyboard_name": "Phoenix", "manufacturer": "Yiancar-Designs", + "keyboard_name": "Phoenix", "maintainer": "Yiancar-Designs", - "url": "https://yiancar-designs.com", - "processor": "STM32F072", "bootloader": "stm32-dfu", "diode_direction": "COL2ROW", - "matrix_pins": { - "cols": ["A1", "B9", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "A8"], - "rows": ["A2", "A14", "A15", "B3", "B4", "B5"] - }, - "usb": { - "vid": "0x8968", - "pid": "0x5048", - "device_version": "0.0.1" - }, "features": { "bootmagic": true, "command": false, @@ -27,470 +16,481 @@ "caps_lock": "B6", "on_state": 0 }, + "matrix_pins": { + "cols": ["A1", "B9", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "A8"], + "rows": ["A2", "A14", "A15", "B3", "B4", "B5"] + }, + "processor": "STM32F072", + "url": "https://yiancar-designs.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x5048", + "vid": "0x8968" + }, "community_layouts": ["tkl_f13_ansi_tsangan", "tkl_f13_ansi_tsangan_split_bs_rshift", "tkl_f13_iso_tsangan", "tkl_f13_iso_tsangan_split_bs_rshift"], "layouts": { "LAYOUT_all": { "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1.25, "y": 0 }, - { "matrix": [0, 2], "x": 2.25, "y": 0 }, - { "matrix": [0, 3], "x": 3.25, "y": 0 }, - { "matrix": [0, 4], "x": 4.25, "y": 0 }, - { "matrix": [0, 5], "x": 5.5, "y": 0 }, - { "matrix": [0, 6], "x": 6.5, "y": 0 }, - { "matrix": [0, 7], "x": 7.5, "y": 0 }, - { "matrix": [0, 8], "x": 8.5, "y": 0 }, - { "matrix": [0, 9], "x": 9.75, "y": 0 }, - { "matrix": [0, 10], "x": 10.75, "y": 0 }, - { "matrix": [0, 11], "x": 11.75, "y": 0 }, - { "matrix": [0, 12], "x": 12.75, "y": 0 }, - { "matrix": [0, 13], "x": 14, "y": 0 }, - { "matrix": [0, 14], "x": 15.25, "y": 0 }, - { "matrix": [0, 15], "x": 16.25, "y": 0 }, - { "matrix": [0, 16], "x": 17.25, "y": 0 }, - { "matrix": [1, 0], "x": 0, "y": 1.25 }, - { "matrix": [1, 1], "x": 1, "y": 1.25 }, - { "matrix": [1, 2], "x": 2, "y": 1.25 }, - { "matrix": [1, 3], "x": 3, "y": 1.25 }, - { "matrix": [1, 4], "x": 4, "y": 1.25 }, - { "matrix": [1, 5], "x": 5, "y": 1.25 }, - { "matrix": [1, 6], "x": 6, "y": 1.25 }, - { "matrix": [1, 7], "x": 7, "y": 1.25 }, - { "matrix": [1, 8], "x": 8, "y": 1.25 }, - { "matrix": [1, 9], "x": 9, "y": 1.25 }, - { "matrix": [1, 10], "x": 10, "y": 1.25 }, - { "matrix": [1, 11], "x": 11, "y": 1.25 }, - { "matrix": [1, 12], "x": 12, "y": 1.25 }, - { "matrix": [1, 13], "x": 13, "y": 1.25 }, - { "matrix": [2, 13], "x": 14, "y": 1.25 }, - { "matrix": [1, 14], "x": 15.25, "y": 1.25 }, - { "matrix": [1, 15], "x": 16.25, "y": 1.25 }, - { "matrix": [1, 16], "x": 17.25, "y": 1.25 }, - { "matrix": [2, 0], "x": 0, "y": 2.25 }, - { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, - { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, - { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, - { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, - { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, - { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, - { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, - { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, - { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, - { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, - { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, - { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, - { "matrix": [3, 12], "x": 13.5, "y": 2.25 }, - { "matrix": [2, 14], "x": 15.25, "y": 2.25 }, - { "matrix": [2, 15], "x": 16.25, "y": 2.25 }, - { "matrix": [2, 16], "x": 17.25, "y": 2.25 }, - { "matrix": [3, 0], "x": 0, "y": 3.25 }, - { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, - { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, - { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, - { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, - { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, - { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, - { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, - { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, - { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, - { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, - { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, - { "matrix": [3, 13], "x": 12.75, "y": 3.25 }, - { "matrix": [4, 0], "x": 0, "y": 4.25 }, - { "matrix": [4, 1], "x": 1.25, "y": 4.25 }, - { "matrix": [4, 2], "x": 2.25, "y": 4.25 }, - { "matrix": [4, 3], "x": 3.25, "y": 4.25 }, - { "matrix": [4, 4], "x": 4.25, "y": 4.25 }, - { "matrix": [4, 5], "x": 5.25, "y": 4.25 }, - { "matrix": [4, 6], "x": 6.25, "y": 4.25 }, - { "matrix": [4, 7], "x": 7.25, "y": 4.25 }, - { "matrix": [4, 8], "x": 8.25, "y": 4.25 }, - { "matrix": [4, 9], "x": 9.25, "y": 4.25 }, - { "matrix": [4, 10], "x": 10.25, "y": 4.25 }, - { "matrix": [4, 11], "x": 11.25, "y": 4.25 }, - { "matrix": [4, 12], "x": 12.25, "y": 4.25 }, - { "matrix": [4, 13], "x": 14, "y": 4.25 }, - { "matrix": [4, 15], "x": 16.25, "y": 4.25 }, - { "matrix": [5, 0], "x": 0, "y": 5.25 }, - { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, - { "matrix": [5, 2], "x": 2.5, "y": 5.25 }, - { "matrix": [5, 6], "x": 4, "y": 5.25 }, - { "matrix": [5, 11], "x": 11, "y": 5.25 }, - { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, - { "matrix": [5, 13], "x": 13.5, "y": 5.25 }, - { "matrix": [5, 14], "x": 15.25, "y": 5.25 }, - { "matrix": [5, 15], "x": 16.25, "y": 5.25 }, - { "matrix": [5, 16], "x": 17.25, "y": 5.25 } + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [2, 13], "x": 14, "y": 1.25}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 12], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} ] }, "LAYOUT_tkl_f13_ansi_tsangan": { "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1.25, "y": 0 }, - { "matrix": [0, 2], "x": 2.25, "y": 0 }, - { "matrix": [0, 3], "x": 3.25, "y": 0 }, - { "matrix": [0, 4], "x": 4.25, "y": 0 }, - { "matrix": [0, 5], "x": 5.5, "y": 0 }, - { "matrix": [0, 6], "x": 6.5, "y": 0 }, - { "matrix": [0, 7], "x": 7.5, "y": 0 }, - { "matrix": [0, 8], "x": 8.5, "y": 0 }, - { "matrix": [0, 9], "x": 9.75, "y": 0 }, - { "matrix": [0, 10], "x": 10.75, "y": 0 }, - { "matrix": [0, 11], "x": 11.75, "y": 0 }, - { "matrix": [0, 12], "x": 12.75, "y": 0 }, - { "matrix": [0, 13], "x": 14, "y": 0 }, - { "matrix": [0, 14], "x": 15.25, "y": 0 }, - { "matrix": [0, 15], "x": 16.25, "y": 0 }, - { "matrix": [0, 16], "x": 17.25, "y": 0 }, - { "matrix": [1, 0], "x": 0, "y": 1.25 }, - { "matrix": [1, 1], "x": 1, "y": 1.25 }, - { "matrix": [1, 2], "x": 2, "y": 1.25 }, - { "matrix": [1, 3], "x": 3, "y": 1.25 }, - { "matrix": [1, 4], "x": 4, "y": 1.25 }, - { "matrix": [1, 5], "x": 5, "y": 1.25 }, - { "matrix": [1, 6], "x": 6, "y": 1.25 }, - { "matrix": [1, 7], "x": 7, "y": 1.25 }, - { "matrix": [1, 8], "x": 8, "y": 1.25 }, - { "matrix": [1, 9], "x": 9, "y": 1.25 }, - { "matrix": [1, 10], "x": 10, "y": 1.25 }, - { "matrix": [1, 11], "x": 11, "y": 1.25 }, - { "matrix": [1, 12], "x": 12, "y": 1.25 }, - { "matrix": [1, 13], "x": 13, "y": 1.25 }, - { "matrix": [1, 14], "x": 15.25, "y": 1.25 }, - { "matrix": [1, 15], "x": 16.25, "y": 1.25 }, - { "matrix": [1, 16], "x": 17.25, "y": 1.25 }, - { "matrix": [2, 0], "x": 0, "y": 2.25 }, - { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, - { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, - { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, - { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, - { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, - { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, - { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, - { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, - { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, - { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, - { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, - { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, - { "matrix": [3, 12], "x": 13.5, "y": 2.25 }, - { "matrix": [2, 14], "x": 15.25, "y": 2.25 }, - { "matrix": [2, 15], "x": 16.25, "y": 2.25 }, - { "matrix": [2, 16], "x": 17.25, "y": 2.25 }, - { "matrix": [3, 0], "x": 0, "y": 3.25 }, - { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, - { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, - { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, - { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, - { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, - { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, - { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, - { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, - { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, - { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, - { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, - { "matrix": [3, 13], "x": 12.75, "y": 3.25 }, - { "matrix": [4, 0], "x": 0, "y": 4.25 }, - { "matrix": [4, 2], "x": 2.25, "y": 4.25 }, - { "matrix": [4, 3], "x": 3.25, "y": 4.25 }, - { "matrix": [4, 4], "x": 4.25, "y": 4.25 }, - { "matrix": [4, 5], "x": 5.25, "y": 4.25 }, - { "matrix": [4, 6], "x": 6.25, "y": 4.25 }, - { "matrix": [4, 7], "x": 7.25, "y": 4.25 }, - { "matrix": [4, 8], "x": 8.25, "y": 4.25 }, - { "matrix": [4, 9], "x": 9.25, "y": 4.25 }, - { "matrix": [4, 10], "x": 10.25, "y": 4.25 }, - { "matrix": [4, 11], "x": 11.25, "y": 4.25 }, - { "matrix": [4, 12], "x": 12.25, "y": 4.25 }, - { "matrix": [4, 15], "x": 16.25, "y": 4.25 }, - { "matrix": [5, 0], "x": 0, "y": 5.25 }, - { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, - { "matrix": [5, 2], "x": 2.5, "y": 5.25 }, - { "matrix": [5, 6], "x": 4, "y": 5.25 }, - { "matrix": [5, 11], "x": 11, "y": 5.25 }, - { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, - { "matrix": [5, 13], "x": 13.5, "y": 5.25 }, - { "matrix": [5, 14], "x": 15.25, "y": 5.25 }, - { "matrix": [5, 15], "x": 16.25, "y": 5.25 }, - { "matrix": [5, 16], "x": 17.25, "y": 5.25 } + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 12], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} ] }, "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift": { "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1.25, "y": 0 }, - { "matrix": [0, 2], "x": 2.25, "y": 0 }, - { "matrix": [0, 3], "x": 3.25, "y": 0 }, - { "matrix": [0, 4], "x": 4.25, "y": 0 }, - { "matrix": [0, 5], "x": 5.5, "y": 0 }, - { "matrix": [0, 6], "x": 6.5, "y": 0 }, - { "matrix": [0, 7], "x": 7.5, "y": 0 }, - { "matrix": [0, 8], "x": 8.5, "y": 0 }, - { "matrix": [0, 9], "x": 9.75, "y": 0 }, - { "matrix": [0, 10], "x": 10.75, "y": 0 }, - { "matrix": [0, 11], "x": 11.75, "y": 0 }, - { "matrix": [0, 12], "x": 12.75, "y": 0 }, - { "matrix": [0, 13], "x": 14, "y": 0 }, - { "matrix": [0, 14], "x": 15.25, "y": 0 }, - { "matrix": [0, 15], "x": 16.25, "y": 0 }, - { "matrix": [0, 16], "x": 17.25, "y": 0 }, - { "matrix": [1, 0], "x": 0, "y": 1.25 }, - { "matrix": [1, 1], "x": 1, "y": 1.25 }, - { "matrix": [1, 2], "x": 2, "y": 1.25 }, - { "matrix": [1, 3], "x": 3, "y": 1.25 }, - { "matrix": [1, 4], "x": 4, "y": 1.25 }, - { "matrix": [1, 5], "x": 5, "y": 1.25 }, - { "matrix": [1, 6], "x": 6, "y": 1.25 }, - { "matrix": [1, 7], "x": 7, "y": 1.25 }, - { "matrix": [1, 8], "x": 8, "y": 1.25 }, - { "matrix": [1, 9], "x": 9, "y": 1.25 }, - { "matrix": [1, 10], "x": 10, "y": 1.25 }, - { "matrix": [1, 11], "x": 11, "y": 1.25 }, - { "matrix": [1, 12], "x": 12, "y": 1.25 }, - { "matrix": [1, 13], "x": 13, "y": 1.25 }, - { "matrix": [2, 13], "x": 14, "y": 1.25 }, - { "matrix": [1, 14], "x": 15.25, "y": 1.25 }, - { "matrix": [1, 15], "x": 16.25, "y": 1.25 }, - { "matrix": [1, 16], "x": 17.25, "y": 1.25 }, - { "matrix": [2, 0], "x": 0, "y": 2.25 }, - { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, - { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, - { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, - { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, - { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, - { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, - { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, - { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, - { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, - { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, - { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, - { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, - { "matrix": [3, 12], "x": 13.5, "y": 2.25 }, - { "matrix": [2, 14], "x": 15.25, "y": 2.25 }, - { "matrix": [2, 15], "x": 16.25, "y": 2.25 }, - { "matrix": [2, 16], "x": 17.25, "y": 2.25 }, - { "matrix": [3, 0], "x": 0, "y": 3.25 }, - { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, - { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, - { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, - { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, - { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, - { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, - { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, - { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, - { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, - { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, - { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, - { "matrix": [3, 13], "x": 12.75, "y": 3.25 }, - { "matrix": [4, 0], "x": 0, "y": 4.25 }, - { "matrix": [4, 2], "x": 2.25, "y": 4.25 }, - { "matrix": [4, 3], "x": 3.25, "y": 4.25 }, - { "matrix": [4, 4], "x": 4.25, "y": 4.25 }, - { "matrix": [4, 5], "x": 5.25, "y": 4.25 }, - { "matrix": [4, 6], "x": 6.25, "y": 4.25 }, - { "matrix": [4, 7], "x": 7.25, "y": 4.25 }, - { "matrix": [4, 8], "x": 8.25, "y": 4.25 }, - { "matrix": [4, 9], "x": 9.25, "y": 4.25 }, - { "matrix": [4, 10], "x": 10.25, "y": 4.25 }, - { "matrix": [4, 11], "x": 11.25, "y": 4.25 }, - { "matrix": [4, 12], "x": 12.25, "y": 4.25 }, - { "matrix": [4, 13], "x": 14, "y": 4.25 }, - { "matrix": [4, 15], "x": 16.25, "y": 4.25 }, - { "matrix": [5, 0], "x": 0, "y": 5.25 }, - { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, - { "matrix": [5, 2], "x": 2.5, "y": 5.25 }, - { "matrix": [5, 6], "x": 4, "y": 5.25 }, - { "matrix": [5, 11], "x": 11, "y": 5.25 }, - { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, - { "matrix": [5, 13], "x": 13.5, "y": 5.25 }, - { "matrix": [5, 14], "x": 15.25, "y": 5.25 }, - { "matrix": [5, 15], "x": 16.25, "y": 5.25 }, - { "matrix": [5, 16], "x": 17.25, "y": 5.25 } + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [2, 13], "x": 14, "y": 1.25}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [3, 12], "x": 13.5, "y": 2.25, "w": 1.5}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} ] }, "LAYOUT_tkl_f13_iso_tsangan": { "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1.25, "y": 0 }, - { "matrix": [0, 2], "x": 2.25, "y": 0 }, - { "matrix": [0, 3], "x": 3.25, "y": 0 }, - { "matrix": [0, 4], "x": 4.25, "y": 0 }, - { "matrix": [0, 5], "x": 5.5, "y": 0 }, - { "matrix": [0, 6], "x": 6.5, "y": 0 }, - { "matrix": [0, 7], "x": 7.5, "y": 0 }, - { "matrix": [0, 8], "x": 8.5, "y": 0 }, - { "matrix": [0, 9], "x": 9.75, "y": 0 }, - { "matrix": [0, 10], "x": 10.75, "y": 0 }, - { "matrix": [0, 11], "x": 11.75, "y": 0 }, - { "matrix": [0, 12], "x": 12.75, "y": 0 }, - { "matrix": [0, 13], "x": 14, "y": 0 }, - { "matrix": [0, 14], "x": 15.25, "y": 0 }, - { "matrix": [0, 15], "x": 16.25, "y": 0 }, - { "matrix": [0, 16], "x": 17.25, "y": 0 }, - { "matrix": [1, 0], "x": 0, "y": 1.25 }, - { "matrix": [1, 1], "x": 1, "y": 1.25 }, - { "matrix": [1, 2], "x": 2, "y": 1.25 }, - { "matrix": [1, 3], "x": 3, "y": 1.25 }, - { "matrix": [1, 4], "x": 4, "y": 1.25 }, - { "matrix": [1, 5], "x": 5, "y": 1.25 }, - { "matrix": [1, 6], "x": 6, "y": 1.25 }, - { "matrix": [1, 7], "x": 7, "y": 1.25 }, - { "matrix": [1, 8], "x": 8, "y": 1.25 }, - { "matrix": [1, 9], "x": 9, "y": 1.25 }, - { "matrix": [1, 10], "x": 10, "y": 1.25 }, - { "matrix": [1, 11], "x": 11, "y": 1.25 }, - { "matrix": [1, 12], "x": 12, "y": 1.25 }, - { "matrix": [1, 13], "x": 13, "y": 1.25 }, - { "matrix": [1, 14], "x": 15.25, "y": 1.25 }, - { "matrix": [1, 15], "x": 16.25, "y": 1.25 }, - { "matrix": [1, 16], "x": 17.25, "y": 1.25 }, - { "matrix": [2, 0], "x": 0, "y": 2.25 }, - { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, - { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, - { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, - { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, - { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, - { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, - { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, - { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, - { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, - { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, - { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, - { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, - { "matrix": [2, 14], "x": 13.75, "y": 2.25 }, - { "matrix": [2, 15], "x": 15.25, "y": 2.25 }, - { "matrix": [2, 16], "x": 16.25, "y": 2.25 }, - { "matrix": [3, 0], "x": 17.25, "y": 2.25 }, - { "matrix": [3, 1], "x": 0, "y": 3.25 }, - { "matrix": [3, 2], "x": 1.75, "y": 3.25 }, - { "matrix": [3, 3], "x": 2.75, "y": 3.25 }, - { "matrix": [3, 4], "x": 3.75, "y": 3.25 }, - { "matrix": [3, 5], "x": 4.75, "y": 3.25 }, - { "matrix": [3, 6], "x": 5.75, "y": 3.25 }, - { "matrix": [3, 7], "x": 6.75, "y": 3.25 }, - { "matrix": [3, 8], "x": 7.75, "y": 3.25 }, - { "matrix": [3, 9], "x": 8.75, "y": 3.25 }, - { "matrix": [3, 10], "x": 9.75, "y": 3.25 }, - { "matrix": [3, 11], "x": 10.75, "y": 3.25 }, - { "matrix": [3, 12], "x": 11.75, "y": 3.25 }, - { "matrix": [3, 13], "x": 12.75, "y": 3.25 }, - { "matrix": [4, 0], "x": 0, "y": 4.25 }, - { "matrix": [4, 1], "x": 1.25, "y": 4.25 }, - { "matrix": [4, 2], "x": 2.25, "y": 4.25 }, - { "matrix": [4, 3], "x": 3.25, "y": 4.25 }, - { "matrix": [4, 4], "x": 4.25, "y": 4.25 }, - { "matrix": [4, 5], "x": 5.25, "y": 4.25 }, - { "matrix": [4, 6], "x": 6.25, "y": 4.25 }, - { "matrix": [4, 7], "x": 7.25, "y": 4.25 }, - { "matrix": [4, 8], "x": 8.25, "y": 4.25 }, - { "matrix": [4, 9], "x": 9.25, "y": 4.25 }, - { "matrix": [4, 10], "x": 10.25, "y": 4.25 }, - { "matrix": [4, 11], "x": 11.25, "y": 4.25 }, - { "matrix": [4, 12], "x": 12.25, "y": 4.25 }, - { "matrix": [4, 15], "x": 16.25, "y": 4.25 }, - { "matrix": [5, 0], "x": 0, "y": 5.25 }, - { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, - { "matrix": [5, 2], "x": 2.5, "y": 5.25 }, - { "matrix": [5, 6], "x": 4, "y": 5.25 }, - { "matrix": [5, 11], "x": 11, "y": 5.25 }, - { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, - { "matrix": [5, 13], "x": 13.5, "y": 5.25 }, - { "matrix": [5, 14], "x": 15.25, "y": 5.25 }, - { "matrix": [5, 15], "x": 16.25, "y": 5.25 }, - { "matrix": [5, 16], "x": 17.25, "y": 5.25 } + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} ] }, "LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift": { "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1.25, "y": 0 }, - { "matrix": [0, 2], "x": 2.25, "y": 0 }, - { "matrix": [0, 3], "x": 3.25, "y": 0 }, - { "matrix": [0, 4], "x": 4.25, "y": 0 }, - { "matrix": [0, 5], "x": 5.5, "y": 0 }, - { "matrix": [0, 6], "x": 6.5, "y": 0 }, - { "matrix": [0, 7], "x": 7.5, "y": 0 }, - { "matrix": [0, 8], "x": 8.5, "y": 0 }, - { "matrix": [0, 9], "x": 9.75, "y": 0 }, - { "matrix": [0, 10], "x": 10.75, "y": 0 }, - { "matrix": [0, 11], "x": 11.75, "y": 0 }, - { "matrix": [0, 12], "x": 12.75, "y": 0 }, - { "matrix": [0, 13], "x": 14, "y": 0 }, - { "matrix": [0, 14], "x": 15.25, "y": 0 }, - { "matrix": [0, 15], "x": 16.25, "y": 0 }, - { "matrix": [0, 16], "x": 17.25, "y": 0 }, - { "matrix": [1, 0], "x": 0, "y": 1.25 }, - { "matrix": [1, 1], "x": 1, "y": 1.25 }, - { "matrix": [1, 2], "x": 2, "y": 1.25 }, - { "matrix": [1, 3], "x": 3, "y": 1.25 }, - { "matrix": [1, 4], "x": 4, "y": 1.25 }, - { "matrix": [1, 5], "x": 5, "y": 1.25 }, - { "matrix": [1, 6], "x": 6, "y": 1.25 }, - { "matrix": [1, 7], "x": 7, "y": 1.25 }, - { "matrix": [1, 8], "x": 8, "y": 1.25 }, - { "matrix": [1, 9], "x": 9, "y": 1.25 }, - { "matrix": [1, 10], "x": 10, "y": 1.25 }, - { "matrix": [1, 11], "x": 11, "y": 1.25 }, - { "matrix": [1, 12], "x": 12, "y": 1.25 }, - { "matrix": [1, 13], "x": 13, "y": 1.25 }, - { "matrix": [2, 13], "x": 14, "y": 1.25 }, - { "matrix": [1, 14], "x": 15.25, "y": 1.25 }, - { "matrix": [1, 15], "x": 16.25, "y": 1.25 }, - { "matrix": [1, 16], "x": 17.25, "y": 1.25 }, - { "matrix": [2, 0], "x": 0, "y": 2.25 }, - { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, - { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, - { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, - { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, - { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, - { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, - { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, - { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, - { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, - { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, - { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, - { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, - { "matrix": [2, 14], "x": 13.75, "y": 2.25 }, - { "matrix": [2, 15], "x": 15.25, "y": 2.25 }, - { "matrix": [2, 16], "x": 16.25, "y": 2.25 }, - { "matrix": [3, 0], "x": 17.25, "y": 2.25 }, - { "matrix": [3, 1], "x": 0, "y": 3.25 }, - { "matrix": [3, 2], "x": 1.75, "y": 3.25 }, - { "matrix": [3, 3], "x": 2.75, "y": 3.25 }, - { "matrix": [3, 4], "x": 3.75, "y": 3.25 }, - { "matrix": [3, 5], "x": 4.75, "y": 3.25 }, - { "matrix": [3, 6], "x": 5.75, "y": 3.25 }, - { "matrix": [3, 7], "x": 6.75, "y": 3.25 }, - { "matrix": [3, 8], "x": 7.75, "y": 3.25 }, - { "matrix": [3, 9], "x": 8.75, "y": 3.25 }, - { "matrix": [3, 10], "x": 9.75, "y": 3.25 }, - { "matrix": [3, 11], "x": 10.75, "y": 3.25 }, - { "matrix": [3, 12], "x": 11.75, "y": 3.25 }, - { "matrix": [3, 13], "x": 12.75, "y": 3.25 }, - { "matrix": [4, 0], "x": 0, "y": 4.25 }, - { "matrix": [4, 1], "x": 1.25, "y": 4.25 }, - { "matrix": [4, 2], "x": 2.25, "y": 4.25 }, - { "matrix": [4, 3], "x": 3.25, "y": 4.25 }, - { "matrix": [4, 4], "x": 4.25, "y": 4.25 }, - { "matrix": [4, 5], "x": 5.25, "y": 4.25 }, - { "matrix": [4, 6], "x": 6.25, "y": 4.25 }, - { "matrix": [4, 7], "x": 7.25, "y": 4.25 }, - { "matrix": [4, 8], "x": 8.25, "y": 4.25 }, - { "matrix": [4, 9], "x": 9.25, "y": 4.25 }, - { "matrix": [4, 10], "x": 10.25, "y": 4.25 }, - { "matrix": [4, 11], "x": 11.25, "y": 4.25 }, - { "matrix": [4, 12], "x": 12.25, "y": 4.25 }, - { "matrix": [4, 13], "x": 14, "y": 4.25 }, - { "matrix": [4, 15], "x": 16.25, "y": 4.25 }, - { "matrix": [5, 0], "x": 0, "y": 5.25 }, - { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, - { "matrix": [5, 2], "x": 2.5, "y": 5.25 }, - { "matrix": [5, 6], "x": 4, "y": 5.25 }, - { "matrix": [5, 11], "x": 11, "y": 5.25 }, - { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, - { "matrix": [5, 13], "x": 13.5, "y": 5.25 }, - { "matrix": [5, 14], "x": 15.25, "y": 5.25 }, - { "matrix": [5, 15], "x": 16.25, "y": 5.25 }, - { "matrix": [5, 16], "x": 17.25, "y": 5.25 } + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [2, 13], "x": 14, "y": 1.25}, + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [4, 13], "x": 14, "y": 4.25}, + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} ] } } diff --git a/keyboards/canary/canary60rgb/canary60rgb.c b/keyboards/canary/canary60rgb/canary60rgb.c index c47abf57fd57..065268c5318a 100644 --- a/keyboards/canary/canary60rgb/canary60rgb.c +++ b/keyboards/canary/canary60rgb/canary60rgb.c @@ -16,7 +16,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 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/canary/canary60rgb/v1/config.h b/keyboards/canary/canary60rgb/v1/config.h index e8d0808384fc..ab5c817000eb 100644 --- a/keyboards/canary/canary60rgb/v1/config.h +++ b/keyboards/canary/canary60rgb/v1/config.h @@ -33,7 +33,6 @@ # define DISABLE_RGB_MATRIX_MULTISPLASH # define DISABLE_RGB_MATRIX_SOLID_SPLASH # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 63 #endif diff --git a/keyboards/cannonkeys/an_c/config.h b/keyboards/cannonkeys/an_c/config.h index bea77ceac299..f3d6237a78df 100644 --- a/keyboards/cannonkeys/an_c/config.h +++ b/keyboards/cannonkeys/an_c/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/atlas/config.h b/keyboards/cannonkeys/atlas/config.h index e8d571f7a9dc..38f684a8617b 100644 --- a/keyboards/cannonkeys/atlas/config.h +++ b/keyboards/cannonkeys/atlas/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/brutalv2_1800/rules.mk b/keyboards/cannonkeys/brutalv2_1800/rules.mk index 59f8593f1849..6e7633bfe015 100644 --- a/keyboards/cannonkeys/brutalv2_1800/rules.mk +++ b/keyboards/cannonkeys/brutalv2_1800/rules.mk @@ -1,2 +1 @@ -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = rp2040_flash +# This file intentionally left blank diff --git a/keyboards/cannonkeys/brutalv2_60/config.h b/keyboards/cannonkeys/brutalv2_60/config.h new file mode 100644 index 000000000000..8b8e7f9aa557 --- /dev/null +++ b/keyboards/cannonkeys/brutalv2_60/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 + diff --git a/keyboards/cannonkeys/brutalv2_60/info.json b/keyboards/cannonkeys/brutalv2_60/info.json new file mode 100644 index 000000000000..3ee5f0d576b9 --- /dev/null +++ b/keyboards/cannonkeys/brutalv2_60/info.json @@ -0,0 +1,700 @@ +{ + "manufacturer": "CannonKeys", + "keyboard_name": "Brutal V2 60", + "maintainer": "awkannan", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "GP12", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["GP3", "GP2", "GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18"], + "rows": ["GP4", "GP5", "GP13", "GP14", "GP10"] + }, + "processor": "RP2040", + "url": "https://cannonkeys.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x000B", + "vid": "0xCA04" + }, + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_tsangan_hhkb", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan" + ], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [2, 12], "x": 14, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Del", "matrix": [2, 12], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Del", "matrix": [2, 12], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [2, 12], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Bspc", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Alt", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Win", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Win", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Alt", "matrix": [4, 12], "x": 12.5, "y": 4} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "|", "matrix": [1, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Del", "matrix": [2, 12], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "|", "matrix": [1, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Fn", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "|", "matrix": [1, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Del", "matrix": [2, 12], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "|", "matrix": [1, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/cannonkeys/brutalv2_60/keymaps/default/keymap.c b/keyboards/cannonkeys/brutalv2_60/keymaps/default/keymap.c new file mode 100644 index 000000000000..4678bab52a5a --- /dev/null +++ b/keyboards/cannonkeys/brutalv2_60/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _BASE, + _FN1, + _FN2, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL + ), + + [_FN1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, QK_BOOT + ), + + [_FN2] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, DB_TOGG, QK_BOOT + ) +}; diff --git a/keyboards/cannonkeys/brutalv2_60/keymaps/via/keymap.c b/keyboards/cannonkeys/brutalv2_60/keymaps/via/keymap.c new file mode 100644 index 000000000000..4678bab52a5a --- /dev/null +++ b/keyboards/cannonkeys/brutalv2_60/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _BASE, + _FN1, + _FN2, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_all( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL + ), + + [_FN1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, QK_BOOT + ), + + [_FN2] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, + _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, DB_TOGG, QK_BOOT + ) +}; diff --git a/keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk b/keyboards/cannonkeys/brutalv2_60/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk rename to keyboards/cannonkeys/brutalv2_60/keymaps/via/rules.mk diff --git a/keyboards/cannonkeys/brutalv2_60/readme.md b/keyboards/cannonkeys/brutalv2_60/readme.md new file mode 100644 index 000000000000..8c08e3a30aa6 --- /dev/null +++ b/keyboards/cannonkeys/brutalv2_60/readme.md @@ -0,0 +1,24 @@ +# Brutal v2 60 + +Brutal v2 60 Keyboard + +Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +Hardware Supported: RP2040 + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/brutalv2_60:default + +Flashing example for this keyboard: + + make cannonkeys/brutalv2_60:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Hold the "BOOTMODE" button on the back of the PCB and briefly press the "RESET" button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cannonkeys/brutalv2_60/rules.mk b/keyboards/cannonkeys/brutalv2_60/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/cannonkeys/brutalv2_60/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/cannonkeys/caerdroia/rules.mk b/keyboards/cannonkeys/caerdroia/rules.mk index 59f8593f1849..6e7633bfe015 100644 --- a/keyboards/cannonkeys/caerdroia/rules.mk +++ b/keyboards/cannonkeys/caerdroia/rules.mk @@ -1,2 +1 @@ -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = rp2040_flash +# This file intentionally left blank diff --git a/keyboards/cannonkeys/cloudline/config.h b/keyboards/cannonkeys/cloudline/config.h index cff0a03945e2..41e58784b480 100644 --- a/keyboards/cannonkeys/cloudline/config.h +++ b/keyboards/cannonkeys/cloudline/config.h @@ -12,7 +12,7 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/db60/config.h b/keyboards/cannonkeys/db60/config.h index bea77ceac299..f3d6237a78df 100644 --- a/keyboards/cannonkeys/db60/config.h +++ b/keyboards/cannonkeys/db60/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/devastatingtkl/config.h b/keyboards/cannonkeys/devastatingtkl/config.h index bea77ceac299..f3d6237a78df 100644 --- a/keyboards/cannonkeys/devastatingtkl/config.h +++ b/keyboards/cannonkeys/devastatingtkl/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/instant60/config.h b/keyboards/cannonkeys/instant60/config.h index bea77ceac299..f3d6237a78df 100644 --- a/keyboards/cannonkeys/instant60/config.h +++ b/keyboards/cannonkeys/instant60/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/instant65/config.h b/keyboards/cannonkeys/instant65/config.h index 0adcfdfa9289..0b1e0948b319 100644 --- a/keyboards/cannonkeys/instant65/config.h +++ b/keyboards/cannonkeys/instant65/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/is0gr/info.json b/keyboards/cannonkeys/is0gr/info.json new file mode 100644 index 000000000000..49aaaddd5254 --- /dev/null +++ b/keyboards/cannonkeys/is0gr/info.json @@ -0,0 +1,32 @@ +{ + "manufacturer": "CannonKeys", + "keyboard_name": "is0GR", + "maintainer": "awkannan", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B3"], + "rows": ["A15"] + }, + "processor": "STM32F072", + "url": "https://cannonkeys.com", + "usb": { + "device_version": "0.0.1", + "pid": "0x0028", + "vid": "0xCA04" + }, + "community_layouts": ["ortho_1x1"], + "layouts": { + "LAYOUT_ortho_1x1": { + "layout": [ + {"matrix": [0, 0], "x": 0.25, "y": 0, "w": 1.25, "h": 2} + ] + } + } +} diff --git a/keyboards/cannonkeys/is0gr/keymaps/default/keymap.c b/keyboards/cannonkeys/is0gr/keymaps/default/keymap.c new file mode 100644 index 000000000000..49f0cdb4916d --- /dev/null +++ b/keyboards/cannonkeys/is0gr/keymaps/default/keymap.c @@ -0,0 +1,10 @@ +// Copyright 2023 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_1x1( + KC_ENT + ), +}; diff --git a/keyboards/cannonkeys/is0gr/keymaps/via/keymap.c b/keyboards/cannonkeys/is0gr/keymaps/via/keymap.c new file mode 100644 index 000000000000..10451984f063 --- /dev/null +++ b/keyboards/cannonkeys/is0gr/keymaps/via/keymap.c @@ -0,0 +1,11 @@ +// Copyright 2023 Andrew Kannan +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_1x1( + KC_ENT + ), +}; + diff --git a/keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk b/keyboards/cannonkeys/is0gr/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk rename to keyboards/cannonkeys/is0gr/keymaps/via/rules.mk diff --git a/keyboards/cannonkeys/is0gr/readme.md b/keyboards/cannonkeys/is0gr/readme.md new file mode 100644 index 000000000000..f6fb2b8f61ee --- /dev/null +++ b/keyboards/cannonkeys/is0gr/readme.md @@ -0,0 +1,24 @@ +# Alchemist Keyboards is0GR + +is0GR Keyboard + +Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +Hardware Supported: STM32F072CBT6 or equivalent + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/is0gr:default + +Flashing example for this keyboard: + + make cannonkeys/is0gr:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (on this board - it's the only key) and plug in the keyboard +* **Physical reset button**: Bridge the two pads labeled "RESET" on the top of the PCB using some tweezers, and hold the tweezers there until the board enters the bootloader mode +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (it isn't by default) diff --git a/keyboards/cannonkeys/is0gr/rules.mk b/keyboards/cannonkeys/is0gr/rules.mk new file mode 100644 index 000000000000..0ab54aaaf718 --- /dev/null +++ b/keyboards/cannonkeys/is0gr/rules.mk @@ -0,0 +1,2 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF diff --git a/keyboards/cannonkeys/malicious_ergo/config.h b/keyboards/cannonkeys/malicious_ergo/config.h index 70d39892fdea..f2314b6077d5 100644 --- a/keyboards/cannonkeys/malicious_ergo/config.h +++ b/keyboards/cannonkeys/malicious_ergo/config.h @@ -28,7 +28,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/moment_hs/keymaps/vial/config.h b/keyboards/cannonkeys/moment_hs/keymaps/vial/config.h new file mode 100644 index 000000000000..1a4ce0497245 --- /dev/null +++ b/keyboards/cannonkeys/moment_hs/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +/* Vial configuration */ +#define VIAL_KEYBOARD_UID {0x0B, 0x3B, 0xEC, 0x8D, 0x86, 0xED, 0x9F, 0xB3} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 14 } diff --git a/keyboards/cannonkeys/moment_hs/keymaps/vial/keymap.c b/keyboards/cannonkeys/moment_hs/keymaps/vial/keymap.c new file mode 100644 index 000000000000..736837a75b73 --- /dev/null +++ b/keyboards/cannonkeys/moment_hs/keymaps/vial/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2022 Andrew Kannan (@awkannan) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_names { + _BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT_60_tsangan_hhkb( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL + ), + + [_FN1] = LAYOUT_60_tsangan_hhkb( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, QK_BOOT + ), + +}; diff --git a/keyboards/cannonkeys/moment_hs/keymaps/vial/rules.mk b/keyboards/cannonkeys/moment_hs/keymaps/vial/rules.mk new file mode 100644 index 000000000000..4f7618e9b211 --- /dev/null +++ b/keyboards/cannonkeys/moment_hs/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes diff --git a/keyboards/cannonkeys/moment_hs/keymaps/vial/vial.json b/keyboards/cannonkeys/moment_hs/keymaps/vial/vial.json new file mode 100644 index 000000000000..1b02b2915181 --- /dev/null +++ b/keyboards/cannonkeys/moment_hs/keymaps/vial/vial.json @@ -0,0 +1,149 @@ +{ + "lighting": "none", + "matrix": { + "rows": 5, + "cols": 15 + }, + "layouts": { + "labels": ["Split Backspace"], + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,14\n\n\n0,0", + { + "x": 0.25, + "c": "#cccccc" + }, + "0,14\n\n\n0,1", + { + "c": "#aaaaaa" + }, + "0,13\n\n\n0,1" + ], + [ + { + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "1,14" + ], + [ + { + "w": 1.75 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + { + "c": "#aaaaaa", + "w": 2.25 + }, + "2,14" + ], + [ + { + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12", + "3,14" + ], + [ + { + "w": 1.5 + }, + "4,0", + "4,1", + { + "w": 1.5 + }, + "4,2", + { + "c": "#cccccc", + "w": 7 + }, + "4,6", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,11", + "4,12", + { + "w": 1.5 + }, + "4,14" + ] + ] + } +} diff --git a/keyboards/cannonkeys/obliterated75/config.h b/keyboards/cannonkeys/obliterated75/config.h index 0adcfdfa9289..0b1e0948b319 100644 --- a/keyboards/cannonkeys/obliterated75/config.h +++ b/keyboards/cannonkeys/obliterated75/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/ortho48/config.h b/keyboards/cannonkeys/ortho48/config.h index 703975ab861b..32412b1d5441 100644 --- a/keyboards/cannonkeys/ortho48/config.h +++ b/keyboards/cannonkeys/ortho48/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/ortho48v2/rules.mk b/keyboards/cannonkeys/ortho48v2/rules.mk index 59f8593f1849..6e7633bfe015 100644 --- a/keyboards/cannonkeys/ortho48v2/rules.mk +++ b/keyboards/cannonkeys/ortho48v2/rules.mk @@ -1,2 +1 @@ -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = rp2040_flash +# This file intentionally left blank diff --git a/keyboards/cannonkeys/ortho60/config.h b/keyboards/cannonkeys/ortho60/config.h index 703975ab861b..32412b1d5441 100644 --- a/keyboards/cannonkeys/ortho60/config.h +++ b/keyboards/cannonkeys/ortho60/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/ortho60v2/rules.mk b/keyboards/cannonkeys/ortho60v2/rules.mk index 59f8593f1849..6e7633bfe015 100644 --- a/keyboards/cannonkeys/ortho60v2/rules.mk +++ b/keyboards/cannonkeys/ortho60v2/rules.mk @@ -1,2 +1 @@ -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = rp2040_flash +# This file intentionally left blank diff --git a/keyboards/cannonkeys/ortho75/config.h b/keyboards/cannonkeys/ortho75/config.h index 703975ab861b..32412b1d5441 100644 --- a/keyboards/cannonkeys/ortho75/config.h +++ b/keyboards/cannonkeys/ortho75/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/practice60/config.h b/keyboards/cannonkeys/practice60/config.h index 703975ab861b..32412b1d5441 100644 --- a/keyboards/cannonkeys/practice60/config.h +++ b/keyboards/cannonkeys/practice60/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/practice65/config.h b/keyboards/cannonkeys/practice65/config.h index 703975ab861b..32412b1d5441 100644 --- a/keyboards/cannonkeys/practice65/config.h +++ b/keyboards/cannonkeys/practice65/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/ripple/config.h b/keyboards/cannonkeys/ripple/config.h index 68745474c9ba..d95e23cfaad2 100644 --- a/keyboards/cannonkeys/ripple/config.h +++ b/keyboards/cannonkeys/ripple/config.h @@ -12,7 +12,7 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/sagittarius/config.h b/keyboards/cannonkeys/sagittarius/config.h index b48d66fd787b..b8cdc797d0e4 100644 --- a/keyboards/cannonkeys/sagittarius/config.h +++ b/keyboards/cannonkeys/sagittarius/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/savage65/config.h b/keyboards/cannonkeys/savage65/config.h index 0adcfdfa9289..0b1e0948b319 100644 --- a/keyboards/cannonkeys/savage65/config.h +++ b/keyboards/cannonkeys/savage65/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/serenity/config.h b/keyboards/cannonkeys/serenity/config.h index 4b06e24a1ca5..5f31f2374d19 100644 --- a/keyboards/cannonkeys/serenity/config.h +++ b/keyboards/cannonkeys/serenity/config.h @@ -21,7 +21,7 @@ along with this program. If not, see . #define BACKLIGHT_PWM_CHANNEL 1 #define BACKLIGHT_PAL_MODE 1 -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/tmov2/config.h b/keyboards/cannonkeys/tmov2/config.h index bea77ceac299..f3d6237a78df 100644 --- a/keyboards/cannonkeys/tmov2/config.h +++ b/keyboards/cannonkeys/tmov2/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c b/keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c deleted file mode 100644 index 2a9540286344..000000000000 --- a/keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c +++ /dev/null @@ -1,173 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "brandonschlack.h" - -/** - * Layer Names - * - * Layers mostly used for macro keys - */ -#define _REEDER _M1 -#define _NAV _M2 -#define _MOUSE _M3 - -/** - * Keycodes & Macros - */ -#define TG_BASE TO(_BASE) -#define TG_REDR TO(_REEDER) -#define TG_NAV TO(_NAV) -#define TG_MOUS TO(_MOUSE) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /** - * Base - * ┌───┬┬┬─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│││Tab  │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│Bck│ - * ├───┼┼┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │PgU│││HyEsc │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter│ - * ├───┼┼┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ - * │PgD│││Shift   │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│Shft│ Fn│ - * ├───┼┼┼┬┬┬┬┬┬┬┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┼┬┬┬┬┼┬┬┬┤ - * │End│││││││││││Opt│Cmd  │        │          │  Cmd│Ctl│││││││││││ - * └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘ - */ - [_BASE] = LAYOUT_default( - KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - KC_PGUP, HY_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_PGDN, KC_LSFT, XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, PLY_FN1, - KC_END, KC_LOPT, KC_LCMD, SPC_RAI, SPC_RAI, KC_RCMD, KC_RCTL - ), - /** - * Reeder - * ┌───┬┬┬─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ P │││     │   │   │   │   │   │   │   │   │   │   │   │   │   │ - * ├───┼┼┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │ K │││      │   │   │   │   │   │   │   │   │   │   │   │      │ - * ├───┼┼┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ - * │ J │││        │   │   │   │   │   │   │   │   │   │   │    │   │ - * ├───┼┼┼┬┬┬┬┬┬┬┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┼┬┬┬┬┼┬┬┬┤ - * │ N │││││││││││   │     │        │          │     │   │││││││││││ - * └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘ - */ - [_REEDER] = LAYOUT_default( - KC_P, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_K, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_J, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_N, _______, _______, _______, _______, _______, _______ - ), - /** - * Nav - * ┌───┬┬┬─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ → │││     │   │   │   │   │   │   │   │   │   │   │   │   │   │ - * ├───┼┼┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │ ↑ │││      │   │   │   │   │   │   │   │   │   │   │   │      │ - * ├───┼┼┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ - * │ ↓ │││        │   │   │   │   │   │   │   │   │   │   │    │   │ - * ├───┼┼┼┬┬┬┬┬┬┬┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┼┬┬┬┬┼┬┬┬┤ - * │ ← │││││││││││   │     │        │          │     │   │││││││││││ - * └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘ - */ - [_NAV] = LAYOUT_default( - KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_DOWN, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LEFT, _______, _______, _______, _______, _______, _______ - ), - /** - * Mouse - * ┌───┬┬┬─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │WhU│││     │   │   │   │   │   │   │   │   │   │   │   │   │   │ - * ├───┼┼┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │ ↑ │││      │   │   │   │   │   │   │   │   │   │   │   │      │ - * ├───┼┼┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ - * │ ↓ │││        │   │   │   │   │   │   │   │   │   │   │    │   │ - * ├───┼┼┼┬┬┬┬┬┬┬┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┼┬┬┬┬┼┬┬┬┤ - * │WhD│││││││││││   │     │        │          │     │   │││││││││││ - * └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘ - */ - [_MOUSE] = LAYOUT_default( - MC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_DOWN, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - MC_WH_D, _______, _______, _______, _______, _______, _______ - ), - /** - * Lower - * ┌───┬┬┬─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Nxt│││Del  │BrD│BrU│Msn│LHP│   │   │   │   │   │   │ ↑ │Mut│SlD│ - * ├───┼┼┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │VlU│││HyCaps│   │   │NxW│PvT│Bck│Fwd│NxT│   │   │ ← │ → │ Play │ - * ├───┼┼┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ - * │VlD│││        │   │   │   │1PX│1Ps│   │   │   │   │ ↓ │    │   │ - * ├───┼┼┼┬┬┬┬┬┬┬┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┼┬┬┬┬┼┬┬┬┤ - * │Prv│││││││││││   │     │        │          │     │   │││││││││││ - * └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘ - */ - [_LOWER] = LAYOUT_default( - KC_MNXT, KC_DEL, KC_BRMD, KC_BRMU, MC_MSSN, MC_LHPD, _______, _______, _______, _______, _______, _______, KC_UP, KC_MUTE, MC_SLPD, - KC_VOLU, HY_CAPS, _______, _______, NXT_WIN, PRV_TAB, MC_BACK, MC_FWRD, NXT_TAB, _______, _______, KC_LEFT, KC_RGHT, KC_MPLY, - KC_VOLD, _______, XXXXXXX, _______, _______, _______, PX_AFLL, OP_AFLL, _______, _______, _______, _______, KC_DOWN, _______, _______, - KC_MPRV, _______, _______, _______, _______, _______, _______ - ), - - /** - * Raise - * ┌───┬┬┬─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Hom│││~ `  │! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│   │ - * ├───┼┼┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │PgU│││      │ F1│ F2│ F3│ F4│ F5│ F6│_ -│+ =│   │   │   │      │ - * ├───┼┼┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ - * │PgD│││        │ F7│ F8│ F9│F10│F11│F12│   │   │   │| \│    │   │ - * ├───┼┼┼┬┬┬┬┬┬┬┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┼┬┬┬┬┼┬┬┬┤ - * │End│││││││││││   │     │        │          │     │   │││││││││││ - * └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘ - */ - [_RAISE] = LAYOUT_default( - KC_HOME, 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_PGUP, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, _______, _______, _______, _______, - KC_PGDN, _______, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, KC_BSLS, _______, _______, - KC_END, _______, _______, _______, _______, _______, _______ - ), - /** - * Adjust - * ┌───┬┬┬─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Bse│││Make │   │   │EEP│RST│   │   │   │   │   │   │   │   │   │ - * ├───┼┼┼─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤ - * │Rdr│││      │   │   │   │   │   │   │   │   │   │   │   │      │ - * ├───┼┼┼──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴──┬───┤ - * │Nav│││        │   │   │   │   │   │   │   │   │   │   │    │   │ - * ├───┼┼┼┬┬┬┬┬┬┬┬┴──┬┴───┴┬──┴───┴─┬─┴───┴───┴┬──┴──┬┴──┬┼┬┬┬┬┼┬┬┬┤ - * │Mse│││││││││││   │     │        │          │     │   │││││││││││ - * └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘ - */ - [_ADJUST] = LAYOUT_default( - TG_BASE, QM_MAKE, _______, _______, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, - TG_REDR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - TG_NAV, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - TG_MOUS, _______, _______, _______, _______, _______, _______ - ), -}; - -void keyboard_post_init_keymap(void) { - rgblight_disable_noeeprom(); -} - -layer_state_t layer_state_set_keymap(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} diff --git a/keyboards/cannonkeys/tsukuyomi/config.h b/keyboards/cannonkeys/tsukuyomi/config.h index 0adcfdfa9289..0b1e0948b319 100644 --- a/keyboards/cannonkeys/tsukuyomi/config.h +++ b/keyboards/cannonkeys/tsukuyomi/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/typeb/rules.mk b/keyboards/cannonkeys/typeb/rules.mk index 59f8593f1849..6e7633bfe015 100644 --- a/keyboards/cannonkeys/typeb/rules.mk +++ b/keyboards/cannonkeys/typeb/rules.mk @@ -1,2 +1 @@ -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = rp2040_flash +# This file intentionally left blank diff --git a/keyboards/capsunlocked/cu75/config.h b/keyboards/capsunlocked/cu75/config.h index b8cd9eeebbc3..b9449c4714bf 100644 --- a/keyboards/capsunlocked/cu75/config.h +++ b/keyboards/capsunlocked/cu75/config.h @@ -17,8 +17,6 @@ along with this program. If not, see . #pragma once -#define BACKLIGHT_PWM_MAP {8, 16, 40, 55, 70, 128, 200, 255} - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ diff --git a/keyboards/capsunlocked/cu75/cu75.c b/keyboards/capsunlocked/cu75/cu75.c index c894d18602ce..f980b0d9e130 100644 --- a/keyboards/capsunlocked/cu75/cu75.c +++ b/keyboards/capsunlocked/cu75/cu75.c @@ -1,15 +1,8 @@ -#include -#include -#include #include "cu75.h" -#include "debug.h" -#include "../lfkeyboards/issi.h" -#include "../lfkeyboards/TWIlib.h" -#include "../lfkeyboards/lighting.h" +#include #ifdef AUDIO_ENABLE float test_sound[][2] = SONG(STARTUP_SOUND); -#include "audio.h" #endif uint16_t click_hz = CLICK_HZ; @@ -34,39 +27,12 @@ void matrix_init_kb(void) setPinOutput(C6); writePinLow(C6); #endif -#ifdef ISSI_ENABLE - issi_init(); -#endif } void matrix_scan_kb(void) { #ifdef WATCHDOG_ENABLE wdt_reset(); -#endif -#ifdef ISSI_ENABLE - // switch/underglow lighting update - static uint32_t issi_device = 0; - static uint32_t twi_last_ready = 0; - if(twi_last_ready > 1000){ - // Its been way too long since the last ISSI update, reset the I2C bus and start again - dprintf("TWI failed to recover, TWI re-init\n"); - twi_last_ready = 0; - TWIInit(); - force_issi_refresh(); - } - if(isTWIReady()){ - twi_last_ready = 0; - // If the i2c bus is available, kick off the issi update, alternate between devices - update_issi(issi_device, issi_device); - if(issi_device){ - issi_device = 0; - }else{ - issi_device = 3; - } - }else{ - twi_last_ready++; - } #endif matrix_scan_user(); } @@ -92,7 +58,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) } if (keycode == QK_BOOT) { reset_keyboard_kb(); - } else { } return process_record_user(keycode, record); } @@ -105,11 +70,3 @@ void reset_keyboard_kb(void){ #endif reset_keyboard(); } - -// LFK lighting info -const uint8_t switch_matrices[] = {0, 1}; -const uint8_t rgb_matrices[] = {6, 7}; -const uint8_t rgb_sequence[] = { - 24, 23, 22, 21, 20, 19, 18, 17, 1, 2, 3, 4, 5, - 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 9 -}; diff --git a/keyboards/capsunlocked/cu75/cu75.h b/keyboards/capsunlocked/cu75/cu75.h index d17c1da26faf..36797efd8f8f 100644 --- a/keyboards/capsunlocked/cu75/cu75.h +++ b/keyboards/capsunlocked/cu75/cu75.h @@ -1,23 +1,6 @@ #pragma once #include "quantum.h" -#include "matrix.h" -#include - -typedef struct RGB_Color { - uint16_t red; - uint16_t green; - uint16_t blue; -} RGB_Color; - -typedef struct Layer_Info { - uint32_t layer; - uint32_t mask; - RGB_Color color; -} Layer_Info; - -extern const uint32_t layer_count; -extern const Layer_Info layer_info[]; #define CLICK_HZ 500 #define CLICK_MS 2 diff --git a/keyboards/capsunlocked/cu75/info.json b/keyboards/capsunlocked/cu75/info.json index 24aed787ef9b..25e3ca049f10 100644 --- a/keyboards/capsunlocked/cu75/info.json +++ b/keyboards/capsunlocked/cu75/info.json @@ -13,30 +13,6 @@ "rows": ["F1", "B7", "B3", "D2", "D3", "B2"] }, "diode_direction": "COL2ROW", - "backlight": { - "driver": "custom", - "levels": 8 - }, - "rgblight": { - "driver": "custom", - "hue_steps": 10, - "led_count": 24, - "animations": { - "breathing": true, - "rainbow_mood": true, - "rainbow_swirl": true, - "snake": true, - "knight": true, - "christmas": true, - "static_gradient": true, - "rgb_test": true, - "alternating": true, - "twinkle": true - } - }, - "ws2812": { - "pin": "C7" - }, "processor": "atmega32u4", "bootloader": "atmel-dfu", "layouts": { diff --git a/keyboards/capsunlocked/cu75/keymaps/default/rules.mk b/keyboards/capsunlocked/cu75/keymaps/default/rules.mk index 483baa799377..b4a28dd9647a 100644 --- a/keyboards/capsunlocked/cu75/keymaps/default/rules.mk +++ b/keyboards/capsunlocked/cu75/keymaps/default/rules.mk @@ -4,10 +4,5 @@ EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes -BACKLIGHT_ENABLE = yes # Disable keyboard backlight functionality AUDIO_ENABLE = no # Audio output -RGBLIGHT_ENABLE = yes # Disable RGB underlight -SLEEP_LED_ENABLE = yes - -ISSI_ENABLE = yes # If the I2C pullup resistors aren't install this must be disabled WATCHDOG_ENABLE = no # Resets keyboard if matrix_scan isn't run every 250ms diff --git a/keyboards/capsunlocked/cu75/keymaps/iso/rules.mk b/keyboards/capsunlocked/cu75/keymaps/iso/rules.mk index 005811360586..c692135bf3f3 100644 --- a/keyboards/capsunlocked/cu75/keymaps/iso/rules.mk +++ b/keyboards/capsunlocked/cu75/keymaps/iso/rules.mk @@ -4,10 +4,5 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes -# BACKLIGHT_ENABLE = no # Disable keyboard backlight functionality AUDIO_ENABLE = no # Audio output -RGBLIGHT_ENABLE = no # Disable RGB underlight -SLEEP_LED_ENABLE = yes - -ISSI_ENABLE = no # If the I2C pullup resistors aren't install this must be disabled WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms diff --git a/keyboards/capsunlocked/cu75/post_rules.mk b/keyboards/capsunlocked/cu75/post_rules.mk index a5d974666438..1a3c10d3a1ab 100644 --- a/keyboards/capsunlocked/cu75/post_rules.mk +++ b/keyboards/capsunlocked/cu75/post_rules.mk @@ -1,7 +1,3 @@ -ifeq ($(strip $(ISSI_ENABLE)), yes) - OPT_DEFS += -DISSI_ENABLE -endif - ifeq ($(strip $(WATCHDOG_ENABLE)), yes) OPT_DEFS += -DWATCHDOG_ENABLE endif diff --git a/keyboards/capsunlocked/cu75/rules.mk b/keyboards/capsunlocked/cu75/rules.mk index cf757fc166fd..e69de29bb2d1 100644 --- a/keyboards/capsunlocked/cu75/rules.mk +++ b/keyboards/capsunlocked/cu75/rules.mk @@ -1,3 +0,0 @@ -# TODO: These boards need to be converted to RGB Matrix -VPATH += keyboards/lfkeyboards -SRC = TWIlib.c issi.c lighting.c diff --git a/keyboards/centromere/info.json b/keyboards/centromere/info.json index 5f9b57d97a18..280ab8bd7e42 100644 --- a/keyboards/centromere/info.json +++ b/keyboards/centromere/info.json @@ -10,7 +10,7 @@ }, "processor": "atmega32u4", "bootloader": "caterina", - "community_layouts": ["split_3x5_3" "split_3x6_3"], + "community_layouts": ["split_3x5_3", "split_3x6_3"], "layout_aliases": { "LAYOUT": "LAYOUT_split_3x6_3" }, diff --git a/keyboards/centromere/keymaps/mattly/keymap.c b/keyboards/centromere/keymaps/mattly/keymap.c deleted file mode 100644 index bee7e98e12d0..000000000000 --- a/keyboards/centromere/keymaps/mattly/keymap.c +++ /dev/null @@ -1,55 +0,0 @@ -#include QMK_KEYBOARD_H -#include "mattly.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // I apparently soldered in my switches on the wrong sides of the boards, so this is mirrored - - [_BASE_MAC] = LAYOUT_split_3x6_3( - KC_SCLN, KC_P, O_CTL, I_ALT, U_GUI, KC_Y, KC_T, R_GUI, E_ALT, W_CTL, KC_Q, KC_BSPC, - KC_QUOT, MINSCTL, L_ALT, K_GUI, J_SFT, KC_H, KC_G, F_SFT, D_GUI, S_ALT, A_CTL, KC_CAPS, - KC_ENT, KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, KC_B, KC_V, KC_C, KC_X, KC_Z, NAVLOCK, - DEL_WRP, BSP_SYM, SPC_SFT, SPC_SFT, TAB_NUM, ESC_HYP - ), - - [_OVER_WIN] = LAYOUT_split_3x6_3( - _______, _______, O_GUI, _______, U_CTL, _______, _______, R_CTL, _______, W_GUI, _______, _______, - _______, MINSGUI, _______, K_CTL, _______, _______, _______, _______, D_CTL, _______, A_GUI, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ - ), - - - [_SYMBOL] = LAYOUT_split_3x6_3( - _______, XXXXXXX, KC_ASTR, KC_PLUS, KC_RABK, KC_LABK, KC_RBRC, KC_LBRC, KC_TILD, KC_GRV, KC_AMPR, _______, - _______, KC_UNDS, KC_AT, KC_EXLM, KC_COLN, KC_SCLN, KC_RPRN, KC_LPRN, KC_EQL, KC_PERC, KC_DLR, _______, - _______, KC_QUES, KC_BSLS, KC_PIPE, KC_DQUO, KC_QUOT, KC_RCBR, KC_LCBR, KC_HASH, KC_CIRC, KC_HASH, XXXXXXX, - _______, _______, _______, _______, _______, _______ - ), - - [_NAVNUM] = LAYOUT_split_3x6_3( - KC_PLUS, KC_DOT, KC_P9, KC_P8, KC_P7, KC_DLR, KC_PGUP, M_FWORD, KC_UP, M_BWORD, M_NAVFW, M_NXWIN, - KC_MINS, KC_EQL, KC_P6, KC_P5, KC_P4, KC_PERC, KC_PGDN, KC_RGHT, KC_DOWN, KC_LEFT, M_NAVBK, M_PVWIN, - KC_ASTR, KC_COMM, KC_P3, KC_P2, KC_P1, KC_P0, M_NXTAB, KC_END, XXXXXXX, KC_HOME, M_PVTAB, _______, - KC_P0, _______, _______, _______, _______, _______ - ), - [_NAVNUM_WIN] = LAYOUT_split_3x6_3( - _______, _______, _______, _______, _______, _______, _______, W_FWORD, _______, W_BWORD, W_NAVFW, W_NXWIN, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, W_NAVBK, W_PVWIN, - _______, _______, _______, _______, _______, _______, W_NXTAB, _______, _______, _______, W_PVTAB, _______, - _______, _______, _______, _______, _______, _______ - ), - - [_FUNCT] = LAYOUT_split_3x6_3( - KC_F15, KC_F12, KC_F9, KC_F8, KC_F7, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, - KC_F14, KC_F11, KC_F6, KC_F5, KC_F4, KC_MUTE, XXXXXXX, TOG_WIN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_F13, KC_F10, KC_F3, KC_F2, KC_F1, KC_VOLD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, _______, _______, _______, _______ - ), - [_FUNCT_WIN] = LAYOUT_split_3x6_3( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ - ), -}; diff --git a/keyboards/centromere/keymaps/mattly/rules.mk b/keyboards/centromere/keymaps/mattly/rules.mk deleted file mode 100644 index 0a5b666e8557..000000000000 --- a/keyboards/centromere/keymaps/mattly/rules.mk +++ /dev/null @@ -1 +0,0 @@ -MOUSEKEY_ENABLE = no diff --git a/keyboards/centromere/rules.mk b/keyboards/centromere/rules.mk index 2171d801e548..26081e41321c 100644 --- a/keyboards/centromere/rules.mk +++ b/keyboards/centromere/rules.mk @@ -18,4 +18,4 @@ CUSTOM_MATRIX = lite # project specific files SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes diff --git a/keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c b/keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c deleted file mode 100644 index b5b4721ce6ef..000000000000 --- a/keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright 2021 Alan Pocklington - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "ajp10304.h" -#include "keymap_uk.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | - * `-----------------------------------------------------------------------------------' - */ -[_QWERTY] = LAYOUT_ortho_4x12( - LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC , - MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) , - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , - MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSFT, KC_BTN2, KC_RCTL, MO(_FUNC2) -), - -/* Colemak-DHm - * ,-----------------------------------------------------------------------------------. - * | Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Tab | A | R | S | T | G | M | N | E | I | O | Enter| - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | - * `-----------------------------------------------------------------------------------' - */ -[_COLEMAK] = LAYOUT_ortho_4x12( - LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC , - MT(MOD_LSFT, KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, MT(MOD_RSFT, KC_ENT) , - KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , - MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_LSFT, KC_BTN2, KC_RCTL, MO(_FUNC2) -), - -/* Function - * ,-----------------------------------------------------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn | - * `-----------------------------------------------------------------------------------' - */ -[_FUNC] = LAYOUT_ortho_4x12( - 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT , - KC_LSFT, KC_NUBS, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLS, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) , - _______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______ -), - -/* Lower - * ,-----------------------------------------------------------------------------------. - * | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_LOWER] = LAYOUT_ortho_4x12( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC , - LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC) , - SC_LSPO, KC_NUBS, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) , - _______, _______, _______, _______, _______, KC_DEL, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Raise - * ,-----------------------------------------------------------------------------------. - * | ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | { | } | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -| - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Mouse| | | | | Alt | Enter|Raise | | | | | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = LAYOUT_ortho_4x12( - KC_GRV, XXXXXXX, M_WORD_SEL, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDN, XXXXXXX, KC_PSCR , - KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) , - _______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) , - MO(_MOUSE), _______, _______, _______, _______, KC_LALT, KC_ENT, _______, XXXXXXX, _______, _______, _______ -), - -/* Adjust (Lower + Raise) - * ,------------------------------------------------------------------------------------. - * | ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | - * |------+------+------+------+------+-------------+------+------+------+------+-------| - * | CAPS | | | | | PLAY1| PLAY2| Mute | Vol+ | Play | |Qwerty | - * |------+------+------+------+------+------|------+------+------+------+------+-------| - * | PC/MC| | | | | STOP | STOP | Prev | Vol- | Next | |Colemak| - * |------+------+------+------+------+------+------+------+------+------+------+-------| - * | | | | | | | | | | | | - * `------------------------------------------------------------------------------------' - */ -[_ADJUST] = LAYOUT_ortho_4x12( - M_CUSTOM, QK_BOOT, QWERTY, BL_ON, BL_OFF, DM_REC1, DM_REC2, _______, _______, _______, _______, KC_DEL , - KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, DM_PLY1, DM_PLY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, QWERTY , - TG(_MAC), RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, DM_RSTP, DM_RSTP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, COLEMAK , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -/* Mouse - * ,-----------------------------------------------------------------------------------. - * | ESC | | | | | | | | BTN3 | | | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN |RIGHT | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ -[_MOUSE] = LAYOUT_ortho_4x12( - KC_ESC , _______, _______, _______, _______, _______, _______, _______, KC_MS_BTN3, _______, _______, _______, - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______, - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -/* Num Pad - * ,-----------------------------------------------------------------------------------. - * | ESC | | | | | |NMLOCK| 7 | 8 | 9 | / | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | | | | | | 4 | 5 | 6 | * | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | 1 | 2 | 3 | + | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | 0 | . | , | - | | - * `-----------------------------------------------------------------------------------' - */ -[_NUMPAD] = LAYOUT_ortho_4x12( - _______, _______, _______, _______, _______, _______, KC_NUM, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, KC_COMM, KC_KP_MINUS, _______ -), - -/* Function 2 (Right hand side) - * ,-----------------------------------------------------------------------------------. - * | | |WRDSEL| | | | LNDEL| | | | | | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | LNSEL| DUP | | | | |LNJOIN| | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | UNDO | CUT | COPY | PASTE| | | | | | | MODE | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ -[_FUNC2] = LAYOUT_ortho_4x12( - _______, _______, M_WORD_SEL, _______, _______, _______, M_LINE_DEL, _______, _______, _______, _______, _______, - _______, _______, M_LINE_SEL, M_DUP, _______, _______, _______, M_JOIN, _______, _______, _______, _______, - _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M_MODE, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MAC]= LAYOUT_ortho_4x12( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - MFNC, _______, _______, _______, MLWR, _______, _______, MRSE, _______, _______, _______, MFNC2 -), - -[_MLWR] = LAYOUT_ortho_4x12( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MRSE] = LAYOUT_ortho_4x12( - _______, _______, M_WORD_SEL_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) , - _______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MFNC]= LAYOUT_ortho_4x12( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT) , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MFNC2] = LAYOUT_ortho_4x12( - _______, _______, M_WORD_SEL_MAC, _______, _______, _______, M_LINE_DEL_MAC, _______, _______, _______, _______, _______, - _______, _______, M_LINE_SEL_MAC, M_DUP_MAC, _______, _______, _______, M_JOIN_MAC, _______, _______, _______, _______, - _______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M_MODE_MAC, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -) - -}; diff --git a/keyboards/checkerboards/quark/keymaps/ajp10304/readme.md b/keyboards/checkerboards/quark/keymaps/ajp10304/readme.md deleted file mode 100644 index 5c9169fa478a..000000000000 --- a/keyboards/checkerboards/quark/keymaps/ajp10304/readme.md +++ /dev/null @@ -1,126 +0,0 @@ -# AJP10304 Custom Quark Layout -# Also available for the Planck, JJ40 and Atreus50 - -**Note:** In the tables below where there are two characters on a key, -the second is the output when shift is applied. - -**Note:** The below tables assume a UK layout. - -#### Flashing -Refer to the README.md of the keyboard you want to flash. - -##### Main Qwerty Layer - -* Tab: when held, operates as shift. -* Enter: when held, operates as shift. -* MENU: perform right-click - -| | | | | | | | | | | | | -| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| -| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | -| Tab | A | S | D | F | G | H | J | K | L | ;: | Enter| -| Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Raise | Shift| MENU | Ctrl | Fn2 | - -##### Main Colemak-DHm Layer - -| | | | | | | | | | | | | -| ---- |:----:| :---:|:---:|:-----:|:----:|:-----:|:-----:|:-----:|:----:|:----:| ----:| -| Esc | Q | W | F | P | B | J | L | U | Y | ;: | Bksp | -| Tab | A | R | S | T | G | M | N | E | I | O | Enter| -| Shft | Z | X | C | D | V | K | H | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI | Lower | Bksp | Space | Raise | Shift | MENU | Ctrl | Fn2 | - -##### Function Layer -Activated when `fn` held in the above `qwerty` layer. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | -| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT| -| Shift | \| | `¬ | #~ | * | -_ | =+ | \| | [{ | ]} | '@ |Shift | -| Fn | Ctrl | Alt | GUI |Lower | Bksp |Space |Mouse | MENU | Alt | Ctrl | Fn2 | - -##### Lower Layer -Activated when `Lower` is held in the above `qwerty` layer. - -* Numbers are along the top row, their shifted counterparts are on row 2. -* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. -* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp | -| ! | " | £ | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks| -| Shift | \| | `¬ | #~ | '@ | -_ | =+ | #~ | [{ | ]} | '@ |Shift | -| | | | |Lower | Del |Space | | Next | Vol- | Vol+ | Play | - -##### Raise Layer -Activated when `Raise` is held in the above `qwerty` layer. - -* Preferred layer for typing brackets. -* Allows for cursor navigation to be used solely with the right hand. -* WRDSEL: Select the word where the cursor is. -* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| -| ` | |WRDSEL| [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC| -| ` | | | ( | ) | | | HOME | UP | END | |ZOOM +| -| | | | { | } | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| -| Mouse | | | | | Alt | Enter |Raise | | | | | - -##### Lower + Raise -Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. - -* Audio controls in the same position as cursor keys from the `Raise` layer. -* ????: Runs a macro for outputting a text string. Do not use this store passwords. -* Reset: Enter bootloader for flashing firmware to the keyboard. -* CAPS: Toggle caps lock. -* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. -To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. -* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, -MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. - -| | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:| -| ???? | Reset|Qwerty| | | REC1 | REC2 | | | | | Del | -| CAPS | | | | | PLAY1|PLAY2 | Mute | Vol+ | Play | | Qwerty | -| MAC | | | | | STOP1|STOP2 | Prev | Vol- | Next | | Colemak | -| | | | | | | | | DYN | | | | - -##### Function 2 Layer -Activated when `fn` held in the above `qwerty` layer. -* WRDSEL: Select the word where the cursor is. -* LNDEL: Delete the line where the cursor is. -* LNSEL: Select the line where the cursor is. -* DUP: Duplicate the selected text. -* LNJOIN: Join the line where the cursor is with the following line. -* MODE: Print either `PC` or `OSX` depending on what layer mode is active. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | |WRDSEL| | | | LNDEL| | | | | | -| | | LNSEL| DUP | | | | |LNJOIN| | | | -| | UNDO | CUT | COPY | PASTE| | | | | | | MODE | -| | | | | | | | | | | | | - -##### Mouse Layer -Activated when `fn` and `raise` held together. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | -| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | | -| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | | -| | | | | | | | | | | | | - -##### Number Pad Layout -Activated when holding `Esc` key. - -| | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | | | | | |NMLOCK| 7 | 8 | 9 | / | | -| | | | | | | | 4 | 5 | 6 | * | | -| | | | | | | | 1 | 2 | 3 | + | | -| | | | | | | | 0 | . | , | - | | diff --git a/keyboards/checkerboards/quark/keymaps/ajp10304/rules.mk b/keyboards/checkerboards/quark/keymaps/ajp10304/rules.mk deleted file mode 100644 index 6c605daecf53..000000000000 --- a/keyboards/checkerboards/quark/keymaps/ajp10304/rules.mk +++ /dev/null @@ -1 +0,0 @@ -MOUSEKEY_ENABLE = yes diff --git a/keyboards/chord/zero/keymaps/default/keymap.c b/keyboards/chord/zero/keymaps/default/keymap.c index a1edbe0cfff4..1134f264bc6f 100644 --- a/keyboards/chord/zero/keymaps/default/keymap.c +++ b/keyboards/chord/zero/keymaps/default/keymap.c @@ -2,7 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H -#include "keymap_steno.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( diff --git a/keyboards/chosfox/cf81/cf81.c b/keyboards/chosfox/cf81/cf81.c index ab8afd0c636b..ad7ec9bc553e 100644 --- a/keyboards/chosfox/cf81/cf81.c +++ b/keyboards/chosfox/cf81/cf81.c @@ -18,8 +18,8 @@ // clang-format off #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to SNLED27351 manual for these locations * driver * | R location * | | G location diff --git a/keyboards/chosfox/cf81/config.h b/keyboards/chosfox/cf81/config.h index b1ea8bba2003..ae0d87d935bb 100644 --- a/keyboards/chosfox/cf81/config.h +++ b/keyboards/chosfox/cf81/config.h @@ -16,9 +16,6 @@ #pragma once -/* Use 4 dynamic keymap layers */ -#define DYNAMIC_KEYMAP_LAYER_COUNT 4 - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -32,12 +29,10 @@ #define SPI_MOSI_PAL_MODE 5 #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 -#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) /* I2C Config for LED Driver */ -#define DRIVER_COUNT 2 -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND +#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO #define I2C1_OPMODE OPMODE_I2C #define I2C1_CLOCK_SPEED 400000 /* 400000 */ diff --git a/keyboards/chosfox/cf81/info.json b/keyboards/chosfox/cf81/info.json index 827347f41e3b..5dff61007154 100644 --- a/keyboards/chosfox/cf81/info.json +++ b/keyboards/chosfox/cf81/info.json @@ -10,7 +10,11 @@ "suspend_wakeup_delay": 400 }, "eeprom": { - "driver": "wear_leveling" + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 8192 + } }, "processor": "WB32FQ95", "bootloader": "wb32-dfu", @@ -35,7 +39,7 @@ ] }, "rgb_matrix": { - "driver": "is31fl3733", + "driver": "snled27351", "animations": { "breathing": true, "cycle_all": true, diff --git a/keyboards/chosfox/cf81/rules.mk b/keyboards/chosfox/cf81/rules.mk index 002458405eed..6e7633bfe015 100644 --- a/keyboards/chosfox/cf81/rules.mk +++ b/keyboards/chosfox/cf81/rules.mk @@ -1 +1 @@ -WEAR_LEVELING_DRIVER = spi_flash +# This file intentionally left blank diff --git a/keyboards/chromatonemini/chromatonemini.c b/keyboards/chromatonemini/chromatonemini.c index d7dc33a0e0da..200ed31d365e 100644 --- a/keyboards/chromatonemini/chromatonemini.c +++ b/keyboards/chromatonemini/chromatonemini.c @@ -19,66 +19,6 @@ #ifdef RGB_MATRIX_ENABLE # define NO_LED 255 -led_config_t g_led_config = { - { -#if 0 - // register bottom two rows - { 0, 4, 3, 2, 1, 41, 5, NO_LED }, - { 40, 6, 39, 7, 38, 8, 37, NO_LED }, - { 9, 36, 10, 35, 11, 34, 12, NO_LED }, - { 33, 13, 32, 14, 31, 15, 30, NO_LED }, - { 16, 29, 17, 28, 18, 27, 19, NO_LED }, - { 26, 20, 25, 21, 24, 22, 23, NO_LED } - - // register middle two rows - { 0, 4, 3, 2, 1, 78, 42, NO_LED }, - { 77, 43, 76, 44, 75, 45, 74, NO_LED }, - { 46, 73, 47, 72, 48, 71, 49, NO_LED }, - { 70, 50, 69, 51, 68, 52, 67, NO_LED }, - { 53, 66, 54, 65, 55, 64, 56, NO_LED }, - { 63, 57, 62, 58, 61, 59, 60, NO_LED } - - // register top and bottom rows - { 0, 4, 3, 2, 1, 115, 5, NO_LED }, - { 114, 6, 113, 7, 112, 8, 111, NO_LED }, - { 9, 110, 10, 109, 11, 108, 12, NO_LED }, - { 107, 13, 106, 14, 105, 15, 104, NO_LED }, - { 16, 103, 17, 102, 18, 101, 19, NO_LED }, - { 100, 20, 99, 21, 98, 22, 97, NO_LED } -#else - // register top two rows - { 0, 4, 3, 2, 1, 115, 79, NO_LED }, - { 114, 80, 113, 81, 112, 82, 111, NO_LED }, - { 83, 110, 84, 109, 85, 108, 86, NO_LED }, - { 107, 87, 106, 88, 105, 89, 104, NO_LED }, - { 90, 103, 91, 102, 92, 101, 93, NO_LED }, - { 100, 94, 99, 95, 98, 96, 97, NO_LED } -#endif - }, { - { 14, 12 }, - { 14, 36 }, - { 19, 48 }, { 9, 48 }, - { 14, 60 }, - { 39, 60 }, { 49, 60 }, { 59, 60 }, { 69, 60 }, { 79, 60 }, { 89, 60 }, { 99, 60 }, { 109, 60 }, { 119, 60 }, { 129, 60 }, { 139, 60 }, { 149, 60 }, { 159, 60 }, { 169, 60 }, { 179, 60 }, { 189, 60 }, { 199, 60 }, { 209, 60 }, - { 214, 48 }, { 204, 48 }, { 194, 48 }, { 184, 48 }, { 174, 48 }, { 164, 48 }, { 154, 48 }, { 144, 48 }, { 134, 48 }, { 124, 48 }, { 114, 48 }, { 104, 48 }, { 94, 48 }, { 84, 48 }, { 74, 48 }, { 64, 48 }, { 54, 48 }, { 44, 48 }, { 34, 48 }, - { 39, 36 }, { 49, 36 }, { 59, 36 }, { 69, 36 }, { 79, 36 }, { 89, 36 }, { 99, 36 }, { 109, 36 }, { 119, 36 }, { 129, 36 }, { 139, 36 }, { 149, 36 }, { 159, 36 }, { 169, 36 }, { 179, 36 }, { 189, 36 }, { 199, 36 }, { 209, 36 }, - { 214, 24 }, { 204, 24 }, { 194, 24 }, { 184, 24 }, { 174, 24 }, { 164, 24 }, { 154, 24 }, { 144, 24 }, { 134, 24 }, { 124, 24 }, { 114, 24 }, { 104, 24 }, { 94, 24 }, { 84, 24 }, { 74, 24 }, { 64, 24 }, { 54, 24 }, { 44, 24 }, { 34, 24 }, - { 39, 12 }, { 49, 12 }, { 59, 12 }, { 69, 12 }, { 79, 12 }, { 89, 12 }, { 99, 12 }, { 109, 12 }, { 119, 12 }, { 129, 12 }, { 139, 12 }, { 149, 12 }, { 159, 12 }, { 169, 12 }, { 179, 12 }, { 189, 12 }, { 199, 12 }, { 209, 12 }, - { 214, 0 }, { 204, 0 }, { 194, 0 }, { 184, 0 }, { 174, 0 }, { 164, 0 }, { 154, 0 }, { 144, 0 }, { 134, 0 }, { 124, 0 }, { 114, 0 }, { 104, 0 }, { 94, 0 }, { 84, 0 }, { 74, 0 }, { 64, 0} , { 54, 0 }, { 44, 0 }, { 34, 0 } - }, { - 1, - 4, - 4, 4, - 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 - } -}; - // indicator const uint8_t led_scale_indicator[12][12] = { {23, 29, 35, 41, 60, 66, 72, 78, 97, 103, 109, 115}, // C diff --git a/keyboards/chromatonemini/config.h b/keyboards/chromatonemini/config.h index b5d715551603..6643e610c03f 100644 --- a/keyboards/chromatonemini/config.h +++ b/keyboards/chromatonemini/config.h @@ -21,16 +21,12 @@ along with this program. If not, see . /* ws2812 RGB MATRIX */ # define RGB_MATRIX_LED_COUNT 116 - // reacts to keypresses # define RGB_MATRIX_KEYPRESSES // for all fingers used at once. # define LED_HITS_TO_REMEMBER 10 -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 -# define RGB_MATRIX_DEFAULT_SPD 127 -# define RGB_MATRIX_CENTER { 124, 32 } // the above brighness setting has no effect on rgb_matrix_set_color(). // Use darker colors instead. /* RGB darker COLORS */ @@ -56,51 +52,6 @@ along with this program. If not, see . // https://docs.qmk.fm/#/feature_rgb_matrix // Enable suspend mode. # define RGB_DISABLE_WHEN_USB_SUSPENDED - -# ifdef CONSOLE_ENABLE -# define ENABLE_RGB_MATRIX_SOLID_COLOR -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# else -# 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_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 // CONSOLE_ENABLE #endif // RGB_MATRIX_ENABLE /* Audio */ diff --git a/keyboards/chromatonemini/info.json b/keyboards/chromatonemini/info.json index 3dd10d7381ca..fb4f0c737fa0 100644 --- a/keyboards/chromatonemini/info.json +++ b/keyboards/chromatonemini/info.json @@ -3,8 +3,10 @@ "manufacturer": "3araht", "url": "https://github.com/3araht/chromatonemini", "maintainer": "3araht", - "bootloader": "caterina", - "processor": "atmega32u4", + "development_board": "promicro", + "build": { + "lto": true + }, "features": { "midi": true, "extrakey": true, @@ -13,15 +15,179 @@ "bootmagic": false, "console": false, "mousekey": false, - "nkro": false, - "rgblight": false, - "audio": false + "nkro": false }, "ws2812": { "pin": "D3" }, "rgb_matrix": { - "driver": "ws2812" + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 14, "y": 12, "flags": 1}, + {"matrix": [0, 4], "x": 14, "y": 36, "flags": 4}, + {"matrix": [0, 3], "x": 19, "y": 48, "flags": 4}, + {"matrix": [0, 2], "x": 9, "y": 48, "flags": 4}, + {"matrix": [0, 1], "x": 14, "y": 60, "flags": 4}, + {"x": 39, "y": 60, "flags": 4}, + {"x": 49, "y": 60, "flags": 4}, + {"x": 59, "y": 60, "flags": 4}, + {"x": 69, "y": 60, "flags": 4}, + {"x": 79, "y": 60, "flags": 4}, + {"x": 89, "y": 60, "flags": 4}, + {"x": 99, "y": 60, "flags": 4}, + {"x": 109, "y": 60, "flags": 4}, + {"x": 119, "y": 60, "flags": 4}, + {"x": 129, "y": 60, "flags": 4}, + {"x": 139, "y": 60, "flags": 4}, + {"x": 149, "y": 60, "flags": 4}, + {"x": 159, "y": 60, "flags": 4}, + {"x": 169, "y": 60, "flags": 4}, + {"x": 179, "y": 60, "flags": 4}, + {"x": 189, "y": 60, "flags": 4}, + {"x": 199, "y": 60, "flags": 4}, + {"x": 209, "y": 60, "flags": 4}, + {"x": 214, "y": 48, "flags": 4}, + {"x": 204, "y": 48, "flags": 4}, + {"x": 194, "y": 48, "flags": 4}, + {"x": 184, "y": 48, "flags": 4}, + {"x": 174, "y": 48, "flags": 4}, + {"x": 164, "y": 48, "flags": 4}, + {"x": 154, "y": 48, "flags": 4}, + {"x": 144, "y": 48, "flags": 4}, + {"x": 134, "y": 48, "flags": 4}, + {"x": 124, "y": 48, "flags": 4}, + {"x": 114, "y": 48, "flags": 4}, + {"x": 104, "y": 48, "flags": 4}, + {"x": 94, "y": 48, "flags": 4}, + {"x": 84, "y": 48, "flags": 4}, + {"x": 74, "y": 48, "flags": 4}, + {"x": 64, "y": 48, "flags": 4}, + {"x": 54, "y": 48, "flags": 4}, + {"x": 44, "y": 48, "flags": 4}, + {"x": 34, "y": 48, "flags": 4}, + {"x": 39, "y": 36, "flags": 4}, + {"x": 49, "y": 36, "flags": 4}, + {"x": 59, "y": 36, "flags": 4}, + {"x": 69, "y": 36, "flags": 4}, + {"x": 79, "y": 36, "flags": 4}, + {"x": 89, "y": 36, "flags": 4}, + {"x": 99, "y": 36, "flags": 4}, + {"x": 109, "y": 36, "flags": 4}, + {"x": 119, "y": 36, "flags": 4}, + {"x": 129, "y": 36, "flags": 4}, + {"x": 139, "y": 36, "flags": 4}, + {"x": 149, "y": 36, "flags": 4}, + {"x": 159, "y": 36, "flags": 4}, + {"x": 169, "y": 36, "flags": 4}, + {"x": 179, "y": 36, "flags": 4}, + {"x": 189, "y": 36, "flags": 4}, + {"x": 199, "y": 36, "flags": 4}, + {"x": 209, "y": 36, "flags": 4}, + {"x": 214, "y": 24, "flags": 4}, + {"x": 204, "y": 24, "flags": 4}, + {"x": 194, "y": 24, "flags": 4}, + {"x": 184, "y": 24, "flags": 4}, + {"x": 174, "y": 24, "flags": 4}, + {"x": 164, "y": 24, "flags": 4}, + {"x": 154, "y": 24, "flags": 4}, + {"x": 144, "y": 24, "flags": 4}, + {"x": 134, "y": 24, "flags": 4}, + {"x": 124, "y": 24, "flags": 4}, + {"x": 114, "y": 24, "flags": 4}, + {"x": 104, "y": 24, "flags": 4}, + {"x": 94, "y": 24, "flags": 4}, + {"x": 84, "y": 24, "flags": 4}, + {"x": 74, "y": 24, "flags": 4}, + {"x": 64, "y": 24, "flags": 4}, + {"x": 54, "y": 24, "flags": 4}, + {"x": 44, "y": 24, "flags": 4}, + {"x": 34, "y": 24, "flags": 4}, + {"matrix": [0, 6], "x": 39, "y": 12, "flags": 4}, + {"matrix": [1, 1], "x": 49, "y": 12, "flags": 4}, + {"matrix": [1, 3], "x": 59, "y": 12, "flags": 4}, + {"matrix": [1, 5], "x": 69, "y": 12, "flags": 4}, + {"matrix": [2, 0], "x": 79, "y": 12, "flags": 4}, + {"matrix": [2, 2], "x": 89, "y": 12, "flags": 4}, + {"matrix": [2, 4], "x": 99, "y": 12, "flags": 4}, + {"matrix": [2, 6], "x": 109, "y": 12, "flags": 4}, + {"matrix": [3, 1], "x": 119, "y": 12, "flags": 4}, + {"matrix": [3, 3], "x": 129, "y": 12, "flags": 4}, + {"matrix": [3, 5], "x": 139, "y": 12, "flags": 4}, + {"matrix": [4, 0], "x": 149, "y": 12, "flags": 4}, + {"matrix": [4, 2], "x": 159, "y": 12, "flags": 4}, + {"matrix": [4, 4], "x": 169, "y": 12, "flags": 4}, + {"matrix": [4, 6], "x": 179, "y": 12, "flags": 4}, + {"matrix": [5, 1], "x": 189, "y": 12, "flags": 4}, + {"matrix": [5, 3], "x": 199, "y": 12, "flags": 4}, + {"matrix": [5, 5], "x": 209, "y": 12, "flags": 4}, + {"matrix": [5, 6], "x": 214, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 204, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 194, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 184, "y": 0, "flags": 4}, + {"matrix": [4, 5], "x": 174, "y": 0, "flags": 4}, + {"matrix": [4, 3], "x": 164, "y": 0, "flags": 4}, + {"matrix": [4, 1], "x": 154, "y": 0, "flags": 4}, + {"matrix": [3, 6], "x": 144, "y": 0, "flags": 4}, + {"matrix": [3, 4], "x": 134, "y": 0, "flags": 4}, + {"matrix": [3, 2], "x": 124, "y": 0, "flags": 4}, + {"matrix": [3, 0], "x": 114, "y": 0, "flags": 4}, + {"matrix": [2, 5], "x": 104, "y": 0, "flags": 4}, + {"matrix": [2, 3], "x": 94, "y": 0, "flags": 4}, + {"matrix": [2, 1], "x": 84, "y": 0, "flags": 4}, + {"matrix": [1, 6], "x": 74, "y": 0, "flags": 4}, + {"matrix": [1, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [1, 2], "x": 54, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 44, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 34, "y": 0, "flags": 4} + ], + "max_brightness": 50, + "sat_steps": 8, + "speed_steps": 10, + "val_steps": 8, + "center_point": [124, 32], + "animations": { + "solid_color": true, + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "dual_beacon": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + } }, "diode_direction": "COL2ROW", "matrix_pins": { @@ -33,7 +199,7 @@ "pid": "0xF4B4", "device_version": "0.0.1" }, - "layouts": { + "layouts": { "LAYOUT": { "layout": [ {"matrix": [0, 0], "x": 0.5, "y": 0}, diff --git a/keyboards/chromatonemini/rules.mk b/keyboards/chromatonemini/rules.mk index 4da205a168c7..e69de29bb2d1 100644 --- a/keyboards/chromatonemini/rules.mk +++ b/keyboards/chromatonemini/rules.mk @@ -1 +0,0 @@ -LTO_ENABLE = yes diff --git a/keyboards/cipulot/ec_23u/rules.mk b/keyboards/cipulot/ec_23u/rules.mk index ed348e861860..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_23u/rules.mk +++ b/keyboards/cipulot/ec_23u/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/ec_60/rules.mk b/keyboards/cipulot/ec_60/rules.mk index ed348e861860..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_60/rules.mk +++ b/keyboards/cipulot/ec_60/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/ec_alveus/1_0_0/rules.mk b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk index b8929fa590d7..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_alveus/1_0_0/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk index b8929fa590d7..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk +++ b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/ec_pro2/rules.mk b/keyboards/cipulot/ec_pro2/rules.mk index b27b0f7ac071..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_pro2/rules.mk +++ b/keyboards/cipulot/ec_pro2/rules.mk @@ -1,2 +1,4 @@ CUSTOM_MATRIX = lite -SRC += analog.c matrix.c ec_switch_matrix.c +SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/ec_prox/ansi_iso/rules.mk b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk index ed348e861860..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_prox/ansi_iso/rules.mk +++ b/keyboards/cipulot/ec_prox/ansi_iso/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/ec_prox/jis/rules.mk b/keyboards/cipulot/ec_prox/jis/rules.mk index ed348e861860..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_prox/jis/rules.mk +++ b/keyboards/cipulot/ec_prox/jis/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/ec_theca/rules.mk b/keyboards/cipulot/ec_theca/rules.mk index b8929fa590d7..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/ec_theca/rules.mk +++ b/keyboards/cipulot/ec_theca/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/cipulot/rf_r1_8_9xu/rules.mk b/keyboards/cipulot/rf_r1_8_9xu/rules.mk index ed348e861860..fc2dcf32ab1f 100644 --- a/keyboards/cipulot/rf_r1_8_9xu/rules.mk +++ b/keyboards/cipulot/rf_r1_8_9xu/rules.mk @@ -1,3 +1,4 @@ CUSTOM_MATRIX = lite -QUANTUM_LIB_SRC += analog.c SRC += matrix.c ec_switch_matrix.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/citrus/erdnuss65/info.json b/keyboards/citrus/erdnuss65/info.json index 44d597ffb425..4faaa0543108 100644 --- a/keyboards/citrus/erdnuss65/info.json +++ b/keyboards/citrus/erdnuss65/info.json @@ -1,43 +1,39 @@ { - "keyboard_name": "Erdnuss65", "manufacturer": "Citrus Lab", - "processor": "STM32F103", - "bootloader": "stm32duino", + "keyboard_name": "Erdnuss65", "maintainer": "ctt", - "usb": { - "vid": "0x636C", - "pid": "0x6374", - "device_version": "0.0.1" - }, - "matrix_pins": { - "rows": ["B10", "B1", "B0", "A7", "A6"], - "cols": ["B12", "B14", "B15", "A8", "B13", "B3", "B4", "B5", "A1", "A2", "A0", "A3", "A4", "A5", "B11"] - }, + "bootloader": "stm32duino", "diode_direction": "COL2ROW", "features": { "bootmagic": true, - "mousekey": true, "extrakey": true, - "console": false, - "command": false, + "mousekey": true, "nkro": true, - "backlight": false, - "rgblight": true, - "audio": false + "rgblight": true }, - "ws2812": { - "pin": "A15" + "matrix_pins": { + "cols": ["B12", "B14", "B15", "B5", "B13", "B3", "B4", "B6", "A0", "A1", "A2", "A3", "A4", "A5", "B11"], + "rows": ["B10", "B1", "B0", "A7", "A6"] }, + "processor": "STM32F103", "rgblight": { "led_count": 1 }, + "usb": { + "device_version": "1.0.0", + "pid": "0x6374", + "vid": "0x636C" + }, + "ws2812": { + "pin": "A15" + }, "layouts": { "LAYOUT": { "layout": [ {"label": "ESC K00 (B10,B12)", "matrix": [0, 0], "x": 0, "y": 0}, {"label": "1 K01 (B10,B14)", "matrix": [0, 1], "x": 1, "y": 0}, {"label": "2 K02 (B10,B15)", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "3 K03 (B10,A8)", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "3 K03 (B10,B5)", "matrix": [0, 3], "x": 3, "y": 0}, {"label": "4 K04 (B10,B13)", "matrix": [0, 4], "x": 4, "y": 0}, {"label": "5 K05 (B10,B3)", "matrix": [0, 5], "x": 5, "y": 0}, {"label": "6 K06 (B10,B4)", "matrix": [0, 6], "x": 6, "y": 0}, @@ -52,7 +48,7 @@ {"label": "TAB (B1,B12)", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, {"label": "Q (B1,B14)", "matrix": [1, 1], "x": 1.5, "y": 1}, {"label": "W (B1,B15)", "matrix": [1, 2], "x": 2.5, "y": 1}, - {"label": "E (B1,A8)", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "E (B1,B5)", "matrix": [1, 3], "x": 3.5, "y": 1}, {"label": "R (B1,B13)", "matrix": [1, 4], "x": 4.5, "y": 1}, {"label": "T (B1,B3)", "matrix": [1, 5], "x": 5.5, "y": 1}, {"label": "Y (B1,B4)", "matrix": [1, 6], "x": 6.5, "y": 1}, @@ -64,10 +60,10 @@ {"label": "] (B1,A4)", "matrix": [1, 12], "x": 12.5, "y": 1}, {"label": "\" (B1,A5)", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, {"label": "DEL (B1,B11)", "matrix": [1, 14], "x": 15, "y": 1}, - {"label": "CAPSLOCK (B0,B12)", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.25}, + {"label": "CAPSLOCK (B0,B12)", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, {"label": "A (B0,B14)", "matrix": [2, 1], "x": 1.75, "y": 2}, {"label": "S (B0,B15)", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "D (B0,A8)", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "D (B0,B5)", "matrix": [2, 3], "x": 3.75, "y": 2}, {"label": "F (B0,B13)", "matrix": [2, 4], "x": 4.75, "y": 2}, {"label": "G (B0,B3)", "matrix": [2, 5], "x": 5.75, "y": 2}, {"label": "H (B0,B4)", "matrix": [2, 6], "x": 6.75, "y": 2}, @@ -81,7 +77,7 @@ {"label": "LSHIFT (A7,B12)", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, {"label": "Z (A7,B14)", "matrix": [3, 1], "x": 2.25, "y": 3}, {"label": "X (A7,B15)", "matrix": [3, 2], "x": 3.25, "y": 3}, - {"label": "C (A7,A8)", "matrix": [3, 3], "x": 4.25, "y": 3}, + {"label": "C (A7,B5)", "matrix": [3, 3], "x": 4.25, "y": 3}, {"label": "V (A7,B13)", "matrix": [3, 4], "x": 5.25, "y": 3}, {"label": "B (A7,B3)", "matrix": [3, 5], "x": 6.25, "y": 3}, {"label": "N (A7,B4)", "matrix": [3, 6], "x": 7.25, "y": 3}, @@ -95,12 +91,12 @@ {"label": "LCTRL (A6,B12)", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, {"label": "WIN (A6,B14)", "matrix": [4, 1], "x": 1.5, "y": 4}, {"label": "ALT (A6,B15)", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "SPACE (A6,A8)", "matrix": [4, 3], "x": 4, "y": 4, "w": 7}, + {"label": "SPACE (A6,B5)", "matrix": [4, 3], "x": 4, "y": 4, "w": 7}, {"label": "FN (A6,A0)", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5}, {"label": "LEFT (A6,A4)", "matrix": [4, 12], "x": 13, "y": 4}, {"label": "DOWN (A6,A5)", "matrix": [4, 13], "x": 14, "y": 4}, {"label": "RIGHT (A6,B11)", "matrix": [4, 14], "x": 15, "y": 4} - ] + ] } } } diff --git a/keyboards/citrus/erdnuss65/keymaps/default/keymap.c b/keyboards/citrus/erdnuss65/keymaps/default/keymap.c index 0daef5af6461..fdc36ae65e57 100644 --- a/keyboards/citrus/erdnuss65/keymaps/default/keymap.c +++ b/keyboards/citrus/erdnuss65/keymaps/default/keymap.c @@ -5,19 +5,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPRV, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, RESET, KC_MNXT, + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPRV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, QK_BOOT, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MYCM, KC_VOLU, KC_END, - _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_MPLY + _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY ) }; - diff --git a/keyboards/citrus/erdnuss65/keymaps/via/keymap.c b/keyboards/citrus/erdnuss65/keymaps/via/keymap.c index 0f1bf9525e66..3014b72cfe81 100644 --- a/keyboards/citrus/erdnuss65/keymaps/via/keymap.c +++ b/keyboards/citrus/erdnuss65/keymaps/via/keymap.c @@ -5,19 +5,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPRV, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, RESET, KC_MNXT, + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_MPRV, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, QK_BOOT, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, KC_HOME, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MYCM, KC_VOLU, KC_END, - _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_MPLY + _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY ), [2] = LAYOUT( @@ -34,6 +34,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - + ) }; diff --git a/keyboards/clickety_split/leeloo/info.json b/keyboards/clickety_split/leeloo/info.json index a2510f9f7f25..c83fedeb2803 100644 --- a/keyboards/clickety_split/leeloo/info.json +++ b/keyboards/clickety_split/leeloo/info.json @@ -1,24 +1,31 @@ { - "keyboard_name": "Leeloo", "manufacturer": "Clickety Split Ltd", "url": "https://clicketysplit.ca/pages/leeloo", "maintainer": "ClicketySplit", "usb": { "vid": "0x4013", - "pid": "0x2022", - "device_version": "0.1.3" + "pid": "0x2022" }, + "diode_direction": "COL2ROW", "matrix_pins": { - "cols": ["F6", "F7", "B1", "B3", "B2", "B6"], - "rows": ["C6", "D7", "E6", "B4", "B5"] + "cols": ["F6", "F7", "B1", "B3", "B2", "B6"], + "rows": ["C6", "D7", "E6", "B4", "B5"] + }, + "build": { + "lto": true + }, + "features": { + "extrakey": true, + "oled": true }, - "diode_direction": "COL2ROW", "encoder": { + "enabled": true, "rotary": [ {"pin_a": "F5", "pin_b": "F4"} ] }, "split": { + "enabled": true, "soft_serial_pin": "D2", "encoder": { "right": { @@ -28,81 +35,77 @@ } } }, - "tapping": { - "term": 100 - }, - "processor": "atmega32u4", - "bootloader": "caterina", + "development_board": "promicro", "layouts": { "LAYOUT": { "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0.5}, - {"matrix": [0, 1], "x": 1, "y": 0.4}, - {"matrix": [0, 2], "x": 2, "y": 0.2}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0.2}, - {"matrix": [0, 5], "x": 5, "y": 0.4}, + {"label":"Esc", "matrix": [0, 0], "x": 0.0, "y":0.5}, + {"label":"1", "matrix": [0, 1], "x": 1.0, "y":0.4}, + {"label":"2", "matrix": [0, 2], "x": 2.0, "y":0.2}, + {"label":"3", "matrix": [0, 3], "x": 3.0, "y":0.0}, + {"label":"4", "matrix": [0, 4], "x": 4.0, "y":0.2}, + {"label":"5", "matrix": [0, 5], "x": 5.0, "y":0.4}, - {"matrix": [5, 5], "x": 9, "y": 0.4}, - {"matrix": [5, 4], "x": 10, "y": 0.2}, - {"matrix": [5, 3], "x": 11, "y": 0}, - {"matrix": [5, 2], "x": 12, "y": 0.2}, - {"matrix": [5, 1], "x": 13, "y": 0.4}, - {"matrix": [5, 0], "x": 14, "y": 0.5}, + {"label":"6", "matrix": [5, 5], "x": 9.0, "y":0.4}, + {"label":"7", "matrix": [5, 4], "x": 10.0, "y":0.2}, + {"label":"8", "matrix": [5, 3], "x": 11.0, "y":0.0}, + {"label":"9", "matrix": [5, 2], "x": 12.0, "y":0.2}, + {"label":"0", "matrix": [5, 1], "x": 13.0, "y":0.4}, + {"label":"BSL", "matrix": [5, 0], "x": 14.0, "y":0.5}, - {"matrix": [1, 0], "x": 0, "y": 1.5}, - {"matrix": [1, 1], "x": 1, "y": 1.4}, - {"matrix": [1, 2], "x": 2, "y": 1.2}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1.2}, - {"matrix": [1, 5], "x": 5, "y": 1.4}, + {"label":"TAB", "matrix": [1, 0], "x": 0.0, "y":1.5}, + {"label":"Q", "matrix": [1, 1], "x": 1.0, "y":1.4}, + {"label":"W", "matrix": [1, 2], "x": 2.0, "y":1.2}, + {"label":"E", "matrix": [1, 3], "x": 3.0, "y":1.0}, + {"label":"R", "matrix": [1, 4], "x": 4.0, "y":1.2}, + {"label":"T", "matrix": [1, 5], "x": 5.0, "y":1.4}, - {"matrix": [6, 5], "x": 9, "y": 1.4}, - {"matrix": [6, 4], "x": 10, "y": 1.2}, - {"matrix": [6, 3], "x": 11, "y": 1}, - {"matrix": [6, 2], "x": 12, "y": 1.2}, - {"matrix": [6, 1], "x": 13, "y": 1.4}, - {"matrix": [6, 0], "x": 14, "y": 1.5}, + {"label":"Y", "matrix": [6, 5], "x": 9.0, "y":1.4}, + {"label":"U", "matrix": [6, 4], "x": 10.0, "y":1.2}, + {"label":"I", "matrix": [6, 3], "x": 11.0, "y":1.0}, + {"label":"O", "matrix": [6, 2], "x": 12.0, "y":1.2}, + {"label":"P", "matrix": [6, 1], "x": 13.0, "y":1.4}, + {"label":"GRV", "matrix": [6, 0], "x": 14.0, "y":1.5}, - {"matrix": [2, 0], "x": 0, "y": 2.5}, - {"matrix": [2, 1], "x": 1, "y": 2.4}, - {"matrix": [2, 2], "x": 2, "y": 2.2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2.2}, - {"matrix": [2, 5], "x": 5, "y": 2.4}, + {"label":"CAPS", "matrix": [2, 0], "x": 0.0, "y":2.5}, + {"label":"A", "matrix": [2, 1], "x": 1.0, "y":2.4}, + {"label":"S", "matrix": [2, 2], "x": 2.0, "y":2.2}, + {"label":"D", "matrix": [2, 3], "x": 3.0, "y":2.0}, + {"label":"F", "matrix": [2, 4], "x": 4.0, "y":2.2}, + {"label":"G", "matrix": [2, 5], "x": 5.0, "y":2.4}, - {"matrix": [7, 5], "x": 9, "y": 2.4}, - {"matrix": [7, 4], "x": 10, "y": 2.2}, - {"matrix": [7, 3], "x": 11, "y": 2}, - {"matrix": [7, 2], "x": 12, "y": 2.2}, - {"matrix": [7, 1], "x": 13, "y": 2.4}, - {"matrix": [7, 0], "x": 14, "y": 2.5}, + {"label":"H", "matrix": [7, 5], "x": 9.0, "y":2.4}, + {"label":"J", "matrix": [7, 4], "x": 10.0, "y":2.2}, + {"label":"K", "matrix": [7, 3], "x": 11.0, "y":2.0}, + {"label":"L", "matrix": [7, 2], "x": 12.0, "y":2.2}, + {"label":";", "matrix": [7, 1], "x": 13.0, "y":2.4}, + {"label":"'", "matrix": [7, 0], "x": 14.0, "y":2.5}, - {"matrix": [3, 0], "x": 0, "y": 3.5}, - {"matrix": [3, 1], "x": 1, "y": 3.4}, - {"matrix": [3, 2], "x": 2, "y": 3.2}, - {"matrix": [3, 3], "x": 3, "y": 3}, - {"matrix": [3, 4], "x": 4, "y": 3.2}, - {"matrix": [3, 5], "x": 5, "y": 3.4}, - {"matrix": [4, 5], "x": 6.25, "y": 3.4}, + {"label":"SFT", "matrix": [3, 0], "x": 0.0, "y":3.5}, + {"label":"Z", "matrix": [3, 1], "x": 1.0, "y":3.4}, + {"label":"X", "matrix": [3, 2], "x": 2.0, "y":3.2}, + {"label":"C", "matrix": [3, 3], "x": 3.0, "y":3.0}, + {"label":"V", "matrix": [3, 4], "x": 4.0, "y":3.2}, + {"label":"B", "matrix": [3, 5], "x": 5.0, "y":3.4}, + {"label":"GUI", "matrix": [4, 5], "x": 6.25, "y":3.4}, - {"matrix": [9, 5], "x": 7.75, "y": 3.4}, - {"matrix": [8, 5], "x": 9, "y": 3.4}, - {"matrix": [8, 4], "x": 10, "y": 3.2}, - {"matrix": [8, 3], "x": 11, "y": 3}, - {"matrix": [8, 2], "x": 12, "y": 3.2}, - {"matrix": [8, 1], "x": 13, "y": 3.4}, - {"matrix": [8, 0], "x": 14, "y": 3.5}, + {"label":"GUI", "matrix": [9, 5], "x": 7.75, "y":3.4}, + {"label":"N", "matrix": [8, 5], "x": 9.0, "y":3.4}, + {"label":"M", "matrix": [8, 4], "x": 10.0, "y":3.2}, + {"label":",", "matrix": [8, 3], "x": 11.0, "y":3.0}, + {"label":".", "matrix": [8, 2], "x": 12.0, "y":3.2}, + {"label":"/", "matrix": [8, 1], "x": 13.0, "y":3.4}, + {"label":"SFT", "matrix": [8, 0], "x": 14.0, "y":3.5}, - {"matrix": [4, 1], "x": 2.7, "y": 4.6}, - {"matrix": [4, 2], "x": 3.8, "y": 4.5}, - {"matrix": [4, 3], "x": 4.9, "y": 4.55}, - {"matrix": [4, 4], "x": 6.1, "y": 4.65}, + {"label":"ALT", "matrix": [4, 1], "x": 2.7, "y":4.6}, + {"label":"CTL", "matrix": [4, 2], "x": 3.8, "y":4.5}, + {"label":"ENT", "matrix": [4, 3], "x": 4.9, "y":4.55}, + {"label":"MINS", "matrix": [4, 4], "x": 6.1, "y":4.65}, - {"matrix": [9, 4], "x": 7.9, "y": 4.65}, - {"matrix": [9, 3], "x": 9.1, "y": 4.55}, - {"matrix": [9, 2], "x": 10.2, "y": 4.5}, - {"matrix": [9, 1], "x": 11.3, "y": 4.6} + {"label":"EQL", "matrix": [9, 4], "x": 7.9, "y":4.65}, + {"label":"SPC", "matrix": [9, 3], "x": 9.1, "y":4.55}, + {"label":"BSP", "matrix": [9, 2], "x": 10.2, "y":4.5}, + {"label":"DEL", "matrix": [9, 1], "x": 11.3, "y":4.6} ] } } diff --git a/keyboards/clickety_split/leeloo/keymaps/default/config.h b/keyboards/clickety_split/leeloo/keymaps/default/config.h index d0348d06efaf..e41b3d34aaa2 100644 --- a/keyboards/clickety_split/leeloo/keymaps/default/config.h +++ b/keyboards/clickety_split/leeloo/keymaps/default/config.h @@ -1,5 +1,4 @@ -/* Copyright 2022 Clickety Split Ltd. - * https://clicketysplit.ca +/* Copyright 2023 Clickety Split Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,17 +16,30 @@ #pragma once -// Select hand configuration -// #define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#ifdef TAPPING_TERM - #undef TAPPING_TERM - #define QUICK_TAP_TERM 0 - #define TAPPING_TERM 150 -#endif - // If rotary encoders are used, and they require more or less resolution/sensitivity // you may try increasing or decreasing the value. // #define ENCODER_RESOLUTION 2 + + #define RGB_MATRIX_KEYPRESSES // reacts to keypresses +// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) +// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects + #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended + #define RGB_MATRIX_FRAMEBUFFER_EFFECTS + + #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 115 // limits maximum brightness of LEDs to 150 out of 255. + // Higher may cause the controller to crash. + #define RGB_MATRIX_HUE_STEP 10 + #define RGB_MATRIX_SAT_STEP 10 + #define RGB_MATRIX_VAL_STEP 10 + #define RGB_MATRIX_SPD_STEP 10 + + +/* By default, the RGB_MATRIX effects are disabled. + * + * For a complete list, visit: https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects. + * Some of the effects take up a lot of memory, so you may need to manage the number of + * effects that are loaded at any given time. +*/ + #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN + #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS + #define ENABLE_RGB_MATRIX_SPLASH diff --git a/keyboards/clickety_split/leeloo/keymaps/default/keymap.c b/keyboards/clickety_split/leeloo/keymaps/default/keymap.c index bac722a7c30f..6bf982447283 100644 --- a/keyboards/clickety_split/leeloo/keymaps/default/keymap.c +++ b/keyboards/clickety_split/leeloo/keymaps/default/keymap.c @@ -1,5 +1,4 @@ -/* Copyright 2022 Clickety Split Ltd. - * https://clicketysplit.ca +/* Copyright 2023 Clickety Split Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -92,23 +91,34 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------. ,-----------------------------------------. * | | | | | | | | | | | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | | | + * | | | | | | | | | | +VOL | | | | * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | |--------. ,-------| | | | | | | + * | | | | | | |--------. ,-------| | | -VOL | | | | * |------+------+------+------+------+------| | | |------+------+------+------+------+------| - * | | | | | | |--------| |-------| | | | | | | + * | | | | | | |--------| |-------| | MUTE | | | | | * `-----------------------------------------/ / \ \-----------------------------------------' * | LALT | LCTL | ENT | / MINS / \ EQL \ | SPC | BSPC | DEL | * | | | LOWR |/ RAISE / \RAISE \ | LOWR | | | * `-------------------------------' '------''-----------------------' + * + * NOTE: For Leeloo v1 the RGB Keycodes will not have any effect. + * */ [_ADJUST] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, + _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, KC_VOLD, _______, _______, _______, + _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; +/* Tri Layer + * When Lower and Raise are pressed at the same time, and wrapped with LT(), + * Adjust is activated with the following method. + */ +layer_state_t layer_state_set_user(layer_state_t state) { + state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); + return state; +} diff --git a/keyboards/clickety_split/leeloo/leeloo.c b/keyboards/clickety_split/leeloo/leeloo.c index 864f31cbb773..3922556f5ca5 100644 --- a/keyboards/clickety_split/leeloo/leeloo.c +++ b/keyboards/clickety_split/leeloo/leeloo.c @@ -1,5 +1,4 @@ -/* Copyright 2022 Clickety Split Ltd. - * https://clicketysplit.ca +/* Copyright 2023 Clickety Split Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -48,9 +47,24 @@ static void render_mod_status(uint8_t modifiers) { static void render_secondary_oled(void) { // Version Information - oled_write_P(PSTR("Leeloo\n\n"), false); +#if defined(KEYBOARD_clickety_split_leeloo_rev1) + oled_write_P(PSTR("Leeloo v1\n\n"), false); +#elif defined(KEYBOARD_clickety_split_leeloo_rev2) + oled_write_P(PSTR("Leeloo v2\n\n"), false); +#else + oled_write_P(PSTR("Leeloo v2.1\n\n"), false); +#endif + oled_write_P(PSTR("Firmware: "), false); - oled_write_P(PSTR("v1.0"), false); + +#if defined(KEYBOARD_clickety_split_leeloo_rev1) + oled_write_P(PSTR("v1.13"), false); +#elif defined(KEYBOARD_clickety_split_leeloo_rev2) + oled_write_P(PSTR("v2.13"), false); +#else + oled_write_P(PSTR("v2.14"), false); +#endif + oled_write_P(PSTR("\n"), false); oled_write_P(PSTR("Clickety Split Ltd."), false); } @@ -58,7 +72,7 @@ static void render_secondary_oled(void) { static void render_status(void) { // Host Keyboard Layer Status switch (get_highest_layer(default_layer_state)) { - case _BASE: + case 0: oled_write_P(PSTR("QWERTY | "), false); break; } @@ -69,15 +83,15 @@ static void render_status(void) { oled_write_P(PSTR("Base \n"), false); break; - case _LOWER: + case 1: oled_write_P(PSTR("Lower \n"), false); break; - case _RAISE: + case 2: oled_write_P(PSTR("Raise \n"), false); break; - case _ADJUST: + case 3: oled_write_P(PSTR("Adjust \n"), false); break; @@ -128,4 +142,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } return true; } -#endif +#endif // ENCODER_ENABLE diff --git a/keyboards/clickety_split/leeloo/readme.md b/keyboards/clickety_split/leeloo/readme.md index f672294e1446..65f1069cdb91 100644 --- a/keyboards/clickety_split/leeloo/readme.md +++ b/keyboards/clickety_split/leeloo/readme.md @@ -1,16 +1,33 @@ -# Leeloo +# Clickety Split | Leeloo v2.1 -![Leeloo](https://cdn.shopify.com/s/files/1/0599/3460/5491/files/Leeloo-rev1.0-w.jpg?v=1646798726) +![Leeloo v2.1](https://i.imgur.com/swPHS0Bh.jpg) -Leeloo is a 4x6x5m ortholinear split keyboard kit made and sold by Clickety Split Ltd. +Leeloo v2.1 is a small evolution of Leeloo v2.0, which is a 4x6x5m ortholinear split keyboard designed, created, and sold by Clickety Split Ltd. * Keyboard Maintainer: [Clickety Split](https://github.com/ClicketySplit) -* Hardware Supported: Leeloo PCB rev1, Pro Micro, Elite-C -* Hardware Availability: [clicketysplit.ca](https://clicketysplit.ca/pages/leeloo) +* Hardware Supported: Leeloo PCB rev1/rev2/rev3, Pro Micro, Elite-C +* Hardware Availability: [clicketysplit.ca/pages/leeloo](https://clicketysplit.ca/pages/leeloo) + + +## Differences between v2.1 and v2.0 +* Removed 8 RGB LEDs on each side, which served as backlighting. +* Added a solderable jumper to bypass circuitry used for wireless configurations with nice!nanos. +* Simplified socketing of nice!view and OLED Displays. + + +# Leeloo + +![Leeloo](https://i.imgur.com/x1ew17Dh.jpg) + +The original design and release of Leeloo. + +# Sample Build Commands for Leeloo v1, v2, and v2.1 -Make example, after setting up build environment: +Make example for this keyboard (after setting up your build environment): make clickety_split/leeloo/rev1:default + make clickety_split/leeloo/rev2:default + make clickety_split/leeloo/rev3: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). +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). \ No newline at end of file diff --git a/keyboards/clickety_split/leeloo/rev1/info.json b/keyboards/clickety_split/leeloo/rev1/info.json new file mode 100644 index 000000000000..e9396f3f81a4 --- /dev/null +++ b/keyboards/clickety_split/leeloo/rev1/info.json @@ -0,0 +1,6 @@ +{ + "keyboard_name": "Leeloo v1", + "usb": { + "device_version": "0.1.3" + } +} diff --git a/keyboards/clickety_split/leeloo/rev2/config.h b/keyboards/clickety_split/leeloo/rev2/config.h new file mode 100644 index 000000000000..2aa1acd97219 --- /dev/null +++ b/keyboards/clickety_split/leeloo/rev2/config.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Clickety Split Ltd. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 RGB_MATRIX_LED_COUNT 74 +# define RGB_MATRIX_SPLIT {37, 37} +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define SPLIT_TRANSPORT_MIRROR diff --git a/keyboards/clickety_split/leeloo/rev2/info.json b/keyboards/clickety_split/leeloo/rev2/info.json new file mode 100644 index 000000000000..6db77714a433 --- /dev/null +++ b/keyboards/clickety_split/leeloo/rev2/info.json @@ -0,0 +1,104 @@ +{ + "keyboard_name": "Leeloo v2", + "usb": { + "device_version": "0.2.0" + }, + "features": { + "rgb_matrix": true + }, + "split": { + "transport": { + "sync" :{ + "matrix_state": true + } + } + }, + "rgblight": { + "led_count": 74, + "split": true, + "split_count": [37, 37], + "max_brightness": 115 + }, + "ws2812": { + "pin": "D3" + }, + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"flags": 2, "x": 86, "y": 8}, // L LU01 + {"flags": 2, "x": 52, "y": 8}, // L LU02 + {"flags": 2, "x": 17, "y": 8}, // L LU03 + {"flags": 2, "x": 0, "y": 24}, // L LU04 + {"flags": 2, "x": 0, "y": 40}, // L LU05 + {"flags": 2, "x": 17, "y": 56}, // L LU06 + {"flags": 2, "x": 52, "y": 56}, // L LU07 + {"flags": 2, "x": 86, "y": 56}, // L LU08 + {"flags": 4, "matrix": [4, 5], "x": 103, "y": 48}, // L LB09 | SW29 + {"flags": 4, "matrix": [4, 4], "x": 103, "y": 64}, // L LB10 | SW28 + {"flags": 4, "matrix": [4, 3], "x": 86, "y": 64}, // L LB11 | SW27 + {"flags": 4, "matrix": [3, 5], "x": 86, "y": 48}, // L LB12 | SW24 + {"flags": 4, "matrix": [2, 5], "x": 86, "y": 32}, // L LB13 | SW18 + {"flags": 4, "matrix": [1, 5], "x": 86, "y": 15}, // L LB14 | SW12 + {"flags": 4, "matrix": [0, 5], "x": 86, "y": 0}, // L LB15 | SW6 + {"flags": 4, "matrix": [0, 4], "x": 69, "y": 0}, // L LB16 | SW5 + {"flags": 4, "matrix": [1, 4], "x": 69, "y": 16}, // L LB17 | SW11 + {"flags": 4, "matrix": [2, 4], "x": 69, "y": 32}, // L LB18 | SW17 + {"flags": 4, "matrix": [3, 4], "x": 69, "y": 48}, // L LB19 | SW23 + {"flags": 4, "matrix": [4, 2], "x": 69, "y": 64}, // L LB20 | SW26 + {"flags": 4, "matrix": [4, 1], "x": 52, "y": 64}, // L LB21 | SW25 + {"flags": 4, "matrix": [3, 3], "x": 52, "y": 48}, // L LB22 | SW22 + {"flags": 4, "matrix": [2, 3], "x": 52, "y": 32}, // L LB23 | SW16 + {"flags": 4, "matrix": [1, 3], "x": 52, "y": 16}, // L LB24 | SW10 + {"flags": 4, "matrix": [0, 3], "x": 52, "y": 0}, // L LB25 | SW4 + {"flags": 4, "matrix": [0, 2], "x": 34, "y": 0}, // L LB26 | SW3 + {"flags": 4, "matrix": [1, 2], "x": 34, "y": 16}, // L LB27 | SW9 + {"flags": 4, "matrix": [2, 2], "x": 34, "y": 32}, // L LB28 | SW15 + {"flags": 4, "matrix": [3, 2], "x": 34, "y": 48}, // L LB29 | SW21 + {"flags": 4, "matrix": [3, 1], "x": 17, "y": 48}, // L LB30 | SW20 + {"flags": 4, "matrix": [2, 1], "x": 17, "y": 32}, // L LB31 | SW14 + {"flags": 4, "matrix": [1, 1], "x": 17, "y": 16}, // L LB32 | SW8 + {"flags": 4, "matrix": [0, 1], "x": 17, "y": 0}, // L LB33 | SW2 + {"flags": 4, "matrix": [0, 0], "x": 0, "y": 0}, // L LB34 | SW1 + {"flags": 4, "matrix": [1, 0], "x": 0, "y": 16}, // L LB35 | SW7 + {"flags": 4, "matrix": [2, 0], "x": 0, "y": 32}, // L LB36 | SW13 + {"flags": 4, "matrix": [3, 0], "x": 0, "y": 48}, // L LB37 | SW19 + {"flags": 2, "x": 137, "y": 8}, // R LU38 + {"flags": 2, "x": 172, "y": 8}, // R LU39 + {"flags": 2, "x": 206, "y": 8}, // R LU40 + {"flags": 2, "x": 224, "y": 24}, // R LU41 + {"flags": 2, "x": 224, "y": 40}, // R LU42 + {"flags": 2, "x": 206, "y": 56}, // R LU43 + {"flags": 2, "x": 172, "y": 56}, // R LU44 + {"flags": 2, "x": 137, "y": 56}, // R LU45 + {"flags": 4, "matrix": [9, 5], "x": 120, "y": 48}, // R LB46 | SW58 + {"flags": 4, "matrix": [9, 4], "x": 120, "y": 64}, // R LB47 | SW57 + {"flags": 4, "matrix": [9, 3], "x": 137, "y": 64}, // R LB48 | SW56 + {"flags": 4, "matrix": [8, 5], "x": 137, "y": 48}, // R LB49 | SW53 + {"flags": 4, "matrix": [7, 5], "x": 137, "y": 32}, // R LB50 | SW47 + {"flags": 4, "matrix": [6, 5], "x": 137, "y": 15}, // R LB51 | SW41 + {"flags": 4, "matrix": [5, 5], "x": 137, "y": 0}, // R LB52 | SW35 + {"flags": 4, "matrix": [5, 4], "x": 155, "y": 0}, // R LB53 | SW34 + {"flags": 4, "matrix": [6, 4], "x": 155, "y": 16}, // R LB54 | SW40 + {"flags": 4, "matrix": [7, 4], "x": 155, "y": 32}, // R LB55 | SW46 + {"flags": 4, "matrix": [8, 4], "x": 155, "y": 48}, // R LB56 | SW52 + {"flags": 4, "matrix": [9, 2], "x": 155, "y": 64}, // R LB57 | SW55 + {"flags": 4, "matrix": [9, 1], "x": 172, "y": 64}, // R LB58 | SW54 + {"flags": 4, "matrix": [8, 3], "x": 172, "y": 48}, // R LB59 | SW51 + {"flags": 4, "matrix": [7, 3], "x": 172, "y": 32}, // R LB60 | SW45 + {"flags": 4, "matrix": [6, 3], "x": 172, "y": 16}, // R LB61 | SW39 + {"flags": 4, "matrix": [5, 3], "x": 172, "y": 0}, // R LB62 | SW33 + {"flags": 4, "matrix": [5, 2], "x": 189, "y": 0}, // R LB63 | SW32 + {"flags": 4, "matrix": [6, 2], "x": 189, "y": 16}, // R LB64 | SW38 + {"flags": 4, "matrix": [7, 2], "x": 189, "y": 32}, // R LB65 | SW44 + {"flags": 4, "matrix": [8, 2], "x": 189, "y": 48}, // R LB66 | SW50 + {"flags": 4, "matrix": [8, 1], "x": 206, "y": 48}, // R LB67 | SW49 + {"flags": 4, "matrix": [7, 1], "x": 206, "y": 32}, // R LB68 | SW43 + {"flags": 4, "matrix": [6, 1], "x": 206, "y": 16}, // R LB69 | SW37 + {"flags": 4, "matrix": [5, 1], "x": 206, "y": 0}, // R LB70 | SW31 + {"flags": 4, "matrix": [5, 0], "x": 224, "y": 0}, // R LB71 | SW30 + {"flags": 4, "matrix": [6, 0], "x": 224, "y": 16}, // R LB72 | SW36 + {"flags": 4, "matrix": [7, 0], "x": 224, "y": 32}, // R LB73 | SW42 + {"flags": 4, "matrix": [8, 0], "x": 224, "y": 48} // R LB74 | SW48 + ] + } + } diff --git a/keyboards/clickety_split/leeloo/rev2/rules.mk b/keyboards/clickety_split/leeloo/rev2/rules.mk new file mode 100644 index 000000000000..80a6663b9c64 --- /dev/null +++ b/keyboards/clickety_split/leeloo/rev2/rules.mk @@ -0,0 +1 @@ +# Intentionally left blank. diff --git a/keyboards/clickety_split/leeloo/rev3/config.h b/keyboards/clickety_split/leeloo/rev3/config.h new file mode 100644 index 000000000000..ac9315022149 --- /dev/null +++ b/keyboards/clickety_split/leeloo/rev3/config.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Clickety Split Ltd. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 RGB_MATRIX_LED_COUNT 58 +# define RGB_MATRIX_SPLIT {29, 29} +# define RGB_DISABLE_WHEN_USB_SUSPENDED +# define SPLIT_TRANSPORT_MIRROR diff --git a/keyboards/clickety_split/leeloo/rev3/info.json b/keyboards/clickety_split/leeloo/rev3/info.json new file mode 100644 index 000000000000..2c92f5226ef2 --- /dev/null +++ b/keyboards/clickety_split/leeloo/rev3/info.json @@ -0,0 +1,88 @@ +{ + "keyboard_name": "Leeloo v2.1", + "usb": { + "device_version": "0.2.1" + }, + "features": { + "rgb_matrix": true + }, + "split": { + "transport": { + "sync" :{ + "matrix_state": true + } + } + }, + "rgblight": { + "led_count": 58, + "split": true, + "split_count": [29, 29], + "max_brightness": 115 + }, + "ws2812": { + "pin": "D3" + }, + "rgb_matrix": { + "driver": "ws2812", + "layout": [ + {"flags": 4, "matrix": [4, 5], "x": 103, "y": 48}, // L LB01 | SW29 + {"flags": 4, "matrix": [4, 4], "x": 103, "y": 64}, // L LB02 | SW28 + {"flags": 4, "matrix": [4, 3], "x": 86, "y": 64}, // L LB03 | SW27 + {"flags": 4, "matrix": [3, 5], "x": 86, "y": 48}, // L LB04 | SW24 + {"flags": 4, "matrix": [2, 5], "x": 86, "y": 32}, // L LB05 | SW18 + {"flags": 4, "matrix": [1, 5], "x": 86, "y": 15}, // L LB06 | SW12 + {"flags": 4, "matrix": [0, 5], "x": 86, "y": 0}, // L LB07 | SW6 + {"flags": 4, "matrix": [0, 4], "x": 69, "y": 0}, // L LB08 | SW5 + {"flags": 4, "matrix": [1, 4], "x": 69, "y": 16}, // L LB09 | SW11 + {"flags": 4, "matrix": [2, 4], "x": 69, "y": 32}, // L LB10 | SW17 + {"flags": 4, "matrix": [3, 4], "x": 69, "y": 48}, // L LB11 | SW23 + {"flags": 4, "matrix": [4, 2], "x": 69, "y": 64}, // L LB12 | SW26 + {"flags": 4, "matrix": [4, 1], "x": 52, "y": 64}, // L LB13 | SW25 + {"flags": 4, "matrix": [3, 3], "x": 52, "y": 48}, // L LB14 | SW22 + {"flags": 4, "matrix": [2, 3], "x": 52, "y": 32}, // L LB15 | SW16 + {"flags": 4, "matrix": [1, 3], "x": 52, "y": 16}, // L LB16 | SW10 + {"flags": 4, "matrix": [0, 3], "x": 52, "y": 0}, // L LB17 | SW4 + {"flags": 4, "matrix": [0, 2], "x": 34, "y": 0}, // L LB18 | SW3 + {"flags": 4, "matrix": [1, 2], "x": 34, "y": 16}, // L LB19 | SW9 + {"flags": 4, "matrix": [2, 2], "x": 34, "y": 32}, // L LB20 | SW15 + {"flags": 4, "matrix": [3, 2], "x": 34, "y": 48}, // L LB21 | SW21 + {"flags": 4, "matrix": [3, 1], "x": 17, "y": 48}, // L LB22 | SW20 + {"flags": 4, "matrix": [2, 1], "x": 17, "y": 32}, // L LB23 | SW14 + {"flags": 4, "matrix": [1, 1], "x": 17, "y": 16}, // L LB24 | SW8 + {"flags": 4, "matrix": [0, 1], "x": 17, "y": 0}, // L LB25 | SW2 + {"flags": 4, "matrix": [0, 0], "x": 0, "y": 0}, // L LB26 | SW1 + {"flags": 4, "matrix": [1, 0], "x": 0, "y": 16}, // L LB27 | SW7 + {"flags": 4, "matrix": [2, 0], "x": 0, "y": 32}, // L LB28 | SW13 + {"flags": 4, "matrix": [3, 0], "x": 0, "y": 48}, // L LB29 | SW19 + {"flags": 4, "matrix": [9, 5], "x": 120, "y": 48}, // R LB30 | SW58 + {"flags": 4, "matrix": [9, 4], "x": 120, "y": 64}, // R LB31 | SW57 + {"flags": 4, "matrix": [9, 3], "x": 137, "y": 64}, // R LB32 | SW56 + {"flags": 4, "matrix": [8, 5], "x": 137, "y": 48}, // R LB33 | SW53 + {"flags": 4, "matrix": [7, 5], "x": 137, "y": 32}, // R LB34 | SW47 + {"flags": 4, "matrix": [6, 5], "x": 137, "y": 15}, // R LB35 | SW41 + {"flags": 4, "matrix": [5, 5], "x": 137, "y": 0}, // R LB36 | SW35 + {"flags": 4, "matrix": [5, 4], "x": 155, "y": 0}, // R LB37 | SW34 + {"flags": 4, "matrix": [6, 4], "x": 155, "y": 16}, // R LB38 | SW40 + {"flags": 4, "matrix": [7, 4], "x": 155, "y": 32}, // R LB39 | SW46 + {"flags": 4, "matrix": [8, 4], "x": 155, "y": 48}, // R LB40 | SW52 + {"flags": 4, "matrix": [9, 2], "x": 155, "y": 64}, // R LB41 | SW55 + {"flags": 4, "matrix": [9, 1], "x": 172, "y": 64}, // R LB42 | SW54 + {"flags": 4, "matrix": [8, 3], "x": 172, "y": 48}, // R LB43 | SW51 + {"flags": 4, "matrix": [7, 3], "x": 172, "y": 32}, // R LB44 | SW45 + {"flags": 4, "matrix": [6, 3], "x": 172, "y": 16}, // R LB45 | SW39 + {"flags": 4, "matrix": [5, 3], "x": 172, "y": 0}, // R LB46 | SW33 + {"flags": 4, "matrix": [5, 2], "x": 189, "y": 0}, // R LB47 | SW32 + {"flags": 4, "matrix": [6, 2], "x": 189, "y": 16}, // R LB48 | SW38 + {"flags": 4, "matrix": [7, 2], "x": 189, "y": 32}, // R LB49 | SW44 + {"flags": 4, "matrix": [8, 2], "x": 189, "y": 48}, // R LB50 | SW50 + {"flags": 4, "matrix": [8, 1], "x": 206, "y": 48}, // R LB51 | SW49 + {"flags": 4, "matrix": [7, 1], "x": 206, "y": 32}, // R LB52 | SW43 + {"flags": 4, "matrix": [6, 1], "x": 206, "y": 16}, // R LB53 | SW37 + {"flags": 4, "matrix": [5, 1], "x": 206, "y": 0}, // R LB54 | SW31 + {"flags": 4, "matrix": [5, 0], "x": 224, "y": 0}, // R LB55 | SW30 + {"flags": 4, "matrix": [6, 0], "x": 224, "y": 16}, // R LB56 | SW36 + {"flags": 4, "matrix": [7, 0], "x": 224, "y": 32}, // R LB57 | SW42 + {"flags": 4, "matrix": [8, 0], "x": 224, "y": 48} // R LB58 | SW48 + ] + } + } diff --git a/keyboards/clickety_split/leeloo/rev3/rules.mk b/keyboards/clickety_split/leeloo/rev3/rules.mk new file mode 100644 index 000000000000..80a6663b9c64 --- /dev/null +++ b/keyboards/clickety_split/leeloo/rev3/rules.mk @@ -0,0 +1 @@ +# Intentionally left blank. diff --git a/keyboards/clickety_split/leeloo/rules.mk b/keyboards/clickety_split/leeloo/rules.mk index e99b3e15ed4d..9d35960f7cf6 100644 --- a/keyboards/clickety_split/leeloo/rules.mk +++ b/keyboards/clickety_split/leeloo/rules.mk @@ -1,15 +1,2 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -SPLIT_KEYBOARD = yes - -DEFAULT_FOLDER = clickety_split/leeloo/rev1 +# Default Folder +DEFAULT_FOLDER = clickety_split/leeloo/rev3 diff --git a/keyboards/clueboard/2x1800/2021/rules.mk b/keyboards/clueboard/2x1800/2021/rules.mk index e9f44d7bd23e..19c7eb2946bd 100644 --- a/keyboards/clueboard/2x1800/2021/rules.mk +++ b/keyboards/clueboard/2x1800/2021/rules.mk @@ -1 +1,2 @@ -QUANTUM_LIB_SRC += max7219.c spi_master.c +SPI_DRIVER_REQUIRED = yes +QUANTUM_LIB_SRC += max7219.c diff --git a/keyboards/clueboard/66/keymaps/badger/keymap.c b/keyboards/clueboard/66/keymaps/badger/keymap.c deleted file mode 100644 index 4c40e5ec19ef..000000000000 --- a/keyboards/clueboard/66/keymaps/badger/keymap.c +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2020 Dan White - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "badger.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY_LINUX] = LAYOUT_66_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, - MOVE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ADJUST, KC_RGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT), - - [_MOVE_LINUX] = LAYOUT_66_ansi( - KC_ESC, VD_1, VD_2, VD_3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, IJ_UP, IJ_DOWN, KC_DEL, KC_PGUP, - _______, IJ_STEP, IJ_INTO, IJ_OUT, IJ_RUN, IJ_STOP, IJ_OUT, KC_PGUP, KC_HOME, KC_END, KC_PGDN, IJ_BACK, IJ_FWD, KC_INS, KC_PGDN, - _______, WM_LH, WM_UH, WM_RH, WD_FRWD, MAC_POP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, - _______, MM_UH, MM_BH, MAC_CPY, MAC_PST, WD_BACK, KC_MNXT, IJ_REN, IJ_IMPL, IJ_DECL, IJ_USAG, _______, KC_BRIU, - _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BRID, KC_END), - - [_QWERTY_MAC] = LAYOUT_66_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, - MOVE_MAC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ADJUST, KC_RGUI, KC_LALT, KC_LEFT, KC_DOWN, KC_RGHT), - - [_MOVE_MAC] = LAYOUT_66_ansi( - KC_ESC, M_VD1, M_VD2, M_VD3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, IJ_UP, IJ_DOWN, KC_DEL, KC_PGUP, - _______, IJ_STEP, IJ_INTO, IJ_OUT, IJ_RUN, IJ_STOP, IJ_OUT, KC_PGUP, KC_HOME, KC_END, KC_PGDN, IJ_BACK, IJ_FWD, KC_INS, KC_PGDN, - _______, MM_LH, MM_MAX, MM_RH, WD_FRWD, MAC_POP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CM_RIGHT, CM_DOWN, _______, - _______, MM_UH, MM_BH, MAC_CPY, MAC_PST, WD_BACK, KC_MNXT, IJ_REN, IJ_IMPL, IJ_DECL, IJ_USAG, _______, KC_BRIU, - _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BRID, KC_END), - - [_ADJUST] = LAYOUT_66_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, - _______, NK_ON, NK_OFF, EE_CLR, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, AG_SWAP, AG_NORM, KC_INS, KC_VOLD, - _______, GE_SWAP, GE_NORM, DB_TOGG, AG_SWAP, AG_NORM, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, - _______, DF_1, DF_2, KC_CAPS, _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, KC_BRIU, - _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BRID, KC_END) -}; - diff --git a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c index 238147537d77..2a0cf1509f99 100644 --- a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c +++ b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c @@ -172,7 +172,7 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val) uint8_t sat = 255; for (uint8_t i = 0; i < RGBLED_NUM; i++) { - sethsv(oct_hues[base_oct], sat, val, (LED_TYPE *)&led[i]); + sethsv(oct_hues[base_oct], sat, val, (rgb_led_t *)&led[i]); } uint8_t next_oct = base_oct < MAX_OCT ? base_oct + 1 : base_oct; @@ -183,11 +183,11 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val) for (uint8_t i = 0; i < 3; i++) { - sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]); + sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]); } for (uint8_t i = 11; i < 14; i++) { - sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]); + sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]); } rgblight_set(); diff --git a/keyboards/clueboard/66_hotswap/gen1/config.h b/keyboards/clueboard/66_hotswap/gen1/config.h index b50b676713fc..922426e87b39 100644 --- a/keyboards/clueboard/66_hotswap/gen1/config.h +++ b/keyboards/clueboard/66_hotswap/gen1/config.h @@ -33,18 +33,10 @@ //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 0b1110100 AD <-> GND -// 0b1110111 AD <-> VCC -// 0b1110101 AD <-> SCL -// 0b1110110 AD <-> SDA -#define LED_DRIVER_ADDR_1 0b1110100 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define I2C1_SCL_PIN B8 #define I2C1_SDA_PIN B9 -#define LED_DRIVER_COUNT 1 #define LED_MATRIX_LED_COUNT 71 // LED Matrix Animation modes. Explicitly enabled diff --git a/keyboards/clueboard/66_hotswap/gen1/gen1.c b/keyboards/clueboard/66_hotswap/gen1/gen1.c index a935884a0b3e..7af0b964da5e 100644 --- a/keyboards/clueboard/66_hotswap/gen1/gen1.c +++ b/keyboards/clueboard/66_hotswap/gen1/gen1.c @@ -16,7 +16,7 @@ #include "quantum.h" #ifdef LED_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[LED_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | LED address diff --git a/keyboards/clueboard/66_hotswap/gen1/info.json b/keyboards/clueboard/66_hotswap/gen1/info.json index e497594685de..81a23f7d87a4 100644 --- a/keyboards/clueboard/66_hotswap/gen1/info.json +++ b/keyboards/clueboard/66_hotswap/gen1/info.json @@ -28,7 +28,7 @@ "pid": "0x2391", "vid": "0xC1ED" }, - "community_layouts": [], + "community_layouts": ["66_ansi"], "layout_aliases": { "LAYOUT": "LAYOUT_all" }, diff --git a/keyboards/coban/pad9a/config.h b/keyboards/coban/pad9a/config.h new file mode 100644 index 000000000000..7b465d2eef2b --- /dev/null +++ b/keyboards/coban/pad9a/config.h @@ -0,0 +1,20 @@ +/* Copyright 2023 RyanDam (https://github.com/RyanDam) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U diff --git a/keyboards/coban/pad9a/info.json b/keyboards/coban/pad9a/info.json new file mode 100644 index 000000000000..1b5efb34567e --- /dev/null +++ b/keyboards/coban/pad9a/info.json @@ -0,0 +1,76 @@ +{ + "manufacturer": "Coban Stationery", + "keyboard_name": "Coban Pad 9A", + "maintainer": "Coban Stationery", + "bootloader": "rp2040", + "encoder": { + "enabled": true, + "rotary": [ + {"pin_a": "GP21", "pin_b": "GP20"}, + {"pin_a": "GP1", "pin_b": "GP0"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "direct": [ + ["GP22", "GP2", "GP19", "GP16", "GP10", "GP18", "GP17", "GP11"] + ] + }, + "name": "Coban Pad 9A", + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "breathing": true, + "cycle_all": true, + "digital_rain": true, + "pixel_rain": true, + "rainbow_beacon": true, + "raindrops": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 4], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 112, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 224, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 64, "y": 64, "flags": 4}, + {"matrix": [0, 6], "x": 112, "y": 64, "flags": 4}, + {"matrix": [0, 7], "x": 224, "y": 64, "flags": 4} + ], + "max_brightness": 150 + }, + "url": "https://cobanstationery.com", + "usb": { + "device_version": "1.2.0", + "pid": "0xCC9A", + "vid": "0xCB3A" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP12" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "push_left", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "push_right", "matrix": [0, 1], "x": 2, "y": 0}, + {"label": "key_1", "matrix": [0, 2], "x": 0, "y": 1}, + {"label": "key_2", "matrix": [0, 3], "x": 1, "y": 1}, + {"label": "key_3", "matrix": [0, 4], "x": 2, "y": 1}, + {"label": "key_4", "matrix": [0, 5], "x": 0, "y": 2}, + {"label": "key_5", "matrix": [0, 6], "x": 1, "y": 2}, + {"label": "key_6", "matrix": [0, 7], "x": 2, "y": 3} + ] + } + } +} diff --git a/keyboards/coban/pad9a/keymaps/default/keymap.c b/keyboards/coban/pad9a/keymaps/default/keymap.c new file mode 100644 index 000000000000..9ef5fc54d7e5 --- /dev/null +++ b/keyboards/coban/pad9a/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2023 RyanDam (https://github.com/RyanDam) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_MPLY, KC_ENT, + KC_MPRV, KC_UP, KC_MNXT, + KC_LEFT, KC_DOWN, KC_RIGHT + ), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, +}; +#endif diff --git a/keyboards/coban/pad9a/keymaps/default/rules.mk b/keyboards/coban/pad9a/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/coban/pad9a/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/coban/pad9a/keymaps/via/keymap.c b/keyboards/coban/pad9a/keymaps/via/keymap.c new file mode 100644 index 000000000000..9ef5fc54d7e5 --- /dev/null +++ b/keyboards/coban/pad9a/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +/* Copyright 2023 RyanDam (https://github.com/RyanDam) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_MPLY, KC_ENT, + KC_MPRV, KC_UP, KC_MNXT, + KC_LEFT, KC_DOWN, KC_RIGHT + ), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_WH_U, KC_WH_D) }, +}; +#endif diff --git a/keyboards/coban/pad9a/keymaps/via/rules.mk b/keyboards/coban/pad9a/keymaps/via/rules.mk new file mode 100644 index 000000000000..1189f4ad1927 --- /dev/null +++ b/keyboards/coban/pad9a/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/coban/pad9a/readme.md b/keyboards/coban/pad9a/readme.md new file mode 100644 index 000000000000..3abb63e126e4 --- /dev/null +++ b/keyboards/coban/pad9a/readme.md @@ -0,0 +1,24 @@ +# Coban Pad 9A + +![Coban Pad 9A](https://i.imgur.com/5svg1RMh.jpeg) + +Small macro keyboard with 6 hotswapable button and 2 EC11 rotary encoder + +* Keyboard Maintainer: [RyanDam](https://github.com/RyanDam) +* Hardware Supported: Coban Pad 9A + +Make example for this keyboard (after setting up your build environment): + + make coban/pad9a:default + +Flashing example for this keyboard: + + make coban/pad9a:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader: + +* **boot button**: Hold the BOOT button on the back of the PCB while plug in usb cable diff --git a/users/nchristus/rules.mk b/keyboards/coban/pad9a/rules.mk similarity index 100% rename from users/nchristus/rules.mk rename to keyboards/coban/pad9a/rules.mk diff --git a/keyboards/contra/keymaps/losinggeneration/README.md b/keyboards/contra/keymaps/losinggeneration/README.md deleted file mode 100644 index affd2fb9b414..000000000000 --- a/keyboards/contra/keymaps/losinggeneration/README.md +++ /dev/null @@ -1,30 +0,0 @@ -losinggeneration's Contra Layout -============================ - -This build uses the MIT layout. - -See description of the layout in the common folder -[here](../../../../users/losinggeneration/README.md) - -## Features -- Adjust - - Removed AGSwap, AGNorm, & Del - - Added Caps Lock, F1-F12 in a 4x3 grid, arrow cluster, - and layer transitions to the new layers. - - Moved Reset & Audio control to the right side - -## Layouts - -### Adjust (Lower + Raise) - -``` - ,-----------------------------------------------------------------------------------. - | | F1 | F2 | F3 | F4 | | RESET| Game |Numpad|Mouse | |Sleep | - |------+------+------+------+------+------+------+------+------+------+------+------| - | | F5 | F6 | F7 | F8 | | |Qwerty|Colmak|Workmn|Dvorak| | - |------+------+------+------+------+------+------+------+------+------+------+------| - | CAPS | F9 | F10 | F11 | F12 | | | | | | Up | | - |------+------+------+------+------+-------------+------+------+------+------+------| - | | | | | | | | XXX | Left | Down |Right | - `-----------------------------------------------------------------------------------' -``` diff --git a/keyboards/contra/keymaps/losinggeneration/config.h b/keyboards/contra/keymaps/losinggeneration/config.h deleted file mode 100644 index 4a64e977c9bf..000000000000 --- a/keyboards/contra/keymaps/losinggeneration/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2017 Danny Nguyen -Copyright 2018 Harley Laue - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -long with this program. If not, see . -*/ - -#pragma once - -#define USE_MIT_LAYOUT - -#define TAPPING_TERM 250 diff --git a/keyboards/contra/keymaps/losinggeneration/keymap.c b/keyboards/contra/keymaps/losinggeneration/keymap.c deleted file mode 100644 index c7fb08b8d89a..000000000000 --- a/keyboards/contra/keymaps/losinggeneration/keymap.c +++ /dev/null @@ -1,40 +0,0 @@ -#include QMK_KEYBOARD_H -#include "losinggeneration-config.h" -#include "losinggeneration-keymap.h" - -extern keymap_config_t keymap_config; - -#define MT_CAPS LSFT_T(KC_CAPS) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[_QWERTY] = CATMAP( QWERTY_LAYER ), -[_COLEMAK] = CATMAP( COLEMAK_LAYER ), -[_WORKMAN] = CATMAP( WORKMAN_LAYER ), -[_DVORAK] = CATMAP( DVORAK_LAYER ), -[_GAME] = CATMAP( GAME_LAYER ), -[_NUMPAD] = CATMAP( NUMPAD_LAYER ), -[_MOUSE] = CATMAP( MOUSE_LAYER ), -[_LOWER] = CATMAP( LOWER_LAYER ), -[_RAISE] = CATMAP( RAISE_LAYER ), - -/* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | F1 | F2 | F3 | F4 | | QK_BOOT| Game |Numpad|Mouse | |Sleep | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | F5 | F6 | F7 | F8 | | |Qwerty|Colmak|Workmn|Dvorak| | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | CAPS | F9 | F10 | F11 | F12 | | | | | | Up | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | XXX | Left | Down |Right | - * `-----------------------------------------------------------------------------------' - */ -[_ADJUST] = CATMAP( - _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, QK_BOOT, TO_GAME, TO_NUM , TO_MS , _______, KC_SLEP, - _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, QWERTY , COLEMAK, WORKMAN, DVORAK , _______, - MT_CAPS, KC_F9 , KC_F10, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, KC_UP , _______, - _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT -) - -}; - diff --git a/keyboards/contra/keymaps/losinggeneration/rules.mk b/keyboards/contra/keymaps/losinggeneration/rules.mk deleted file mode 100644 index 34b0ba318fba..000000000000 --- a/keyboards/contra/keymaps/losinggeneration/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -AUDIO_ENABLE = no # Audio output on port C6 -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -COMMAND_ENABLE = no # Commands for debug and configuration -CONSOLE_ENABLE = no # Console for debug(+400) -MIDI_ENABLE = no # MIDI controls -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - diff --git a/keyboards/controllerworks/city42/info.json b/keyboards/controllerworks/city42/info.json index 914b716f1119..2976021b11a7 100644 --- a/keyboards/controllerworks/city42/info.json +++ b/keyboards/controllerworks/city42/info.json @@ -23,32 +23,50 @@ "processor": "RP2040", "rgb_matrix": { "animations": { + "solid_color": true, "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, "band_pinwheel_sat": true, "band_pinwheel_val": true, - "band_sat": true, "band_spiral_sat": true, "band_spiral_val": true, - "band_val": true, - "breathing": true, "cycle_all": true, "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, "cycle_pinwheel": true, "cycle_spiral": true, - "cycle_up_down": true, - "gradient_left_right": true, - "gradient_up_down": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, "hue_breathing": true, "hue_pendulum": true, "hue_wave": true, - "rainbow_moving_chevron": true, - "raindrops": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, "solid_reactive_multinexus": true, - "solid_reactive_simple": true, - "solid_splash": true, "splash": true, - "typing_heatmap": true + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true }, "driver": "ws2812", "layout": [ diff --git a/keyboards/controllerworks/mini36/config.h b/keyboards/controllerworks/mini36/config.h index 3a094c2fd101..4a0c48b1b03a 100644 --- a/keyboards/controllerworks/mini36/config.h +++ b/keyboards/controllerworks/mini36/config.h @@ -22,11 +22,6 @@ #define RGB_MATRIX_SPLIT \ { 24, 24 } -#define SPLIT_TRANSPORT_MIRROR -#define SPLIT_LAYER_STATE_ENABLE -#define SPLIT_LED_STATE_ENABLE -#define SPLIT_MODS_ENABLE - #define I2C_DRIVER I2CD0 #define I2C1_SCL_PIN GP25 #define I2C1_SDA_PIN GP24 diff --git a/keyboards/controllerworks/mini36/info.json b/keyboards/controllerworks/mini36/info.json index 534dee94f10f..3a49b210ac30 100644 --- a/keyboards/controllerworks/mini36/info.json +++ b/keyboards/controllerworks/mini36/info.json @@ -41,7 +41,13 @@ }, "soft_serial_pin": "GP1", "transport": { - "protocol": "serial" + "protocol": "serial", + "sync": { + "indicators": true, + "layer_state": true, + "matrix_state": true, + "modifiers": true + } } }, "features": { diff --git a/keyboards/controllerworks/mini42/config.h b/keyboards/controllerworks/mini42/config.h index e7fc529592fe..20b6bbac8d00 100644 --- a/keyboards/controllerworks/mini42/config.h +++ b/keyboards/controllerworks/mini42/config.h @@ -20,11 +20,6 @@ #define WS2812_PIO_USE_PIO1 #define RGB_MATRIX_LED_COUNT 54 -#define SPLIT_TRANSPORT_MIRROR -#define SPLIT_LAYER_STATE_ENABLE -#define SPLIT_LED_STATE_ENABLE -#define SPLIT_MODS_ENABLE - #undef I2C_DRIVER #define I2C_DRIVER I2CD0 #undef I2C1_SCL_PIN diff --git a/keyboards/controllerworks/mini42/info.json b/keyboards/controllerworks/mini42/info.json index ae70408a9f48..5d1d56db1a22 100644 --- a/keyboards/controllerworks/mini42/info.json +++ b/keyboards/controllerworks/mini42/info.json @@ -29,7 +29,6 @@ }, "split": { "enabled": true, - "main": "left", "matrix_pins": { "right": { "direct": [ @@ -42,7 +41,13 @@ }, "soft_serial_pin": "GP1", "transport": { - "protocol": "serial" + "protocol": "serial", + "sync": { + "indicators": true, + "layer_state": true, + "matrix_state": true, + "modifiers": true + } } }, "features": { diff --git a/keyboards/converter/adb_usb/keymaps/zyber/keymap.c b/keyboards/converter/adb_usb/keymaps/zyber/keymap.c deleted file mode 100644 index a34b46d6de66..000000000000 --- a/keyboards/converter/adb_usb/keymaps/zyber/keymap.c +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2022 ZyBeR (@ZyberSE) -// SPDX-License-Identifier: GPL-2.0 - -#include "zyber.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - LAYOUT_ext_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SCRL,KC_PAUS, KC_EJCT, - KC_GRV, KC_1, KC_2, KC_3, TD(SSHT), KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_EQL, KC_PSLS, KC_PAST, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD(LBRC), KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS, - KC_LCAP, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD(SCLN), TD(QUOT), KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT - ), -}; diff --git a/keyboards/converter/m0110_usb/keymaps/zyber/keymap.c b/keyboards/converter/m0110_usb/keymaps/zyber/keymap.c deleted file mode 100644 index c3b85313cebd..000000000000 --- a/keyboards/converter/m0110_usb/keymaps/zyber/keymap.c +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2022 ZyBeR (@ZyberSE) -// SPDX-License-Identifier: GPL-2.0 - -#include "zyber.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Default: - * M0110 M0120 - * ,---------------------------------------------------------. ,---------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Nlk| =| /| *| - * |---------------------------------------------------------| |---------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| Å| ¨|Ent| | 7| 8| 9| -| - * |------------------------------------------------------| e| |---------------| - * |Ctrl | A| S| D| F| G| H| J| K| L| Ö| Ä| '| r| | 4| 5| 6| +| - * |---------------------------------------------------------| |---------------| - * |Shft| §| Z| X| C| V| B| N| M| ,| .| /| -|Shft| | 1| 2| 3| | - * `---------------------------------------------------------' |-----------|Ent| - * |Opt|Mac | Space |Fn |Opt| | 0| .| | - * `-----------------------------------------------' `---------------' - * M0110A - * ,---------------------------------------------------------. ,---------------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backs| |Nlk| =| /| *| - * |---------------------------------------------------------| |---------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | 7| 8| 9| -| - * |-----------------------------------------------------' | |---------------| - * |Caps | A| S| D| F| G| H| J| K| L| ;| '|Return| | 4| 5| 6| +| - * |---------------------------------------------------------| |---------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shft|Up | | 1| 2| 3| | - * |---------------------------------------------------------| |-----------|Ent| - * |Opt |Mac | Space | \|Lft|Rgt|Dn | | 0| .| | - * `---------------------------------------------------------' `---------------' - */ - - [0] = LAYOUT_iso( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_EQL, KC_PSLS, KC_PAST, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_P7, KC_P8, KC_P9, KC_PMNS, - CTRL_C_UP, 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_P4, KC_P5, KC_P6, KC_PPLS, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_LALT, KC_LGUI, KC_SPC, MO(1), LT(1, KC_BSLS), KC_DOWN), - - - /* Cursor Layer: - * M0110 M0120 - * ,---------------------------------------------------------. ,---------------. - * |RES| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| =| /| *| - * |---------------------------------------------------------| |---------------| - * |Tab |Hom| Up|PgU|Rst| | | |Psc|Slk|Pau|Up |INS| | | 7| 8| 9| -| - * |---------------------------------------------------------| |---------------| - * |Ctrl |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Return| | 4| 5| 6| +| - * |---------------------------------------------------------| |---------------| - * |Shift |End| |PgD| | | | |End|PgD|Dow|Shift | | 1| 2| 3| | - * `---------------------------------------------------------' |-----------|Ent| - * |Opt|Mac | Space |Fn |Opt| | 0| .| | - * `-----------------------------------------------' `---------------' - * M0110A - * ,---------------------------------------------------------. ,---------------. - * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delet| |Nlk| =| /| *| - * |---------------------------------------------------------| |---------------| - * |Tab |Hom| Up|PgU| | | | |Psc|Slk|Pau|Up |INS| | | 7| 8| 9| -| - * |-----------------------------------------------------' | |---------------| - * |Caps |Lef|Dow|Rig| | | | |Hom|PgU|Lef|Rig|Return| | 4| 5| 6| +| - * |---------------------------------------------------------| |---------------| - * |Ctrl |End| |PgD| | | | |End|PgD|Dow|Shft|PgU| | 1| 2| 3| | - * |---------------------------------------------------------| |-----------|Ent| - * |Opt |Mac | Space | \|Hom|End|PgD| | 0| .| | - * `---------------------------------------------------------' `---------------' - */ - - [1] = LAYOUT_iso( - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), -}; diff --git a/keyboards/converter/m0110_usb/keymaps/zyber/rules.mk b/keyboards/converter/m0110_usb/keymaps/zyber/rules.mk deleted file mode 100644 index adaa1b5696d1..000000000000 --- a/keyboards/converter/m0110_usb/keymaps/zyber/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -F_CPU = 16000000 -BOOTLOADER = atmel-dfu -CONSOLE_ENABLE = no diff --git a/keyboards/converter/palm_usb/rules.mk b/keyboards/converter/palm_usb/rules.mk index e02b683d3bc3..72d9daf6d9ac 100644 --- a/keyboards/converter/palm_usb/rules.mk +++ b/keyboards/converter/palm_usb/rules.mk @@ -14,6 +14,6 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. CUSTOM_MATRIX = yes SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes DEFAULT_FOLDER = converter/palm_usb/stowaway diff --git a/keyboards/converter/sun_usb/rules.mk b/keyboards/converter/sun_usb/rules.mk index ee54c6cf11fb..ae20f51b37ec 100644 --- a/keyboards/converter/sun_usb/rules.mk +++ b/keyboards/converter/sun_usb/rules.mk @@ -14,6 +14,6 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. CUSTOM_MATRIX = yes SRC += matrix.c led.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes DEFAULT_FOLDER = converter/sun_usb/type5 diff --git a/keyboards/converter/sun_usb/type5/keymaps/sigma/keymap.c b/keyboards/converter/sun_usb/type5/keymaps/sigma/keymap.c deleted file mode 100644 index 3996b7d2e167..000000000000 --- a/keyboards/converter/sun_usb/type5/keymaps/sigma/keymap.c +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2018 Yann Hodique @sigma - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "sigma.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = - { - [_QWERTY] = LAYOUT_us_unix( - QK_LEAD, KC_SCRT, 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_MUTE,KC_VOLD,KC_VOLU,KC_OS_LOCK, - KC_STOP, KC_OS_REDO, KC_ESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSLS,KC_GRV, KC_INS, KC_HOME,KC_PGUP, KC_NUM, KC_PSLS,KC_PAST,KC_PMNS, - VRSN, KC_OS_UNDO, KC_TAB, KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_MAKE, KC_OS_COPY, 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_P4, KC_P5, KC_P6, - KC_EXECUTE,KC_OS_PASTE, KC_LSFT, KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, - KC_FIND, KC_OS_CUT, KC_CAPS,KC_LGUI,KC_LALT, KC_SPC, KC_RGUI,KC_APP,KC_RALT, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT - ), - }; diff --git a/keyboards/converter/sun_usb/type5/keymaps/sigma/readme.md b/keyboards/converter/sun_usb/type5/keymaps/sigma/readme.md deleted file mode 100644 index 6ae011f86686..000000000000 --- a/keyboards/converter/sun_usb/type5/keymaps/sigma/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -Overview -======== - -This is my personal Sun Type 5 configuration. - -How to build ------------- - - make converter/sun_usb/type5:sigma:teensy - -Layers ------- diff --git a/keyboards/converter/sun_usb/type5/keymaps/sigma/rules.mk b/keyboards/converter/sun_usb/type5/keymaps/sigma/rules.mk deleted file mode 100644 index f1de332c0c12..000000000000 --- a/keyboards/converter/sun_usb/type5/keymaps/sigma/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -BOOTLOADER = halfkay -UNICODE_ENABLE = yes diff --git a/keyboards/converter/usb_usb/hasu/rules.mk b/keyboards/converter/usb_usb/hasu/rules.mk index c2ee0bc86f97..6e7633bfe015 100644 --- a/keyboards/converter/usb_usb/hasu/rules.mk +++ b/keyboards/converter/usb_usb/hasu/rules.mk @@ -1,2 +1 @@ -# Processor frequency -F_CPU = 16000000 +# This file intentionally left blank diff --git a/keyboards/converter/usb_usb/keymaps/narze/README.md b/keyboards/converter/usb_usb/keymaps/narze/README.md deleted file mode 100644 index eb9dbbf60b0f..000000000000 --- a/keyboards/converter/usb_usb/keymaps/narze/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# narze's layout for usb-usb converter - -## Key features -- Qwerty + [Colemak](https://colemak.com) layouts, and you can type Qwerty on software-level Colemak as well. Very useful for gaming or when your friend wanna type something but don't use Colemak. -- [(S)uper (D)uper Mode](/users/narze/readme.md) - -## Build instructions -- `cd /path/to/qmk_firmware` -- Ensure latest libraries are loaded `make git-submodule` -- Build & flash : `make converter/usb_usb:narze:flash` diff --git a/keyboards/converter/usb_usb/keymaps/narze/config.h b/keyboards/converter/usb_usb/keymaps/narze/config.h deleted file mode 100644 index a7fccc41873f..000000000000 --- a/keyboards/converter/usb_usb/keymaps/narze/config.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -/* - * MIDI options - */ - -/* enable basic MIDI features: - - MIDI notes can be sent when in Music mode is on -*/ -#define MIDI_BASIC - -/* enable advanced MIDI features: - - MIDI notes can be added to the keymap - - Octave shift and transpose - - Virtual sustain, portamento, and modulation wheel - - etc. -*/ -//#define MIDI_ADVANCED - -/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ -//#define MIDI_TONE_KEYCODE_OCTAVES 2 - -#undef TAPPING_TERM -#define TAPPING_TERM 100 - -#define COMBO_TERM 20 - -#define PERMISSIVE_HOLD - -#define SUPER_DUPER_SOUND S__NOTE(_B1) - -#define MOUSEKEY_DELAY 100 - -#define USB_POLLING_INTERVAL_MS 1 - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(PLANCK_SOUND) - - #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ - SONG(COLEMAK_SOUND), \ - SONG(DVORAK_SOUND) \ - } -#endif diff --git a/keyboards/converter/usb_usb/keymaps/narze/keymap.c b/keyboards/converter/usb_usb/keymaps/narze/keymap.c deleted file mode 100644 index 7b1b0ec4459a..000000000000 --- a/keyboards/converter/usb_usb/keymaps/narze/keymap.c +++ /dev/null @@ -1,167 +0,0 @@ -#include QMK_KEYBOARD_H -#include "narze.h" -#include "keymap_colemak.h" - -enum usb_usb_layers { - _QWERTY, - _COLEMAK, - _QWOC, - _SUPERDUPER, -}; - -enum usb_usb_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - QWOC, - SUPERDUPER, - SDTOGG, // Toggle SuperDuper - GUI_UNDS, - LSFT_LPRN, - RSFT_RPRN, -}; - -#define HPR_ESC ALL_T(KC_ESC) -#define SFT_ENT SFT_T(KC_ENT) -#define BRWS_L S(LGUI(KC_LBRC)) -#define BRWS_R S(LGUI(KC_RBRC)) - -enum process_combo_event { - CB_SUPERDUPER, -}; - -const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = { - /* 0: plain Qwerty without layer switching - * ,---------------. ,---------------. ,---------------. - * |F13|F14|F15|F16| |F17|F18|F19|F20| |F21|F22|F23|F24| - * ,---. |---------------| |---------------| |---------------| ,-----------. ,---------------. ,-------. - * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |VDn|VUp|Mut|Pwr| | Help | - * `---' `---------------' `---------------' `---------------' `-----------' `---------------' `-------' - * ,-----------------------------------------------------------. ,-----------. ,---------------. ,-------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|JPY|Bsp| |Ins|Hom|PgU| |NmL| /| *| -| |Stp|Agn| - * |-----------------------------------------------------------| |-----------| |---------------| |-------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | |Del|End|PgD| | 7| 8| 9| +| |Mnu|Und| - * |-----------------------------------------------------------| `-----------' |---------------| |-------| - * |CapsL | A| S| D| F| G| H| J| K| L| ;| :| #|Retn| | 4| 5| 6|KP,| |Sel|Cpy| - * |-----------------------------------------------------------| ,---. |---------------| |-------| - * |Shft| <| Z| X| C| V| B| N| M| ,| ,| /| RO|Shift | |Up | | 1| 2| 3|KP=| |Exe|Pst| - * |-----------------------------------------------------------| ,-----------. |---------------| |-------| - * |Ctl|Gui|Alt|MHEN|HNJ| Space |H/E|HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| | 0 | .|Ent| |Fnd|Cut| - * `-----------------------------------------------------------' `-----------' `---------------' `-------' - */ - [_QWERTY] = LAYOUT_all( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - 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_VOLD, KC_VOLU, KC_MUTE, KC_PWR, KC_HELP, - 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_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_STOP, KC_AGIN, - 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_P7, KC_P8, KC_P9, KC_PPLS, KC_MENU, KC_UNDO, - HPR_ESC, 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_P4, KC_P5, KC_P6, KC_PCMM, KC_SLCT, KC_COPY, - LSFT_LPRN,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, RSFT_RPRN, KC_UP, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_EXEC, KC_PSTE, - KC_LCTL, KC_LALT, GUI_UNDS,KC_INT5, KC_LNG2, KC_SPC, KC_LNG1, KC_INT4, KC_INT2, KC_BSPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_FIND, KC_CUT - ), - [_COLEMAK] = LAYOUT_all( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - 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_VOLD, KC_VOLU, KC_MUTE, KC_PWR, KC_HELP, - 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_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_STOP, KC_AGIN, - 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_P7, KC_P8, KC_P9, KC_PPLS, KC_MENU, KC_UNDO, - HPR_ESC, 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_P4, KC_P5, KC_P6, KC_PCMM, KC_SLCT, KC_COPY, - LSFT_LPRN,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, RSFT_RPRN, KC_UP, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_EXEC, KC_PSTE, - KC_LCTL, KC_LALT, GUI_UNDS,KC_INT5, KC_LNG2, KC_SPC, KC_LNG1, KC_INT4, KC_INT2, KC_BSPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_FIND, KC_CUT - ), - [_QWOC] = LAYOUT_all( - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - 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_VOLD, KC_VOLU, KC_MUTE, KC_PWR, KC_HELP, - 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_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_STOP, KC_AGIN, - 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_P7, KC_P8, KC_P9, KC_PPLS, KC_MENU, KC_UNDO, - HPR_ESC, 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_P4, KC_P5, KC_P6, KC_PCMM, KC_SLCT, KC_COPY, - LSFT_LPRN,KC_NUBS,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, RSFT_RPRN, KC_UP, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_EXEC, KC_PSTE, - KC_LCTL, KC_LALT, GUI_UNDS,KC_INT5, KC_LNG2, KC_SPC, KC_LNG1, KC_INT4, KC_INT2, KC_BSPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_FIND, KC_CUT - ), - [_SUPERDUPER] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, BRWS_L, BRWS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_SPC, KC_LALT, _______, _______, KC_BSPC, KC_LGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - - set_superduper_key_combo_layer(_QWERTY); - } - return false; - - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - - set_superduper_key_combo_layer(_COLEMAK); - } - return false; - - case QWOC: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWOC); - - set_superduper_key_combo_layer(_QWOC); - } - return false; - - case SDTOGG: - if (record->event.pressed) { - toggle_superduper_mode(); - } - return false; - - // Macros - - // 1. Hold for LGUI, tap for Underscore - case GUI_UNDS: - perform_space_cadet(record, keycode, KC_LGUI, KC_LSFT, KC_MINS); - return false; - - // 2. Hold for LSHIFT, tap for Parens open - case LSFT_LPRN: - perform_space_cadet(record, keycode, KC_LSFT, KC_LSFT, KC_9); - return false; - - // 3. Hold for RSHIFT, tap for Parens close - case RSFT_RPRN: - perform_space_cadet(record, keycode, KC_RSFT, KC_RSFT, KC_0); - return false; - - default: - return true; - } - return true; -} - -void matrix_setup(void) { - set_superduper_key_combos(); -} - -void process_combo_event(uint16_t combo_index, bool pressed) { - if (pressed) { - switch(combo_index) { - case CB_SUPERDUPER: - layer_on(_SUPERDUPER); - break; - } - } else { - layer_off(_SUPERDUPER); - unregister_mods(MOD_BIT(KC_LGUI) | MOD_BIT(KC_LCTL) | MOD_BIT(KC_LALT)); // Sometimes mods are held, unregister them - } -} diff --git a/keyboards/converter/usb_usb/keymaps/narze/rules.mk b/keyboards/converter/usb_usb/keymaps/narze/rules.mk deleted file mode 100644 index 2d982de62890..000000000000 --- a/keyboards/converter/usb_usb/keymaps/narze/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -EXTRAKEY_ENABLE = no -COMBO_ENABLE = yes diff --git a/keyboards/converter/usb_usb/leonardo/info.json b/keyboards/converter/usb_usb/leonardo/info.json new file mode 100644 index 000000000000..56062f7ad371 --- /dev/null +++ b/keyboards/converter/usb_usb/leonardo/info.json @@ -0,0 +1,3 @@ +{ + "bootloader": "caterina" +} diff --git a/keyboards/converter/usb_usb/leonardo/rules.mk b/keyboards/converter/usb_usb/leonardo/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/converter/usb_usb/leonardo/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/converter/usb_usb/readme.md b/keyboards/converter/usb_usb/readme.md index 594a9be877e4..50743b11fcc6 100644 --- a/keyboards/converter/usb_usb/readme.md +++ b/keyboards/converter/usb_usb/readme.md @@ -11,6 +11,10 @@ Make example for this keyboard (after setting up your build environment): make converter/usb_usb:default +If you use Arduino Leonardo with a USB Host Shield: + + make converter/usb_usb/leonardo:default + See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Note that you have to choose the right hardware variant as your subproject, otherwise you will probably have issues. @@ -23,8 +27,6 @@ If you are sure you have this correct, try changeing the default in `usb_usb/rul The Pro Micro variant uses a 3.3V Pro Micro and thus runs at 8MHz, hence the following line in `usb_usb/pro_micro/rules.mk`: `F_CPU = 8000000` -The converter sold by Hasu runs at 16MHz and so the corresponding line in `usb_usb/hasu/rules.mk` is: -`F_CPU = 16000000` Getting the Hardware -------------------- diff --git a/keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c deleted file mode 100644 index e5b110790df1..000000000000 --- a/keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright 2019 Brandon Schlack - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "brandonschlack.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Base Layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│Hom│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│| \│PgU│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │HyCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter│PgD│ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ - * │Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│End│ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┤ - * │Ctrl│ Opt│ Cmd│ Space │ Cmd │FnPly│Lef│Dow│Rig│ - * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┘ - */ -[_BASE] = LAYOUT_65_ansi_2_right_mods( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - HY_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, PLY_FN1, KC_LEFT, KC_DOWN, KC_RGHT -), -/* Function Layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │` ~│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ Del │SlD│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │ │ │ │ │ │ │ │ │ │ │F13│F14│F15│ LHP │VlU│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │VlD│ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ - * │ │ │ │ │ │RST│ │Mke│Prv│Nxt│Ply│ │PgU│Mut│ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┤ - * │ │ │ │ │ │ │Hom│PgD│End│ - * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┘ - */ -[_FN1] = LAYOUT_65_ansi_2_right_mods( - 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, MC_SLPD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, MC_LHPD, KC_VOLU, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, - _______, _______, _______, _______, _______, QK_BOOT, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END -) -}; diff --git a/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c index ed49188c5e91..0dc219faccc7 100644 --- a/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c +++ b/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c @@ -30,68 +30,28 @@ enum discpline_keycodes { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + FN_ESC, 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), - /* QWERTY: Default Layer - * ,--------------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backs| `~| - * |---------------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|Del| - * |---------------------------------------------------------------| - * |Fn/CL | A| S| D| F| G| H| J| K| L| ;| '| Enter|PgU| - * |---------------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Up |PgD| - * |---------------------------------------------------------------| - * |Ctrl|Gui |Alt | Space |Gui |Alt |Ctrl| |Lef|Dow|Rig| - * `---------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT_65_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC, KC_BSLS, KC_DEL, - FN_ESC, 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_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* Workman - * ,---------------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backs| `~| - * |---------------------------------------------------------------| - * |Tab | Q| D| R| W| B| J| F| U| P| ;| [| ]| \| Del| - * |---------------------------------------------------------------| - * |Fn/CL | A| S| H| T| G| Y| N| E| O| I| '| Enter| PgU| - * |---------------------------------------------------------------| - * |Shift | Z| X| M| C| V| K| L| ,| .| /|Shift |Up| PgD| - * |---------------------------------------------------------------| - * |Ctrl|Alt |Gui | Space |Gui |Alt |Ctrl| |Lef|Dow|Rig| - * `---------------------------------------------------------------' - */ - [_WORKMAN] = LAYOUT_65_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - FN_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_ENT, KC_HOME, - KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + [_WORKMAN] = LAYOUT_65_ansi( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + FN_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_ENT, KC_HOME, + KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), - /* Function - * ,---------------------------------------------------------------. - * |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | | - * |---------------------------------------------------------------| - * | | | | | | | | | | | | | | |INS| - * |---------------------------------------------------------------| - * | | | | | | | | | | | | | |HME| - * |---------------------------------------------------------------| - * | | | | | | | | | | | | | |VL+|END| - * |---------------------------------------------------------------| - * | | | | PLY/PS | | | | |PRV|VL-|NXT| - * `---------------------------------------------------------------' - */ [_FUNC] = LAYOUT_65_ansi( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,_______, QK_BOOT, - _______,KC_WH_U,KC_BTN1,KC_MS_U,KC_BTN2,_______,_______,AG_NORM,AG_SWAP,QWERTY,WORKMAN,_______,_______,_______, KC_INS, - _______,KC_WH_D,KC_MS_L,KC_MS_D,KC_MS_R,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP, - _______,KC_WH_L,KC_BTN3,KC_WH_R,_______,_______,_______,_______,_______,_______,_______, _______,KC_VOLU, KC_PGDN, - _______,_______,_______, KC_MPLY, _______,_______,_______,KC_MPRV,KC_VOLD, KC_MNXT + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, QK_BOOT, + KC_TRNS, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, AG_NORM, AG_SWAP, QWERTY, WORKMAN, KC_TRNS, KC_INS, + KC_TRNS, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, + KC_TRNS, KC_WH_L, KC_BTN3, KC_WH_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_PGDN, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT ), }; diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h deleted file mode 100644 index 1c1f66c89fe0..000000000000 --- a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright 2021 James Young (@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 . - */ - -#pragma once - -#define ANSI_NUBS_ROW 3 -#define ANSI_NUBS_COL 2 diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c deleted file mode 100644 index 1c7f42f2107e..000000000000 --- a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2021-2022 James Young (@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 "noroadsleft.h" - -enum layer_names { - _DV, - _QW, - _NP, - _FN, - _SY -}; - -#define FN_CAPS LT(_FN, KC_CAPS) -#define CTL_GRV MT(MOD_LCTL, KC_GRV) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_DV] = LAYOUT_65_ansi( - 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_BSPC, KC_HOME, - 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_BSLS, KC_PGUP, - FN_CAPS, 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_PGDN, - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, KC_END, - CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_QW] = LAYOUT_65_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - CTL_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_NP] = LAYOUT_65_ansi( - _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, - _______, _______, _______, _______, KC_E, KC_F, _______, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PSLS, KC_PEQL, _______, _______, - _______, _______, _______, _______, KC_C, KC_D, _______, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PMNS, KC_PENT, _______, - _______, _______, _______, _______, KC_A, KC_B, _______, KC_P0, _______, KC_PDOT, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [_FN] = LAYOUT_65_ansi( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, DM_REC1, - _______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SCRL, KC_PAUS, DM_REC2, - _______, M_SALL, _______, _______, G_PWD, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, DM_RSTP, DM_PLY1, - _______, M_UNDO, M_CUT, M_COPY, M_PASTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TO(_SY), _______, _______, DM_PLY2, - _______, _______, _______, TG(_NP), _______, _______, _______, _______, _______, _______ - ), - - [_SY] = LAYOUT_65_ansi( - TG(_SY), TO(_DV), TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, DB_TOGG, XXXXXXX, VRSN, 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, XXXXXXX, XXXXXXX, XXXXXXX - ) - -}; diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/rules.mk b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/rules.mk deleted file mode 100644 index 9e6797ed3074..000000000000 --- a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/rules.mk +++ /dev/null @@ -1 +0,0 @@ -DYNAMIC_MACRO_ENABLE = yes diff --git a/keyboards/coseyfannitutti/discipline/keymaps/vial/config.h b/keyboards/coseyfannitutti/discipline/keymaps/vial/config.h new file mode 100644 index 000000000000..fb5b18aba4a2 --- /dev/null +++ b/keyboards/coseyfannitutti/discipline/keymaps/vial/config.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x8F, 0x32, 0xE4, 0x3E, 0x0D, 0x12, 0xA8, 0x64} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } diff --git a/keyboards/coseyfannitutti/discipline/keymaps/vial/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/vial/keymap.c new file mode 100644 index 000000000000..203529b4b306 --- /dev/null +++ b/keyboards/coseyfannitutti/discipline/keymaps/vial/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2019 COSEYFANNITUTTI + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), + + [1] = LAYOUT_65_ansi( + /* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc `~ */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_PSCR, + /* tab Q W E R T Y U I O P [ ] \ delete*/ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS, + /* caps A S D F G H J K L ; ' enter pg up*/ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, + /* shift Z X C V B N M , . / shift up pg dn*/ + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_VOLU, KC_END, + /* ctrl win alt space alt fn ctrl left down right*/ + KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_RCTL, KC_TRNS, KC_VOLD, KC_TRNS) +}; diff --git a/keyboards/kbdfans/d45/keymaps/vial/rules.mk b/keyboards/coseyfannitutti/discipline/keymaps/vial/rules.mk similarity index 100% rename from keyboards/kbdfans/d45/keymaps/vial/rules.mk rename to keyboards/coseyfannitutti/discipline/keymaps/vial/rules.mk diff --git a/keyboards/coseyfannitutti/discipline/keymaps/vial/vial.json b/keyboards/coseyfannitutti/discipline/keymaps/vial/vial.json new file mode 100644 index 000000000000..bbdf8dd5bddc --- /dev/null +++ b/keyboards/coseyfannitutti/discipline/keymaps/vial/vial.json @@ -0,0 +1,213 @@ +{ + "name": "Discipline", + "vendorId": "0x6B62", + "productId": "0x6869", + "lighting": "none", + "matrix": {"rows": 5, "cols": 15}, + "layouts": { + "labels": [ + "ISO Enter", + "Split Left Shift", + ["Spacebar", "6.25U", "7U"], + ["Right Modifiers", "1U", "1.5U"] + ], + "keymap": [ + [ + { + "x": 2.5, + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13", + "0,14" + ], + [ + { + "x": 2.5, + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "w": 1.5 + }, + "1,13\n\n\n0,0", + { + "c": "#aaaaaa" + }, + "1,14", + { + "x": 1.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "1,13\n\n\n0,1" + ], + [ + { + "x": 2.5, + "c": "#aaaaaa", + "w": 1.75 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + { + "c": "#777777", + "w": 2.25 + }, + "2,13\n\n\n0,0", + { + "c": "#aaaaaa" + }, + "2,14", + { + "x": 0.25, + "c": "#cccccc" + }, + "2,13\n\n\n0,1" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "3,0\n\n\n1,1", + { + "c": "#cccccc" + }, + "3,1\n\n\n1,1", + { + "x": 0.25, + "c": "#aaaaaa", + "w": 2.25 + }, + "3,0\n\n\n1,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12", + "3,13", + "3,14" + ], + [ + { + "x": 2.5, + "w": 1.25 + }, + "4,0\n\n\n2,0", + { + "w": 1.25 + }, + "4,1\n\n\n2,0", + { + "w": 1.25 + }, + "4,2\n\n\n2,0", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,6\n\n\n2,0", + { + "c": "#aaaaaa" + }, + "4,9\n\n\n3,0", + "4,10\n\n\n3,0", + "4,11\n\n\n3,0", + "4,12", + "4,13", + "4,14" + ], + [ + { + "y": 0.25, + "x": 2.5, + "w": 1.5 + }, + "4,0\n\n\n2,1", + { + "w": 1.5 + }, + "4,2\n\n\n2,1", + { + "c": "#cccccc", + "w": 7 + }, + "4,6\n\n\n2,1", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,9\n\n\n3,1", + { + "w": 1.5 + }, + "4,10\n\n\n3,1" + ] + ] + } +} diff --git a/keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c b/keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c deleted file mode 100644 index dd95901367e7..000000000000 --- a/keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright 2020 Brandon Schlack - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "brandonschlack.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Base Layer -* ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ -* │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ Bspc│ -* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ -* │HyEsc │ A │ S │ D │ F │ G │ H │ J │ K │ L │ Enter│ -* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ -* │Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│ ?/Sft│ -* ├────┬───┼───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴─┬────┤ -* │Ctrl│Opt│Cmd│ Space │ Cmd│Opt│ Lwr│ -* └────┴───┴───┴────────────────────────┴────┴───┴────┘ -*/ -[_BASE] = LAYOUT_ansi_40( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - HY_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SF_SLSH, - KC_LCTL, KC_LOPT, KC_LCMD, SPC_RAI, KC_RCMD, KC_ROPT, LOWER -), -/* Lower -* ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ -* │Del │BrD│BrU│Msn│LHP│   │   │   │PgU│Hom│End│ SlpD│ -* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ -* │HyCaps│Mut│VlU│NxW│PvT│Bck│Fwd│NxT│PgD│ ↑ │ Play│ -* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ -* │ │Prv│VlD│Nxt│1PX│1Ps│   │ ← │ ↓ │ → │ │ -* ├────┬───┼───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴─┬────┤ -* │ │ │ │ │ │ │ │ -* └────┴───┴───┴────────────────────────┴────┴───┴────┘ -*/ -[_LOWER] = LAYOUT_ansi_40( - KC_DEL, KC_BRMD, KC_BRMU, MC_MSSN, MC_LHPD, _______, _______, _______, KC_PGUP, KC_HOME, KC_END, MC_SLPD, - HY_CAPS, KC_MUTE, KC_VOLU, NXT_WIN, PRV_TAB, MC_BACK, MC_FWRD, NXT_TAB, KC_PGDN, KC_UP, KC_MPLY, - _______, KC_MPRV, KC_VOLD, KC_MNXT, PX_AFLL, OP_AFLL, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, - _______, _______, _______, _______, _______, _______, _______ -), -/* Raise -* ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ -* │~ `  │! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│ │ -* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ -* │     │ F1│ F2│ F3│ F4│ F5│ F6│_ -│+ =│: ;│ " '│ -* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ -* │ │ F7│ F8│ F9│F10│F11│F12│   │{ [│} ]│ |\Sft│ -* ├────┬───┼───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴─┬────┤ -* │ │ │ │ │    │   │    │ -* └────┴───┴───┴────────────────────────┴────┴───┴────┘ -*/ -[_RAISE] = LAYOUT_ansi_40( - KC_GRV, 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_MINS, KC_EQL, KC_SCLN, KC_QUOT, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_LBRC, KC_RBRC, SF_BSLS, - _______, _______, _______, _______, _______, _______, _______ -), -/* Adjust/Macro Layer -* ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ -* │Make │   │   │EEP│RST│ │ │ │ │ │ │     │ -* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ -* │ │ │ │ │ │ │ │ │ │ │ │ -* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ -* │ │ │ │ │ │ │ │ │ │ │ │ -* ├────┬───┼───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴─┬────┤ -* │ │ │ │ │ │ │ │ -* └────┴───┴───┴────────────────────────┴────┴───┴────┘ -*/ -[_ADJUST] = LAYOUT_ansi_40( - QM_MAKE, _______, _______, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ -) -/* Blank Layer -* ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ -* │ │ │ │ │ │ │ │ │ │ │ │ │ -* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ -* │ │ │ │ │ │ │ │ │ │ │ │ -* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤ -* │ │ │ │ │ │ │ │ │ │ │ │ -* ├────┬───┼───┼───┴───┴───┴───┴───┴───┴┬──┴─┬─┴─┬────┤ -* │ │ │ │ │ │ │ │ -* └────┴───┴───┴────────────────────────┴────┴───┴────┘ -*/ -/* -[BLANK] = LAYOUT_ansi_40( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ -) -*/ -}; - -layer_state_t layer_state_set_keymap(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} diff --git a/keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c b/keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c deleted file mode 100644 index 51fb5ca67c4f..000000000000 --- a/keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2022 Paul Ewing - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "key_repeater.h" - -#include - -enum { - LAYER_DEFAULT, - LAYER_FN, - LAYER_MACRO, - - __LAYER_COUNT, -}; - -#define TO_MACRO TO(LAYER_MACRO) -#define TO_DFLT TO(LAYER_DEFAULT) -#define MO_FN MO(LAYER_FN) - -#define RGB_N RGB_MOD // Rotate to next RGB mode -#define RGB_P RGB_RMOD // Rotate to next RGB mode - -#define KC_YANK LCTL(KC_INS) // Copy shortcut in most terminal emulators -#define KC_PUT LSFT(KC_INS) // Paste shortcut in most terminal emulators - -// Custom keycodes -enum { - SH_TOG = SAFE_RANGE, // Toggle shift - SH_BTN1, // Shift left click - RP_BTN1, // Click repeatedly while key is held -}; - -const uint16_t PROGMEM keymaps[__LAYER_COUNT][MATRIX_ROWS][MATRIX_COLS] = { - -[LAYER_DEFAULT] = LAYOUT( - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LEFT, KC_RGHT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO_FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL -), - -[LAYER_FN] = LAYOUT( - RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, QK_BOOT, - _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, RGB_TOG, KC_YANK, KC_GRV, KC_LBRC, KC_RBRC, KC_PUT, _______, - KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_INS, RGB_N, RGB_P, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_PAUS, RGB_M_P, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, - _______, _______, _______, _______, _______, _______, _______, TO_MACRO, _______, _______, _______, _______, _______, _______ -), - -[LAYER_MACRO] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, RP_BTN1, SH_TOG, _______, _______, _______, _______, _______, _______, _______, - TO_DFLT, _______, _______, KC_BTN1, SH_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_1, KC_6, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______ -), - -}; - -static bool shift_enabled = false; - -static struct key_repeater_t* click_repeater = NULL; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case SH_TOG: - if (record->event.pressed) { - if (shift_enabled) { - unregister_code(KC_LSFT); - } else { - register_code(KC_LSFT); - } - shift_enabled = !shift_enabled; - } - return false; // Skip all further processing of this key - case SH_BTN1: - if (record->event.pressed) { - register_code(KC_LSFT); - register_code(KC_BTN1); - } else { - unregister_code(KC_BTN1); - unregister_code(KC_LSFT); - } - return false; - case RP_BTN1: - if (record->event.pressed) { - kr_enable(click_repeater); - } else { - kr_disable(click_repeater); - } - return false; - default: - return true; // Process all other keycodes normally - } -} - -void keyboard_post_init_user(void) { - // Seed the random number generator which is used by the key repeater - srand(timer_read32()); - - // Configure and instantiate a key repeater for mouse button 1 "rapid fire" - struct key_repeater_config_t cfg = { - .key = KC_BTN1, - .key_duration_min = 20, - .key_duration_max = 50, - .wait_duration_min = 90, - .wait_duration_max = 140, - }; - - click_repeater = kr_new(&cfg); -} - -void matrix_scan_user(void) { - kr_poll(click_repeater); -} diff --git a/keyboards/cradio/keymaps/default/config.h b/keyboards/cradio/keymaps/default/config.h index 4b5a8b30be33..11eac72a77fb 100644 --- a/keyboards/cradio/keymaps/default/config.h +++ b/keyboards/cradio/keymaps/default/config.h @@ -1,21 +1,8 @@ -/* Copyright 2018-2021 - * ENDO Katsuhiro - * David Philip Barr <@davidphilipbarr> - * Pierre Chevalier - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +// Copyright 2018-2021 +// ENDO Katsuhiro +// David Philip Barr <@davidphilipbarr> +// Pierre Chevalier +// SPDX-License-Identifier: GPL-2.0+ #pragma once diff --git a/keyboards/cradio/keymaps/default/keymap.c b/keyboards/cradio/keymaps/default/keymap.c index ef3a214a6cba..e6cbe763ba1e 100644 --- a/keyboards/cradio/keymaps/default/keymap.c +++ b/keyboards/cradio/keymaps/default/keymap.c @@ -1,21 +1,8 @@ -/* Copyright 2018-2021 - * ENDO Katsuhiro - * David Philip Barr <@davidphilipbarr> - * Pierre Chevalier - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ +// Copyright 2018-2021 +// ENDO Katsuhiro +// David Philip Barr <@davidphilipbarr> +// Pierre Chevalier +// SPDX-License-Identifier: GPL-2.0+ #include QMK_KEYBOARD_H @@ -26,13 +13,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_split_3x5_2( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - SFT_T(KC_A),ALT_T(KC_S),CTL_T(KC_D),GUI_T(KC_F), KC_G, KC_H, GUI_T(KC_J),CTL_T(KC_K),ALT_T(KC_L),SFT_T(KC_SCLN), + CTL_T(KC_A),ALT_T(KC_S),GUI_T(KC_D),SFT_T(KC_F), KC_G, KC_H, SFT_T(KC_J),GUI_T(KC_K),ALT_T(KC_L),CTL_T(KC_SCLN), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LT(2,KC_TAB), KC_ENT, KC_SPC, LT(1,KC_BSPC) ), [1] = LAYOUT_split_3x5_2( - _______, KC_1, KC_2, KC_3, KC_VOLU, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, - _______, KC_4, KC_5, KC_6, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, + KC_INS, KC_1, KC_2, KC_3, KC_VOLU, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_DQUO, + KC_DEL, KC_4, KC_5, KC_6, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT, KC_CAPS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______, MO(3), QK_GESC, _______, _______ ), diff --git a/keyboards/crimsonkeyboards/resume1800/info.json b/keyboards/crimsonkeyboards/resume1800/info.json index 0a967d11d60b..23257be46e5b 100644 --- a/keyboards/crimsonkeyboards/resume1800/info.json +++ b/keyboards/crimsonkeyboards/resume1800/info.json @@ -20,8 +20,12 @@ }, "processor": "atmega32a", "bootloader": "usbasploader", + "layout_aliases": { + "LAYOUT_resume1800_ansi_all": "LAYOUT_ansi_all", + "LAYOUT_resume1800_iso_all": "LAYOUT_iso_all" + }, "layouts": { - "LAYOUT_resume1800_ansi_all": { + "LAYOUT_ansi_all": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, @@ -138,7 +142,7 @@ {"matrix": [5, 19], "x": 19, "y": 5} ] }, - "LAYOUT_resume1800_iso_all": { + "LAYOUT_iso_all": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, diff --git a/keyboards/crimsonkeyboards/resume1800/keymaps/dee/keymap.c b/keyboards/crimsonkeyboards/resume1800/keymaps/dee/keymap.c index c7f471a113a2..27e1e2bc50a3 100644 --- a/keyboards/crimsonkeyboards/resume1800/keymaps/dee/keymap.c +++ b/keyboards/crimsonkeyboards/resume1800/keymaps/dee/keymap.c @@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_resume1800_iso_all( + [0] = LAYOUT_iso_all( /* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 Print Scroll Lock Pause Insert End */ 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_F13, KC_F14, KC_PRINT_SCREEN, KC_SCRL, KC_PAUS, KC_INS, KC_END, /* ~ 1 2 3 4 5 6 7 8 9 0 - = Backspace Delete Num Lock Num / Num * Num - */ diff --git a/keyboards/crimsonkeyboards/resume1800/keymaps/default/keymap.c b/keyboards/crimsonkeyboards/resume1800/keymaps/default/keymap.c index b8adef49b0ed..a8bb2c13d514 100644 --- a/keyboards/crimsonkeyboards/resume1800/keymaps/default/keymap.c +++ b/keyboards/crimsonkeyboards/resume1800/keymaps/default/keymap.c @@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_resume1800_ansi_all( + [0] = LAYOUT_ansi_all( /* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 Print Scroll Lock Pause Insert End */ 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_F13, KC_F14, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, KC_END, /* ~ 1 2 3 4 5 6 7 8 9 0 - = Backspace Delete Num Lock Num / Num * Num - */ diff --git a/keyboards/crimsonkeyboards/resume1800/keymaps/iso/keymap.c b/keyboards/crimsonkeyboards/resume1800/keymaps/iso/keymap.c index ea08c07b1977..2f5f351f1399 100644 --- a/keyboards/crimsonkeyboards/resume1800/keymaps/iso/keymap.c +++ b/keyboards/crimsonkeyboards/resume1800/keymaps/iso/keymap.c @@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_resume1800_iso_all( + [0] = LAYOUT_iso_all( /* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 Print Scroll Lock Pause Insert End */ 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_F13, KC_F14, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, KC_END, /* ~ 1 2 3 4 5 6 7 8 9 0 - = Backspace Delete Num Lock Num / Num * Num - */ diff --git a/keyboards/crimsonkeyboards/resume1800/keymaps/via/keymap.c b/keyboards/crimsonkeyboards/resume1800/keymaps/via/keymap.c index b8adef49b0ed..a8bb2c13d514 100644 --- a/keyboards/crimsonkeyboards/resume1800/keymaps/via/keymap.c +++ b/keyboards/crimsonkeyboards/resume1800/keymaps/via/keymap.c @@ -34,7 +34,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_resume1800_ansi_all( + [0] = LAYOUT_ansi_all( /* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 Print Scroll Lock Pause Insert End */ 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_F13, KC_F14, KC_PSCR, KC_SCRL, KC_PAUS, KC_INS, KC_END, /* ~ 1 2 3 4 5 6 7 8 9 0 - = Backspace Delete Num Lock Num / Num * Num - */ diff --git a/keyboards/crkbd/crkbd.c b/keyboards/crkbd/crkbd.c index 3c1cd5565be2..2ac0e63125fa 100644 --- a/keyboards/crkbd/crkbd.c +++ b/keyboards/crkbd/crkbd.c @@ -71,6 +71,10 @@ uint8_t last_col; static const char PROGMEM code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; static void set_keylog(uint16_t keycode, keyrecord_t *record) { + // save the row and column (useful even if we can't find a keycode to show) + last_row = record->event.key.row; + last_col = record->event.key.col; + key_name = ' '; last_keycode = keycode; if (IS_QK_MOD_TAP(keycode)) { @@ -92,8 +96,6 @@ static void set_keylog(uint16_t keycode, keyrecord_t *record) { // update keylog key_name = pgm_read_byte(&code_to_name[keycode]); - last_row = record->event.key.row; - last_col = record->event.key.col; } static const char *depad_str(const char *depad_str, char depad_char) { @@ -103,11 +105,9 @@ static const char *depad_str(const char *depad_str, char depad_char) { } static void oled_render_keylog(void) { - const char *last_row_str = get_u8_str(last_row, ' '); - oled_write(depad_str(last_row_str, ' '), false); + oled_write_char('0' + last_row, false); oled_write_P(PSTR("x"), false); - const char *last_col_str = get_u8_str(last_col, ' '); - oled_write(depad_str(last_col_str, ' '), false); + oled_write_char('0' + last_col, false); oled_write_P(PSTR(", k"), false); const char *last_keycode_str = get_u16_str(last_keycode, ' '); oled_write(depad_str(last_keycode_str, ' '), false); diff --git a/keyboards/crkbd/keymaps/cameronjlarsen/config.h b/keyboards/crkbd/keymaps/cameronjlarsen/config.h deleted file mode 100644 index 1d83214a7779..000000000000 --- a/keyboards/crkbd/keymaps/cameronjlarsen/config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright 2022 Cameron Larsen <@cameronjlarsen> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - - -/* Select hand configuration */ -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#define TAPPING_FORCE_HOLD -#define TAPPING_TERM 135 - -#define CAPS_WORD_IDLE_TIMEOUT 5000 // Turn off Caps Word after 5 seconds. - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_EFFECT_BREATHING - #define RGBLIGHT_EFFECT_RAINBOW_MOOD - #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - #define RGBLIGHT_EFFECT_SNAKE - #define RGBLIGHT_EFFECT_KNIGHT - #define RGBLIGHT_EFFECT_CHRISTMAS - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - #define RGBLIGHT_EFFECT_RGB_TEST - #define RGBLIGHT_EFFECT_ALTERNATING - #define RGBLIGHT_EFFECT_TWINKLE - #define RGBLIGHT_LIMIT_VAL 120 - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 -#endif - -#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/cameronjlarsen/keymap.c b/keyboards/crkbd/keymaps/cameronjlarsen/keymap.c deleted file mode 100644 index 54ad19dc0b01..000000000000 --- a/keyboards/crkbd/keymaps/cameronjlarsen/keymap.c +++ /dev/null @@ -1,357 +0,0 @@ -/* Copyright 2022 Cameron Larsen <@cameronjlarsen> - * - * This program is free software: you can 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 QMK_KEYBOARD_H -#include -#include "features/oneshot.h" - -enum layers { - _QWERTY = 0, - SYM, - NAV, - FUN, -}; -// Aliases for readability -#define QWERTY DF(_QWERTY) -#define LA_SYM LT(SYM, KC_TAB) -#define LA_NAV MO(NAV) - -// One shot mods -enum keycodes { - OS_SHFT = QK_USER, - OS_CTRL, - OS_ALT, - OS_GUI, -}; - -// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter. -// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and -// produces the key `tap` when tapped (i.e. pressed and released). - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Base Layer: QWERTY - * - * Inspiration: - * - * https://github.com/serebrov/qmk_firmware/blob/custom/keyboards/kyria/keymaps/kyria-mini/keymap.c - * - * Notes: - * - F & J enables CAPSWORD, disables after 5 seconds - * - Left thumb CTRL and SHIFT are one shot - * - Enter is moved to ; location and ; is moved to Sym layer - * - ESC can be accessed by NAV and G - * - BKSP is accessed by NAV and Enter - * - Tab is accessed by tapping SYM layer - * - FUN layer is accessed by holding NAV and SYM layers at the same time - * - * ,----------------------------------. ,----------------------------------. - * | Q | W | E | R | T | | Y | U | I | O | P | - * |------+------+------+------+------| |------+------+------+------+------| - * | A | S | D | F | G | | H | J | K | L | Enter| - * |------+------+------+------+------. ,------+------+------+------+------| - * | Z | X | C | V | B | | N | M | , < | . > | / ? | - * `------+------+------+------+------+------. ,------+------+------+------+-------------' - * | OSM | OSM | Nav | | Sym | Space| GUI | - * | Ctrl | Shift| | | Tab | | | - * `---------------------' `--------------------' - */ - [_QWERTY] = LAYOUT_split_3x5_3( - KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , - KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_ENT , - KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N, KC_M ,KC_COMM, KC_DOT , KC_SLSH, - OS_CTRL, OS_SHFT, LA_NAV , LA_SYM , KC_SPC, OS_GUI - ), - -/* - * Sym Layer: Numbers and symbols - * - * Notes: - * - Symbols are grouped together and shifted symbols from middle row are on bottom row - * - Exception is angle brackets - * - * ,----------------------------------. ,----------------------------------. - * | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - * |------+------+------+------+------| |------+------+------+------+------| - * | ` | ( | ) | ' | = | | \ | - | [ | ] | ; | - * |------+------+------+------+------+ +------+------+------+------+------| - * | ~ | < | > | " | + | | | | _ | { | } | : | - * `-------------+------+------+------+------. ,------+------+------+------+-------------' - * | | | | | | | | - * | | | | | | | | - * `--------------------' `--------------------' - */ - [SYM] = LAYOUT_split_3x5_3( - KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , - KC_GRV , KC_LPRN, KC_RPRN, KC_QUOT, KC_EQL , KC_BSLS, KC_MINS, KC_LBRC, KC_RBRC, KC_SCLN, - KC_TILD, KC_LABK, KC_RABK, KC_DQUO, KC_PLUS, KC_PIPE, KC_UNDS, KC_LCBR, KC_RCBR, KC_COLN, - _______, _______, _______, _______, _______, _______ - ), - -/* - * Nav Layer: Navigation, Media - * - * Notes: - * - Vim style navigation keys - * - Volume and Media Keys - * - BKSP on Enter - * - DEL on / - * - Esc on G - * - * ,----------------------------------. ,----------------------------------. - * | | | | BriUp| BriDn| | Home | PgDn | PgUp | End |PrtScr| - * |------+------+------+------+------| |------+------+------+------+------| - * | GUI | Alt | Ctrl | Shift| Esc | | ← | ↓ | ↑ | → | Bksp | - * |------+------+------+------+------+ +------+------+------+------+------| - * | | Vol- | Mute | Vol+ |NumLck| | MPrev| MPlay| MStop| MNext|Delete| - * `-------------+------+------+------+------. ,------+------+------+------+-------------' - * | | | | | | | | - * | | | | | | | | - * `--------------------' `--------------------' - */ - [NAV] = LAYOUT_split_3x5_3( - _______, _______, _______, KC_BRIU, KC_BRID, KC_HOME, KC_PGDN, KC_PGUP, KC_END , KC_PSCR, - OS_GUI , OS_ALT , OS_CTRL, OS_SHFT, KC_ESC , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_BSPC, - _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_NUM , KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_DEL , - _______, _______, _______, _______, _______, _______ - ), - -/* - * Function Layer: Function keys - * - * Notes: - * - F1-F10 on bottom row - * - F11-F12 on index finger inner row - * - Homerow mods - * - Num keys on top row - * - * ,----------------------------------. ,----------------------------------. - * | 1 ! | 2 @ | 3 # | 4 $ | 5 % | | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - * |------+------+------+------+------| |------+------+------+------+------| - * | GUI | Alt | Ctrl | Shift| F11 | | F12 | Shift| Ctrl | Alt | GUI | - * |------+------+------+------+------+ +------+------+------+------+------| - * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | - * `-------------+------+------+------+------. ,------+------+------+------+-------------' - * | | | | | | | | - * | | | | | | | | - * `--------------------' `--------------------' - */ - [FUN] = LAYOUT_split_3x5_3( - KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , - OS_GUI , OS_ALT , OS_CTRL, OS_SHFT, KC_F11 , KC_F12 , OS_SHFT, OS_CTRL, OS_ALT , OS_GUI , - KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , - _______, _______, _______, _______, _______, _______ - ), - -}; - -enum combo_events { - CAPS_COMBO -}; - -const uint16_t PROGMEM caps_combo[] = {KC_F, KC_J, COMBO_END}; - -combo_t key_combos[] = { - [CAPS_COMBO] = COMBO_ACTION(caps_combo), - // Other combos...C -}; - -void process_combo_event(uint16_t combo_index, bool pressed) { - switch(combo_index) { - case CAPS_COMBO: - if (pressed) { - caps_word_on(); // Activate Caps Word! - } - break; - - // Other combos... - } -} - -bool is_oneshot_cancel_key(uint16_t keycode){ - switch (keycode) { - case LA_NAV: - return true; - default: - return false; - } -} - -bool is_oneshot_ignored_key(uint16_t keycode){ - switch (keycode) { - case LA_NAV: - case LA_SYM: - case OS_SHFT: - case OS_CTRL: - case OS_ALT: - case OS_GUI: - return true; - default: - return false; - } -} - -oneshot_state os_shft_state = os_up_unqueued; -oneshot_state os_ctrl_state = os_up_unqueued; -oneshot_state os_alt_state = os_up_unqueued; -oneshot_state os_cmd_state = os_up_unqueued; - - - -bool caps_word_press_user(uint16_t keycode) { - switch (keycode) { - // Keycodes that continue Caps Word, with shift applied. - case KC_A ... KC_Z: - case KC_MINS: - add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key. - return true; - - // Keycodes that continue Caps Word, without shifting. - case KC_1 ... KC_0: - case KC_BSPC: - case KC_DEL: - case KC_UNDS: - return true; - - default: - return false; // Deactivate Caps Word. - } -} - - -layer_state_t layer_state_set_user(layer_state_t state){ - return update_tri_layer_state(state, SYM, NAV, FUN); -} - -#ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_keyboard_master()) { - return OLED_ROTATION_180; // flips the display 180 degrees if offhand - } - return rotation; -} - -void oled_render_layer_state(void) { - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state | default_layer_state)) { - case _QWERTY: - oled_write_ln_P(PSTR("QWERTY"), false); - break; - case SYM: - oled_write_ln_P(PSTR("Sym"), false); - break; - case NAV: - oled_write_ln_P(PSTR("Nav"), false); - break; - case FUN: - oled_write_ln_P(PSTR("Function"), false); - break; - default: - oled_write_ln_P(PSTR("Undefined"), false); - } -} - -char keylog_str[24] = {}; - -const char code_to_name[60] = { - ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', - 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', - '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; - -void set_keylog(uint16_t keycode, keyrecord_t *record) { - char name = ' '; - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || - (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } - if (keycode < 60) { - name = code_to_name[keycode]; - } - - // update keylog - snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", - record->event.key.row, record->event.key.col, - keycode, name); -} - -void oled_render_keylog(void) { - oled_write(keylog_str, false); -} - -void render_bootmagic_status(bool status) { - /* Show Ctrl-Gui Swap options */ - static const char PROGMEM logo[][2][3] = { - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - }; - if (status) { - oled_write_ln_P(logo[0][0], false); - oled_write_ln_P(logo[0][1], false); - } else { - oled_write_ln_P(logo[1][0], false); - oled_write_ln_P(logo[1][1], false); - } -} - -void oled_render_logo(void) { - static const char PROGMEM crkbd_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(crkbd_logo, false); -} - -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) { - if (!process_caps_word(keycode, record)) { return false; } - // Your macros ... - update_oneshot( - &os_shft_state, KC_LSFT, OS_SHFT, - keycode, record - ); - - update_oneshot( - &os_ctrl_state, KC_LCTL, OS_CTRL, - keycode, record - ); - - update_oneshot( - &os_alt_state, KC_LALT, OS_ALT, - keycode, record - ); - - update_oneshot( - &os_cmd_state, KC_LGUI, OS_GUI, - keycode, record - ); - if (record->event.pressed) { - set_keylog(keycode, record); - } - return true; -} - -#endif diff --git a/keyboards/crkbd/keymaps/cameronjlarsen/rules.mk b/keyboards/crkbd/keymaps/cameronjlarsen/rules.mk deleted file mode 100644 index f0b00f3cf01b..000000000000 --- a/keyboards/crkbd/keymaps/cameronjlarsen/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -BOOTMAGIC_ENABLE = no -BOOLOADER = atmel-dfu -OLED_ENABLE = yes -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -COMMAND_ENABLE = no # Disables the command feature -COMBO_ENABLE = yes -MOUSEKEY_ENABLE = no -CONSOLE_ENABLE = no -AUDIO_ENABLE = no -MIDI_ENABLE = no -BLUETOOTH_ENABLE = no -BACKLIGHT_ENABLE = no -CAPS_WORD_ENABLE = yes -CUSTOM_ONESHOT_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/curry/config.h b/keyboards/crkbd/keymaps/curry/config.h deleted file mode 100644 index a82b4439cfdc..000000000000 --- a/keyboards/crkbd/keymaps/curry/config.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#define EE_HANDS - -#define OLED_DISABLE_TIMEOUT -#define TAPPING_TERM_PER_KEY - -#if defined(RGB_MATRIX_ENABLE) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 -# define RGB_MATRIX_HUE_STEP 8 -# define RGB_MATRIX_SAT_STEP 8 -# define RGB_MATRIX_VAL_STEP 5 -# define RGB_MATRIX_SPD_STEP 10 -#endif - -// comment out unnecessary layouts -#define ENABLE_QWERTY -#define ENABLE_COLEMAK -#define ENABLE_DVORAK -#define ENABLE_WORKMAN diff --git a/keyboards/crkbd/keymaps/curry/keymap.c b/keyboards/crkbd/keymaps/curry/keymap.c deleted file mode 100644 index 5157a223797a..000000000000 --- a/keyboards/crkbd/keymaps/curry/keymap.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "curry.h" - -#define LAYOUT_crkbd_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_wrapper( \ - KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ - MT_TAB, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \ - OS_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, OS_RSFT, \ - QK_LEAD,OS_LALT, SP_LWER, ET_RAIS, KC_BSPC, KC_RGUI \ - ) -#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -#if defined(ENABLE_QWERTY) - [_QWERTY] = LAYOUT_crkbd_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), -#endif - -#if defined(ENABLE_COLEMAK) - [_COLEMAK] = LAYOUT_crkbd_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), -#endif - -#if defined(ENABLE_DVORAK) - [_DVORAK] = LAYOUT_crkbd_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), -#endif - -#if defined(ENABLE_WORKMAN) - [_WORKMAN] = LAYOUT_crkbd_base_wrapper( - _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, - _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, - _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ - ), -#endif - - [_MODS] = LAYOUT_wrapper( - _______, ___________________BLANK___________________, ___________________BLANK___________________, _______, - _______, ___________________BLANK___________________, ___________________BLANK___________________, _______, - KC_LSFT, ___________________BLANK___________________, ___________________BLANK___________________, KC_RSFT, - _______, _______, _______, _______, _______, _______ - ), - - [_LOWER] = LAYOUT_wrapper( - KC_F11, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F12, - KC_GRV, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, - _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, _______, _______ - ), - - [_RAISE] = LAYOUT_wrapper( - _______, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, - _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, _______, _______ - ), - - [_ADJUST] = LAYOUT_wrapper( - KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, - VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EE_CLR, - MG_NKRO, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL, - _______, _______, _______, _______, TG_MODS, _______ - ) -}; diff --git a/keyboards/crkbd/keymaps/curry/rules.mk b/keyboards/crkbd/keymaps/curry/rules.mk deleted file mode 100644 index fc0e7e1924aa..000000000000 --- a/keyboards/crkbd/keymaps/curry/rules.mk +++ /dev/null @@ -1,16 +0,0 @@ -# Build Options -# 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 # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no -CONSOLE_ENABLE = no -COMMAND_ENABLE = no - -RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes - -OLED_ENABLE = yes - -BOOTLOADER = atmel-dfu -SPLIT_TRANSPORT = mirror diff --git a/keyboards/crkbd/keymaps/devdev/config.h b/keyboards/crkbd/keymaps/devdev/config.h deleted file mode 100644 index 337a86df8e9d..000000000000 --- a/keyboards/crkbd/keymaps/devdev/config.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert -Copyright 2021 Dane Evans - - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -//#define USE_MATRIX_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#define CUSTOM_FONT - -#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding - -#define QUICK_TAP_TERM 0 -#define TAPPING_TERM 200 - -#define RGBLIGHT_SLEEP -// -#define RGBLIGHT_LAYERS - -#ifdef RGBLIGHT_ENABLE - #undef RGBLED_NUM - - #define RGBLIGHT_EFFECT_BREATHING - #define RGBLIGHT_EFFECT_RAINBOW_MOOD - #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - #define RGBLIGHT_EFFECT_SNAKE - #define RGBLIGHT_EFFECT_KNIGHT - //#define RGBLIGHT_EFFECT_CHRISTMAS - //#define RGBLIGHT_EFFECT_STATIC_GRADIENT - //#define RGBLIGHT_EFFECT_RGB_TEST - //#define RGBLIGHT_EFFECT_ALTERNATING - //#define RGBLIGHT_EFFECT_TWINKLE - - //#define RGBLED_NUM 54 - //#define RGBLED_SPLIT 27 - //#define RGBLED_SPLIT { 27, 27 } // haven't figured out how to use this yet - - #define RGBLED_NUM 27 - #define RGBLIGHT_LIMIT_VAL 120 - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 -#endif - -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_KEYPRESSES // reacts to keypresses -// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) -# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended -# define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) -// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. - -#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT - -# define RGB_MATRIX_HUE_STEP 8 -# define RGB_MATRIX_SAT_STEP 8 -# define RGB_MATRIX_VAL_STEP 8 -# define RGB_MATRIX_SPD_STEP 10 - -// 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 deleted file mode 100644 index 0327101157f2..000000000000 --- a/keyboards/crkbd/keymaps/devdev/keymap.c +++ /dev/null @@ -1,396 +0,0 @@ -/* Copyright 2020 Dane Evans - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// CRKBD - -#include QMK_KEYBOARD_H - - -char layer_state_str[24]; - - - enum userspace_layers { - _DEFAULTS = 0, - _COLEMAK = 0, - _COLEMAKDH, - _QWERTY, - _NUM, - _SYM, - _COMMAND, - _NUMPAD, - _SWITCH, - _MOVE, - -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - // colemak - [_COLEMAK] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - LT(_NUMPAD,KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, LT(_SWITCH,KC_J), KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I,LT(_NUMPAD,KC_O),KC_QUOT, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), KC_LALT - //`--------------------------' `--------------------------' - ), - - // colemak DH - [_COLEMAKDH] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - LT(_NUMPAD,KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_B, LT(_SWITCH,KC_J), KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I,LT(_NUMPAD,KC_O),KC_QUOT, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_LCTL, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LGUI, MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), KC_LALT - //`--------------------------' `--------------------------' - ), - - // qwerty - [_QWERTY] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, LT(_SWITCH,KC_Y), KC_U, KC_I, KC_O, KC_P, KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(_NUMPAD,KC_SCLN), KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ), - - - - // numbers - L thumb - [_NUM] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_PGUP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_DEL, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_COMMAND), KC_TRNS - //`--------------------------' `--------------------------' - ), - - // symbols - R thumb - [_SYM] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, MO(_COMMAND), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ), - - // commands - both thumbs - [_COMMAND] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, DF(1), DF(0), C(G(KC_LEFT)), KC_NO, KC_NO, C(G(KC_RGHT)), KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, DF(2), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ), - - // numpad - [_NUMPAD] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - LT(0,KC_NO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_DEL, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - OSM(MOD_MEH), KC_NO, KC_TRNS, KC_ENT, KC_P0, KC_PDOT - //`--------------------------' `--------------------------' - ), - - // layer switcher - [_SWITCH] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, QK_BOOT, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EE_CLR, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_SYSTEM_SLEEP, KC_NO, KC_BRID, 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 - //`--------------------------' `--------------------------' - - ), - - // amovement - [_MOVE] = LAYOUT( - //,-----------------------------------------------------. ,-----------------------------------------------------. - LT(0,KC_NO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_ENT, KC_RGHT, KC_NO, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_APP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_DOWN, KC_PGDN, KC_DEL, KC_NO, KC_NO, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO - //`--------------------------' `--------------------------' - ) - -}; - - -// it appears that these are different to the board numbering. -// when you specify n here, it lightss up n+1 on the board diagram - actually may be an entirely different pattern - -// _QWERTY, -// Light on inner column and underglow -const rgblight_segment_t PROGMEM layer_qwerty_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 10, HSV_AZURE} -); - -// _COLEMAKDH, -// Light on inner column and underglow -const rgblight_segment_t PROGMEM layer_colemakdh_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 10, HSV_RED} -); - -// _NUM, -// Light on inner column and underglow -const rgblight_segment_t PROGMEM layer_num_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 10, HSV_TEAL} -); -// _SYMBOL, -// Light on inner column and underglow -const rgblight_segment_t PROGMEM layer_symbol_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 10, HSV_BLUE} -); -// _COMMAND, -// Light on inner column and underglow -const rgblight_segment_t PROGMEM layer_command_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 10, HSV_PURPLE} -); - - -//_NUMPAD -//havent worked out how to do each side individually either -const rgblight_segment_t PROGMEM layer_numpad_lights[] = RGBLIGHT_LAYER_SEGMENTS( -{0, 10, HSV_ORANGE} -); -const rgblight_segment_t PROGMEM layer_numpad_rh_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 10, HSV_ORANGE}, - {10, 5, HSV_BLUE}, - {15, 3, HSV_BLUE}, - {18, 3, HSV_BLUE} -); - -// _MOVE, -// Light on inner column and underglow -const rgblight_segment_t PROGMEM layer_move_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 10, HSV_PINK} -); - -// _SWITCHER // light up top row -const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 6, HSV_GREEN}, - {9, 2, HSV_GREEN}, - {17, 2, HSV_GREEN}, - {23, 2, HSV_GREEN} -); - - -// Now define the array of layers. Later layers take precedence -const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( - layer_qwerty_lights, - layer_colemakdh_lights, - layer_num_lights,// overrides layer 1 - layer_symbol_lights, - layer_command_lights, - layer_numpad_lights, - layer_numpad_rh_lights, - layer_move_lights, - layer_switcher_lights // Overrides other layers -); - -void keyboard_post_init_user(void) { - // Enable the LED layers - rgblight_layers = my_rgb_layers; - rgblight_mode(10);// haven't found a way to set this in a more useful way - -} - - -layer_state_t layer_state_set_user(layer_state_t state) { - rgblight_set_layer_state(0, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY)); - rgblight_set_layer_state(1, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY)); - - rgblight_set_layer_state(2, layer_state_cmp(state, _NUM)); - rgblight_set_layer_state(3, layer_state_cmp(state, _SYM)); - rgblight_set_layer_state(4, layer_state_cmp(state, _COMMAND)); - rgblight_set_layer_state(5, layer_state_cmp(state, _NUMPAD)); - if (!is_keyboard_master()) - rgblight_set_layer_state(6, layer_state_cmp(state, _NUMPAD)); - rgblight_set_layer_state(7, layer_state_cmp(state, _MOVE)); - rgblight_set_layer_state(8, layer_state_cmp(state, _SWITCH)); - return state; -} - -/* -bool led_update_user(led_t led_state) { - rgblight_set_layer_state(0, led_state.caps_lock); - return true; -} -*/ - -#ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_keyboard_master()) { - return OLED_ROTATION_180; // flips the display 180 degrees if offhand - } - return rotation; -} -// When add source files to SRC in rules.mk, you can use functions. -const char *read_layer_state(void); -const char *read_logo(void); -void set_keylog(uint16_t keycode, keyrecord_t *record); -const char *read_keylog(void); -const char *read_keylogs(void); - - -const char *read_mode_icon(bool swap); -// const char *read_host_led_state(void); -// void set_timelog(void); -// const char *read_timelog(void); - - -void oled_render_layer_state(void) { - char string [24]; - switch (get_highest_layer(default_layer_state|layer_state)) - { - case _QWERTY: - oled_write_ln_P(PSTR("Layer: QWERTY"),false); - break; - case _COLEMAK: - oled_write_ln_P(PSTR("Layer: COLEMAK"),false); - break; - case _COLEMAKDH: - oled_write_ln_P(PSTR("Layer: COLEMAKDH"),false); - break; - case _NUM: - oled_write_ln_P(PSTR("Layer: Numbers"),false); - break; - case _SYM: - oled_write_ln_P(PSTR("Layer: Symbols"),false); - break; - case _COMMAND: - oled_write_ln_P(PSTR("Layer: Command"),false); - break; - case _NUMPAD: - oled_write_ln_P(PSTR("Layer: Numpad"),false); - break; - case _MOVE: - oled_write_ln_P(PSTR("Layer: Movement"),false); - break; - case _SWITCH: - oled_write_ln_P(PSTR("Layer: Layer Switch"),false); - break; - default: -#if defined (LAYER_STATE_32BIT) - snprintf(string, sizeof(string), "%ld",layer_state); -#else - snprintf(string, sizeof(string), "%d",layer_state); -#endif - oled_write_P(PSTR("Layer: Undef-"),false); - oled_write_ln(string, false); - } -} - -char keylog_str[24] = {}; -const char code_to_name[60] = { - ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', - 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', - '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', - 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', - '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; - -void set_keylog(uint16_t keycode, keyrecord_t *record) { - char name = ' '; - if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || - (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } - if (keycode < 60) { - name = code_to_name[keycode]; - } - - // update keylog - snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c", - record->event.key.row, record->event.key.col, - keycode, name); -} - -void oled_render_keylog(void) { - oled_write(keylog_str, false); -} - -void render_bootmagic_status(bool status) { - /* Show Ctrl-Gui Swap options */ - static const char PROGMEM logo[][2][3] = { - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - }; - if (status) { - oled_write_ln_P(logo[0][0], false); - oled_write_ln_P(logo[0][1], false); - } else { - oled_write_ln_P(logo[1][0], false); - oled_write_ln_P(logo[1][1], false); - } -} - -void oled_render_logo(void) { - static const char PROGMEM crkbd_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(crkbd_logo, false); -} - -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) { - if (record->event.pressed) { - set_keylog(keycode, record); - } - return true; -} -#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/devdev/rules.mk b/keyboards/crkbd/keymaps/devdev/rules.mk deleted file mode 100644 index 4d53cc756414..000000000000 --- a/keyboards/crkbd/keymaps/devdev/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -RGBLIGHT_ENABLE = yes -OLED_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/edvorakjp/config.h b/keyboards/crkbd/keymaps/edvorakjp/config.h deleted file mode 100644 index 94896f689808..000000000000 --- a/keyboards/crkbd/keymaps/edvorakjp/config.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#define SWAP_SCLN - -// #define QUICK_TAP_TERM 0 -#define TAPPING_TERM 300 - -#ifdef RGBLIGHT_ENABLE -# undef RGBLED_NUM -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -# define RGBLED_NUM 27 -# define RGBLIGHT_LIMIT_VAL 100 -# define RGBLIGHT_HUE_STEP 10 -# define RGBLIGHT_SAT_STEP 17 -# define RGBLIGHT_VAL_STEP 17 -#endif // RGBLIGHT_ENABLE - -#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/edvorakjp/keymap.c b/keyboards/crkbd/keymaps/edvorakjp/keymap.c deleted file mode 100644 index 0cc8a0c4baac..000000000000 --- a/keyboards/crkbd/keymaps/edvorakjp/keymap.c +++ /dev/null @@ -1,67 +0,0 @@ -#include QMK_KEYBOARD_H -#ifdef PROTOCOL_LUFA -# include "split_util.h" -#endif - -#include "edvorakjp.h" - -#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [L_EDVORAKJP_BASE] = LAYOUT_wrapper( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT - //`--------------------------' `--------------------------' - ), - - [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( - //,-----------------------------------------------------. ,-----------------------------------------------------. - XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS - //`--------------------------' `--------------------------' - ), - - [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( - //,-----------------------------------------------------. ,-----------------------------------------------------. - XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ) -}; -// clang-format on - -#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT -layer_state_t layer_state_set_keymap(layer_state_t state) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - switch (get_highest_layer(state)) { - case L_EDVORAKJP_LOWER: - rgblight_sethsv_noeeprom(HSV_RED); - break; - case L_EDVORAKJP_RAISE: - rgblight_sethsv_noeeprom(HSV_GREEN); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv(HSV_RED); - break; - } - return state; -} -#endif diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c deleted file mode 100644 index cd75f8e27799..000000000000 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.c +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include -#include "oled.h" - -#ifdef OLED_ENABLE -void render_host_led_state(void) { oled_write(read_host_led_state(), false); } - -void render_layer_state(void) { - char layer_name[17]; - oled_write_P(PSTR("Layer: "), false); - - switch (get_highest_layer(layer_state)) { - case L_EDVORAKJP_BASE: - oled_write_ln_P(PSTR("Default"), false); - break; - case L_EDVORAKJP_LOWER: - oled_write_ln_P(PSTR("Lower"), false); - break; - case L_EDVORAKJP_RAISE: - oled_write_ln_P(PSTR("Raise"), false); - break; - default: - snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); - oled_write_ln(layer_name, false); - } -} - -void render_logo(void) { oled_write(read_logo(), false); } - -void render_mode_icon(bool is_windows) { - static const char logo[][2][3] = { - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - }; - static char mode_icon[10]; - - snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]); - oled_write(mode_icon, false); -} - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - // flips the display 180 degrees if offhand - return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180; -} - -bool oled_task_user(void) { - if (is_keyboard_left()) { - render_mode_icon(!get_enable_kc_lang()); - render_layer_state(); - render_host_led_state(); - } else { - render_logo(); - } - return false; -} -#endif // OLED_ENABLE diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.h b/keyboards/crkbd/keymaps/edvorakjp/oled.h deleted file mode 100644 index d9939c83a0ca..000000000000 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "edvorakjp.h" - -extern bool japanese_mode; - -// method prototypes defined in crkbd/lib -extern const char *read_host_led_state(void); -extern const char *read_logo(void); -extern const char *read_mode_icon(bool swap); - -void render_host_led_state(void); -void render_layer_state(void); -void render_logo(void); -void render_mode_icon(bool is_windows); -oled_rotation_t oled_init_user(oled_rotation_t rotation); -void oled_task_user(void); diff --git a/keyboards/crkbd/keymaps/edvorakjp/readme.md b/keyboards/crkbd/keymaps/edvorakjp/readme.md deleted file mode 100644 index dd406523d241..000000000000 --- a/keyboards/crkbd/keymaps/edvorakjp/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# edvorakjp - -Epaew's Enhanced Dvorak layout for Japanese Programmer -see [here](/users/edvorakjp) for more informations. - -## License - -Copyright 2018 Ryo Maeda epaew.333@gmail.com @epaew - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/keyboards/crkbd/keymaps/edvorakjp/rules.mk b/keyboards/crkbd/keymaps/edvorakjp/rules.mk deleted file mode 100644 index c019c307569a..000000000000 --- a/keyboards/crkbd/keymaps/edvorakjp/rules.mk +++ /dev/null @@ -1,28 +0,0 @@ -# Build Options -# 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 # 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) -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SWAP_HANDS_ENABLE = no # Enable one-hand typing -TAP_DANCE_ENABLE = yes -OLED_ENABLE = yes - -# 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 you want to change the display of OLED, you need to change here -SRC += ./lib/host_led_state_reader.c \ - ./lib/logo_reader.c \ - ./lib/mode_icon_reader.c \ - oled.c diff --git a/keyboards/crkbd/keymaps/ericgebhart/config.h b/keyboards/crkbd/keymaps/ericgebhart/config.h deleted file mode 100755 index d1844f68070d..000000000000 --- a/keyboards/crkbd/keymaps/ericgebhart/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* -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 - -// otherwise the other promicro v3 isn't found -#define SPLIT_USB_DETECT diff --git a/keyboards/crkbd/keymaps/ericgebhart/keymap.c b/keyboards/crkbd/keymaps/ericgebhart/keymap.c deleted file mode 100644 index c534fe3c6d34..000000000000 --- a/keyboards/crkbd/keymaps/ericgebhart/keymap.c +++ /dev/null @@ -1,18 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -// See: users/ericgebhart. diff --git a/keyboards/crkbd/keymaps/hvp/config.h b/keyboards/crkbd/keymaps/hvp/config.h deleted file mode 100644 index 1a9ac694985c..000000000000 --- a/keyboards/crkbd/keymaps/hvp/config.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -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 - -//#define USE_MATRIX_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -//#define QUICK_TAP_TERM 0 -//#define TAPPING_TERM 100 - -#define TAPPING_TERM 150 -#define PERMISSIVE_HOLD - -#ifdef RGBLIGHT_ENABLE -# undef RGBLED_NUM -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_RAINBOW_MOOD -# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -# define RGBLIGHT_EFFECT_SNAKE -# define RGBLIGHT_EFFECT_KNIGHT -# define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -# define RGBLIGHT_EFFECT_RGB_TEST -# define RGBLIGHT_EFFECT_ALTERNATING -# define RGBLIGHT_EFFECT_TWINKLE -# define RGBLED_NUM 27 -# define RGBLIGHT_LIMIT_VAL 120 -# define RGBLIGHT_HUE_STEP 10 -# define RGBLIGHT_SAT_STEP 17 -# define RGBLIGHT_VAL_STEP 17 -#endif diff --git a/keyboards/crkbd/keymaps/hvp/keymap.c b/keyboards/crkbd/keymaps/hvp/keymap.c deleted file mode 100644 index fc57fc1bb067..000000000000 --- a/keyboards/crkbd/keymaps/hvp/keymap.c +++ /dev/null @@ -1,160 +0,0 @@ -#include QMK_KEYBOARD_H -#include "hvp.c" - -#ifdef RGBLIGHT_ENABLE -//Following line allows macro to read current RGB settings -extern rgblight_config_t rgblight_config; -#endif - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 -#define _ADJUST 3 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, - ADJUST -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_split_3x6_3( - //,-----------------------------------------. ,-----------------------------------------. - LT(_ADJUST,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_BSPC, - //|------+------+------+------+------+------| |------+------+------+------+------+------| - LSFT_T(KC_ESC), KC_A, KC_S, KC_D, LT(3,KC_F), KC_G, KC_H, KC_J, KC_K, KC_L,TD(TD1),TD(TD2), - //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM,KC_DOT,TD(TD3),SC_SENT, - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - KC_LGUI, LT(1,KC_SPC),MT(MOD_LSFT, KC_SPC), MT(MOD_LSFT,KC_ENT), LT(2,KC_SPC),KC_LALT - //`--------------------' `--------------------' - ), - - [_RAISE] = LAYOUT_split_3x6_3( - //,-----------------------------------------. ,-----------------------------------------. - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_BSPC, - //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_DEL, _______, _______, _______, _______, _______, _______,KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_LCTL, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _______, _______, _______, _______, _______, _______ - //`--------------------' `--------------------' - ), - - [_LOWER] = LAYOUT_split_3x6_3( - //,-----------------------------------------. ,-----------------------------------------. - KC_TAB,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_BSPC, - //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_DEL, _______, _______, _______, _______, _______, _______,KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSLS, - //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_LCTL, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TILD, - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _______, _______, _______, _______, _______, _______ - //`--------------------' `--------------------' - ), - - [_ADJUST] = LAYOUT_split_3x6_3( - //,-----------------------------------------. ,-----------------------------------------. - _______,KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - //|------+------+------+------+------+------| |------+------+------+------+------+------| - KC_F1,_______,_______,D_NAVI,_______,_______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, - //|------+------+------+------+------+------| |------+------+------+------+------+------| - QK_BOOT,KC_PSCR,_______,_______,_______,_______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, - //|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - _______, KC_VOLD,KC_MPLY, KC_MNXT, KC_VOLU,_______ - //`--------------------' `--------------------' - ) -}; - -int RGB_current_mode; - -// Setting ADJUST layer RGB back to default -void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - layer_on(layer3); - } else { - layer_off(layer3); - } -} - -void matrix_init_user(void) { - #ifdef RGBLIGHT_ENABLE - RGB_current_mode = rgblight_config.mode; - #endif -} - -#ifdef OLED_ENABLE - -// When add source files to SRC in rules.mk, you can use functions. -const char *read_layer_state(void); -const char *read_logo(void); -void set_keylog(uint16_t keycode, keyrecord_t *record); -const char *read_keylog(void); -const char *read_keylogs(void); - -// const char *read_mode_icon(bool swap); -// const char *read_host_led_state(void); -// void set_timelog(void); -// const char *read_timelog(void); - -bool oled_task_user(void) { - if (is_keyboard_master()) { - // If you want to change the display of OLED, you need to change here - oled_write(read_layer_state(), false); - oled_write(read_keylog(), false); - //oled_write_ln(read_keylogs(), false); - //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false); - //oled_write_ln(read_host_led_state()), false; - //oled_write_ln(read_timelog(), false); - } else { - oled_write(read_logo(), false); - } - return false; -} - -#endif - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { -#ifdef OLED_ENABLE - set_keylog(keycode, record); -#endif - // set_timelog(); - } - - switch (keycode) { - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); - } - return false; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; - } - return true; -} diff --git a/keyboards/crkbd/keymaps/hvp/readme.md b/keyboards/crkbd/keymaps/hvp/readme.md deleted file mode 100644 index 3ccdc12193eb..000000000000 --- a/keyboards/crkbd/keymaps/hvp/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -Keyboard: Corne Keyboard (CRKBD) -Keys: A split keyboard with 3x6 vertically staggered keys and 3 thumb keys. -Layout: Swedish characters on main layer using tapdance. Built for eurkey keyboard layout. -Flash instructions: Flash using avrdude, will req the hvp user space to compile. - -> make crkbd:hvp:avrdude - -Links: -Github - https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd -Eurkey layout - https://eurkey.steffen.bruentjen.eu/ diff --git a/keyboards/crkbd/keymaps/hvp/rules.mk b/keyboards/crkbd/keymaps/hvp/rules.mk deleted file mode 100644 index 3091ed20af44..000000000000 --- a/keyboards/crkbd/keymaps/hvp/rules.mk +++ /dev/null @@ -1,13 +0,0 @@ -# If you want to change the display of OLED, you need to change here -SRC += ./lib/rgb_state_reader.c \ - ./lib/layer_state_reader.c \ - ./lib/logo_reader.c \ - ./lib/keylogger.c \ - # ./lib/mode_icon_reader.c \ - # ./lib/host_led_state_reader.c \ - # ./lib/timelogger.c \ - -TAP_DANCE_ENABLE = yes -EXTRAKEY_ENABLE = yes # Audio control and System control -OLED_ENABLE = yes -# LOCAL_GLCDFONT = yes diff --git a/keyboards/crkbd/keymaps/jarred/config.h b/keyboards/crkbd/keymaps/jarred/config.h deleted file mode 100644 index c95deb1abb14..000000000000 --- a/keyboards/crkbd/keymaps/jarred/config.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -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 - -//#define USE_MATRIX_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -//#define QUICK_TAP_TERM 0 -//#define TAPPING_TERM 100 - -#undef RGBLED_NUM -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#define RGBLED_NUM 27 -#define RGBLIGHT_LIMIT_VAL 120 -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 diff --git a/keyboards/crkbd/keymaps/jarred/keymap.c b/keyboards/crkbd/keymaps/jarred/keymap.c deleted file mode 100644 index b0e181b37f2e..000000000000 --- a/keyboards/crkbd/keymaps/jarred/keymap.c +++ /dev/null @@ -1,152 +0,0 @@ -#include QMK_KEYBOARD_H -#include "jarred.h" - -#ifdef PROTOCOL_LUFA - #include "lufa.h" - #include "split_util.h" -#endif - -#ifdef RGBLIGHT_ENABLE -//Following line allows macro to read current RGB settings -extern rgblight_config_t rgblight_config; -#endif - -#define LAYOUT_crkbd_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \ - K31, K32, K33, K34, K35, K36 \ - ) - -#define LAYOUT_crkbd_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) - -#define QWERTY_4_CRKBD KC_LCTL, MO(_LW), KC_SPC, KC_ENT, MO(_LW), KC_RALT - -#define BLANK_4_CRKBD KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = LAYOUT_crkbd_wrapper( - QWERTY_1_12, - QWERTY_2_12, - QWERTY_3_12, - QWERTY_4_DOX - ), - - [_LW] = LAYOUT_crkbd_wrapper( - LOWER_1_12, - LOWER_2_12, - LOWER_3_12, - LOWER_4_DOX - ), - - [_NV] = LAYOUT_crkbd_wrapper( - NAV_1_12, - NAV_2_12, - NAV_3_12, - NAV_4_DOX - ), - - [_NP] = LAYOUT_crkbd_wrapper( - NUMPAD_1_12, - NUMPAD_2_12, - NUMPAD_3_12, - NUMPAD_4_DOX - ), - - [_MS] = LAYOUT_crkbd_wrapper( - MOUSE_1_12, - MOUSE_2_12, - MOUSE_3_12, - MOUSE_4_DOX - ) -}; - -#ifdef OLED_ENABLE - -// When add source files to SRC in rules.mk, you can use functions. -const char *read_logo(void); -void set_keylog(uint16_t keycode, keyrecord_t *record); -const char *read_keylog(void); -const char *read_keylogs(void); - -char matrix_line_str[24]; - -const char *read_layer_state(void) { - uint8_t layer = get_highest_layer(layer_state); - - strcpy(matrix_line_str, "Layer: "); - - switch (layer) - { - case _QW: - strcat(matrix_line_str, "Default"); - break; - case _LW: - strcat(matrix_line_str, "Lower"); - break; - case _NV: - strcat(matrix_line_str, "Navigation"); - break; - case _NP: - strcat(matrix_line_str, "Adjust"); - break; - case _MS: - strcat(matrix_line_str, "Mouse"); - break; - default: - sprintf(matrix_line_str + strlen(matrix_line_str), "Unknown (%d)", layer); - } - - return matrix_line_str; -} - -const char *read_usb_state(void) { - - strcpy(matrix_line_str, "USB : "); - - switch (USB_DeviceState) { - case DEVICE_STATE_Unattached: - strcat(matrix_line_str, "Unattached"); - break; - case DEVICE_STATE_Suspended: - strcat(matrix_line_str, "Suspended"); - break; - case DEVICE_STATE_Configured: - strcat(matrix_line_str, "Connected"); - break; - case DEVICE_STATE_Powered: - strcat(matrix_line_str, "Powered"); - break; - case DEVICE_STATE_Default: - strcat(matrix_line_str, "Default"); - break; - case DEVICE_STATE_Addressed: - strcat(matrix_line_str, "Addressed"); - break; - default: - strcat(matrix_line_str, "Invalid"); - } - - return matrix_line_str; -} - -bool oled_task_user(void) { - if (is_keyboard_master()) { - oled_write_ln(read_layer_state(), false); - oled_write_ln(read_usb_state(), false); - oled_write_ln(read_keylogs(), false); - } else { - oled_write(read_logo(), false); - } - return false; -} - -#endif - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - set_keylog(keycode, record); - } - - return true; -} diff --git a/keyboards/crkbd/keymaps/jarred/readme.md b/keyboards/crkbd/keymaps/jarred/readme.md deleted file mode 100644 index 15e355bbca1d..000000000000 --- a/keyboards/crkbd/keymaps/jarred/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Jarred's CRKBD Layout - -Check out [user space readme](../../../../users/jarred/readme.md) for more info - -# Build - -``` -make crkbd:jarred:avrdude -``` diff --git a/keyboards/crkbd/keymaps/jarred/rules.mk b/keyboards/crkbd/keymaps/jarred/rules.mk deleted file mode 100644 index efa378b09911..000000000000 --- a/keyboards/crkbd/keymaps/jarred/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ - -# Build Options -# 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 # 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) -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SWAP_HANDS_ENABLE = no # Enable one-hand typing -OLED_ENABLE = yes - -# 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 you want to change the display of OLED, you need to change here -SRC += ./lib/rgb_state_reader.c \ - ./lib/logo_reader.c \ - ./lib/keylogger.c \ - #./lib/layer_state_reader.c \ - # ./lib/mode_icon_reader.c \ - # ./lib/host_led_state_reader.c \ - # ./lib/timelogger.c \ diff --git a/keyboards/crkbd/keymaps/ninjonas/README.md b/keyboards/crkbd/keymaps/ninjonas/README.md deleted file mode 100644 index 84b55906f859..000000000000 --- a/keyboards/crkbd/keymaps/ninjonas/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# ninjonas Keymap for [Corne Keyboard (crkbd)](https://github.com/foostan/crkbd) - -## Keymap -This keymap is designed based off my typing habits and is subject to change. Information about custom user macros and tap dances can be found [here](../../../../users/ninjonas). - -More information about the crkbd keyboard can be found [here](https://thomasbaart.nl/2018/11/26/corne-keyboard-helidox-build-log/) - -### QWERTY -```c - //,----------------------------------------------------. ,----------------------------------------------------. - // Tab, Q, W, E, R, T, Y, U, I, O, P, \ - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // ESC, A, S, D, F, G, H, J, K, L, ;, ' - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // LShift, Z, X, C, V, B, N, M, ,, ., /, = - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // Cmd, Ctrl, Space, Enter, BackSP, Del - //`---------------------' `---------------------' -``` - -### DVORAK -```c - //,----------------------------------------------------. ,----------------------------------------------------. - // Tab, ', ,, ., P, Y, F, G, C, R, L, \ - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // ESC, A, O, E, U, I, D, H, T, N, S, / - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // LShift, ;, Q, J, K, X, B, M, W, V, Z, = - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // Cmd, Ctrl, Space, Enter, BackSP, Del - //`---------------------' `---------------------' -``` - -### COLEMAK -```c - //,----------------------------------------------------. ,----------------------------------------------------. - // Tab, Q, W, F, P, G, J, L, U, Y, ;, \ - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // ESC, A, R, S, T, D, H, N, E, I, O, ' - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // LShift, Z, X, C, V, B, K, M, ,, ., /, = - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // Cmd, Ctrl, Space, Enter, BackSP, Del - //`---------------------' `---------------------' -``` - -### LOWER -```c - //,----------------------------------------------------. ,----------------------------------------------------. - // , , KC_BRIU, Play, Mute, K_CSCN, PgUp, Home, Up, End, , K_MDSH - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // , , KC_BRID, Next, VolUp, , PgDn, Left, Down, Right, K_LOCK, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // , , , Prev, VolDn, [, ], , , M_CODE, M_XXX1, M_PYNV, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // , , , , , - //`---------------------' `---------------------' -``` - -### RAISE -```c - //,----------------------------------------------------. ,----------------------------------------------------. - // `, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, - - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // ~, !, @, #, $, %, ^, &, *, (, ), _ - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // F11, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F12 - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // , , , , , - //`---------------------' `---------------------' -``` - -### ADJUST -```c - //,----------------------------------------------------. ,----------------------------------------------------. - // M_MAKE, EE_CLR , , , , , RGB_TOG, , , COLEMAK, DVORAK, QWERTY, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // M_VRSN, M_MALL, , RGB_SAI, RGB_HUI, RGB_VAI, , , , , , , - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // M_FLSH, , , RGB_SAD, RGB_HUD, RGB_VAD, RGB_M_P, RGB_M_B,RGB_M_SW, , , , - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - // , , , , , - //`---------------------' `---------------------' -``` - - \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/ninjonas/config.h b/keyboards/crkbd/keymaps/ninjonas/config.h deleted file mode 100644 index fa3711ce8f7a..000000000000 --- a/keyboards/crkbd/keymaps/ninjonas/config.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -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 - -#define TAPPING_TERM 200 - -#define MASTER_LEFT - -#define QUICK_TAP_TERM 0 - -#ifdef RGB_MATRIX_ENABLE - #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 - #define RGB_MATRIX_HUE_STEP 10 - #define RGB_MATRIX_SAT_STEP 10 - #define RGB_MATRIX_VAL_STEP 10 - #define RGB_MATRIX_SPD_STEP 10 - // #define RGB_MATRIX_KEYPRESSES - #define RGB_MATRIX_FRAMEBUFFER_EFFECTS - -// 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 -# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP -// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN -// END: RGB_MATRIX_FRAMEBUFFER_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" -#define OLED_DISABLE_TIMEOUT - -#define LAYOUT LAYOUT_split_3x6_3 diff --git a/keyboards/crkbd/keymaps/ninjonas/keymap.c b/keyboards/crkbd/keymaps/ninjonas/keymap.c deleted file mode 100644 index 66b89f3a9847..000000000000 --- a/keyboards/crkbd/keymaps/ninjonas/keymap.c +++ /dev/null @@ -1,101 +0,0 @@ -#include QMK_KEYBOARD_H -#include "ninjonas.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - _____________________QWERTY_L1______________________, _____________________QWERTY_R1______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________QWERTY_L2______________________, _____________________QWERTY_R2______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________QWERTY_L3______________________, _____________________QWERTY_R3______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - ________MOD_LEFT_________, ________MOD_RIGHT________ - //`---------------------' `---------------------' - ), - - [_DVORAK] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - _____________________DVORAK_L1______________________, _____________________DVORAK_R1______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________DVORAK_L2______________________, _____________________DVORAK_R2______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________DVORAK_L3______________________, _____________________DVORAK_R3______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - ________MOD_LEFT_________, ________MOD_RIGHT________ - //`---------------------' `---------------------' - ), - - [_COLEMAK] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - _____________________COLEMAK_L1_____________________, _____________________COLEMAK_R1_____________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________COLEMAK_L2_____________________, _____________________COLEMAK_R2_____________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________COLEMAK_L3_____________________, _____________________COLEMAK_R3_____________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - ________MOD_LEFT_________, ________MOD_RIGHT________ - //`---------------------' `---------------------' - ), - - [_LOWER] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - _____________________LOWER_L1_______________________, _____________________LOWER_R1_______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________LOWER_L2_______________________, _____________________LOWER_R2_______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________LOWER_L3_______________________, _____________________LOWER_R3_______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _______,_______,_______, _______,_______,_______ - //`---------------------' `---------------------' - ), - - [_RAISE] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - _____________________NUM_LEFT_______________________, _____________________NUM_RIGHT______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________SYM_LEFT_______________________, _____________________SYM_RIGHT______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________FUNC_LEFT______________________, _____________________FUNC_RIGHT_____________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _______,_______,_______, _______,_______,_______ - //`---------------------' `---------------------' - ), - - [_ADJUST] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - _____________________ADJUST_L1______________________, _____________________ADJUST_R1______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________ADJUST_L2______________________, _____________________ADJUST_R2______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _____________________ADJUST_L3______________________, _____________________ADJUST_R3______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _______,_______,_______, _______,_______,_______ - //`---------------------' `---------------------' - ), - - [_NUMPAD] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - _______, _______, _______, _______, _______, _______, _____________________NUMPAD_1_______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _______, _______, _______, _______, _______, _______, _____________________NUMPAD_2_______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _______, _______, _______, _______, _______, _______, _____________________NUMPAD_3_______________________, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _______,_______,_______, _______,_______,_______ - //`---------------------' `---------------------' - ), -/* - [_TEMPLATE] = LAYOUT_wrapper( - //,----------------------------------------------------. ,----------------------------------------------------. - 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, - //|--------+--------+--------+--------+--------+-------| |--------+--------+--------+--------+--------+-------| - _______,_______,_______, _______,_______,_______ - //`---------------------' `---------------------' - ), -*/ -}; diff --git a/keyboards/crkbd/keymaps/ninjonas/rules.mk b/keyboards/crkbd/keymaps/ninjonas/rules.mk deleted file mode 100644 index 6dd34f26d775..000000000000 --- a/keyboards/crkbd/keymaps/ninjonas/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -RGB_MATRIX_ENABLE = yes -MOUSEKEY_ENABLE = no -OLED_ENABLE = yes -LTO_ENABLE = yes - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/crkbd/keymaps/ollyhayes/config.h b/keyboards/crkbd/keymaps/ollyhayes/config.h deleted file mode 100644 index 9ad1ce2c58e0..000000000000 --- a/keyboards/crkbd/keymaps/ollyhayes/config.h +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright 2022 Olly Hayes (@ollyhayes) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 EE_HANDS - -#define QUICK_TAP_TERM 0 -#define TAPPING_TERM 100 - -#define NO_ACTION_ONESHOT - -#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" - -#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX - -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_KEYPRESSES // reacts to keypresses -// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) -# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended -# define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) -// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. -# define RGB_MATRIX_HUE_STEP 8 -# define RGB_MATRIX_SAT_STEP 8 -# define RGB_MATRIX_VAL_STEP 8 -# define RGB_MATRIX_SPD_STEP 10 - - -// 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_SOLID_COLOR -// # 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 RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 200 -// # 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/ollyhayes/keymap.c b/keyboards/crkbd/keymaps/ollyhayes/keymap.c deleted file mode 100644 index 5b9bc6cd4e90..000000000000 --- a/keyboards/crkbd/keymaps/ollyhayes/keymap.c +++ /dev/null @@ -1,112 +0,0 @@ -/* Copyright 2022 Olly Hayes (@ollyhayes) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "ollyhayes.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [BASE] = LAYOUT_split_3x6_3( -// +------------+------+------+---------+----------+---------+--------+----------+---------+--------+---------+---------+ - NUM_SWITCH , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN , KC_BSPC , - KC_ESC , KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_ENT , - KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_RSFT , - KC_LCTL , MO(PUNC) , MO(ARR) , KC_SPC , MO(PUNC) , KC_RCTL -// +------------+------+------+---------+----------+---------+--------+----------+---------+--------+---------+---------+ - ), - - [QWERTY] = LAYOUT_split_3x6_3( -// +---------+------+------+---------+---------+---------+---------+---------+---------+--------+---------+---------+ - KC_TRNS , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_TRNS , - KC_TRNS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_TRNS , - KC_TRNS , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS -// +---------+------+------+---------+---------+---------+---------+---------+---------+--------+---------+---------+ - ), - - [GAMES] = LAYOUT_split_3x6_3( -// +---------+------+------+---------+---------+----------+---------+---------+---------+--------+---------+---------+ - KC_TRNS , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_TRNS , - KC_TRNS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_TRNS , - KC_TRNS , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_TRNS , - KC_TRNS , KC_LALT , KC_SPACE , MO(ARR) , KC_TRNS , KC_TRNS -// +---------+------+------+---------+---------+----------+---------+---------+---------+--------+---------+---------+ - ), - - [NUM] = LAYOUT_split_3x6_3( -// +---------+---------------+------+--------+---------+-----------+-----------+------+--------+------+---------+---------+ - KC_TRNS , MO(FUNCTIONS) , KC_1 , KC_2 , KC_3 , DF(BASE) , C(KC_GRV) , KC_7 , KC_8 , KC_9 , KC_TRNS , KC_TRNS , - KC_TRNS , MO(MEDIA) , KC_4 , KC_5 , KC_6 , DF(GAMES) , KC_NO , KC_4 , KC_5 , KC_6 , KC_TRNS , KC_TRNS , - KC_TRNS , KC_0 , KC_7 , KC_8 , KC_9 , DF(QWERTY), KC_NO , KC_1 , KC_2 , KC_3 , KC_TRNS , KC_TRNS , - KC_DOT , KC_TRNS , KC_TAB , KC_TRNS , KC_0 , KC_DOT -// +---------+---------------+------+--------+---------+-----------+-----------+------+--------+------+---------+---------+ - ), - - [FUNCTIONS] = LAYOUT_split_3x6_3( -// +---------------+---------+---------+---------+---------+---------+---------+---------+---------+-------+---------+---------+ - KC_TRNS , KC_TRNS , KC_TRNS , KC_F8 , KC_F9 , KC_F12 , KC_F12 , KC_F7 , KC_F8 , KC_F9 , KC_TRNS , KC_TRNS , - TG(FUNCTIONS) , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , KC_F11 , KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , KC_F10 , KC_F10 , KC_F1 , KC_F2 , KC_F3 , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS -// +---------------+---------+---------+---------+---------+---------+---------+---------+---------+-------+---------+---------+ - ), - - [ARR] = LAYOUT_split_3x6_3( -// +---------+---------+-----------+---------+---------+------------+-----------+---------+---------+-----------+---------+---------+ - KC_TRNS , KC_TRNS , KC_HOME , KC_PGUP , KC_PGDN , KC_END , KC_HOME , KC_PGDN , KC_PGUP , KC_END , KC_TRNS , KC_TRNS , - KC_ENT , KC_DEL , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , KC_DEL , KC_TRNS , - KC_TRNS , KC_INS , C(KC_LEFT), KC_LGUI , KC_LALT , C(KC_RGHT) , C(KC_LEFT), DOWN4 , UP4 , C(KC_RGHT), KC_INS , KC_TRNS , - KC_TRNS , KC_F12 , KC_TRNS , KC_TRNS , KC_F12 , KC_TRNS -// +---------+---------+-----------+---------+---------+------------+-----------+---------+---------+-----------+---------+---------+ - ), - - [PUNC] = LAYOUT_split_3x6_3( -// +---------+------------+-----------+-----------+-------------+------------+------------+-------------+------------+------------+-----------+---------+ - ALTTAB , S(KC_1) , S(KC_2) , UC(0x20ac), S(KC_4) , S(KC_5) , S(KC_6) , S(KC_7) , S(KC_8) , S(KC_9) , S(KC_0) , KC_TRNS , - KC_TRNS , S(KC_NUBS) , S(KC_GRV) , KC_LBRC , KC_RBRC , S(KC_NUHS) , KC_QUOT , S(KC_LBRC) , S(KC_RBRC) , KC_MINS , S(KC_EQL) , KC_TRNS , - KC_TRNS , KC_NUBS , KC_GRV , KC_LGUI , KC_LALT , KC_NUHS , S(KC_QUOT) , KC_LALT , KC_LGUI , S(KC_MINS) , KC_EQL , KC_TRNS , - KC_TRNS , MO(DUBPUNC) , KC_MPLY , KC_TRNS , MO(DUBPUNC) , KC_TRNS -// +---------+------------+-----------+-----------+-------------+------------+------------+-------------+------------+------------+-----------+---------+ - ), - - [MEDIA] = LAYOUT_split_3x6_3( -// +------------+-----------+---------+---------+---------+----------------+----------------+---------+---------+---------+----------+---------+ - QK_BOOT , RGB_RMOD , RGB_MOD , RGB_TOG , RGB_HUD , RGB_HUI , RGB_HUD , RGB_HUI , RGB_TOG , RGB_RMOD, RGB_MOD , KC_SLEP , - KC_TRNS , KC_TRNS , KC_TRNS , KC_VOLD , KC_VOLU , RGB_MODE_PLAIN , RGB_MODE_PLAIN , KC_VOLD , KC_VOLU , KC_TRNS , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , RGB_VAD , RGB_VAI , RGB_SAD , RGB_SAI , RGB_SAD , RGB_SAI , RGB_VAD , RGB_VAI , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS -// +------------+-----------+---------+---------+---------+----------------+----------------+---------+---------+---------+----------+---------+ - ), - - [DUBPUNC] = LAYOUT_split_3x6_3( -// +---------+----------+-----------+-----------+------------+---------+-----------+---------+----------+---------+----------+---------+ - KC_TRNS , KC_TRNS , KC_TRNS , UC(0x00a3), KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , U_UMLAUT , KC_TRNS , KC_TRNS , KC_TRNS , - KC_TRNS , A_UMLAUT , KC_TRNS , UC(0x00df), UC(0x2713) , KC_TRNS , UC(0x00b0), KC_TRNS , KC_TRNS , KC_TRNS , O_UMLAUT , KC_TRNS , - KC_TRNS , KC_TRNS , UC(0x2717), KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS -// +---------+----------+-----------+-----------+------------+---------+-----------+---------+----------+---------+----------+---------+ - ) -}; - -/* -[TEMPLATE] = LAYOUT_split_3x6_3( -// +--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 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/crkbd/keymaps/ollyhayes/oled.c b/keyboards/crkbd/keymaps/ollyhayes/oled.c deleted file mode 100644 index 33db85fbb799..000000000000 --- a/keyboards/crkbd/keymaps/ollyhayes/oled.c +++ /dev/null @@ -1,112 +0,0 @@ -/* Copyright 2022 Olly Hayes (@ollyhayes) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "ollyhayes.h" - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_keyboard_master()) { - return OLED_ROTATION_180; // flips the display 180 degrees if offhand - } - return rotation; -} - -#define L_BASE 0 -#define L_NUM 8 -#define L_FUNCTIONS 16 -#define L_ARR 32 -#define L_PUNC 64 -#define L_DUBPUNC 128 -#define L_MEDIA 256 - -#define DL_COLEMAK 1 -#define DL_QWERTY 2 -#define DL_GAMES 4 - -void oled_render_layer_state(void) { - oled_write_P(PSTR("Layer: "), false); - switch (layer_state) { - case L_BASE: - switch (default_layer_state) { - case DL_QWERTY: - oled_write_ln_P(PSTR("Qwerty"), false); - break; - case DL_GAMES: - oled_write_ln_P(PSTR("Games"), false); - break; - case DL_COLEMAK: - default: - oled_write_ln_P(PSTR("Colemak"), false); - break; - } - break; - case L_NUM: - oled_write_ln_P(PSTR("Numbers"), false); - break; - case L_FUNCTIONS: - case L_FUNCTIONS|L_NUM: - oled_write_ln_P(PSTR("Functions"), false); - break; - case L_ARR: - oled_write_ln_P(PSTR("Navigation"), false); - break; - case L_PUNC: - oled_write_ln_P(PSTR("Punctuation"), false); - break; - case L_MEDIA: - case L_MEDIA|L_NUM: - oled_write_ln_P(PSTR("Media"), false); - break; - case L_DUBPUNC: - case L_DUBPUNC|L_PUNC: - oled_write_ln_P(PSTR("Specials"), false); - break; - } -} - -void oled_render_timer(void) { - static uint16_t microticks = 0; - static uint16_t ticks = 0; - - if (microticks++ % 1000 == 0) { - ticks++; - } - - oled_write_P(PSTR("Ticks: "), false); - oled_write_ln(get_u16_str(ticks, ' '), false); -} - -void oled_render_presses(void) { - oled_write_P(PSTR("Presses: "), false); - oled_write_ln(get_u16_str(key_presses, ' '), false); -} - -void oled_render_rgb_mode(void) { - oled_write_P(PSTR("Animation: "), false); - oled_write_ln(get_u8_str(rgb_matrix_get_mode(), ' '), false); -} - -bool oled_task_user(void) { - if (is_keyboard_master()) { - oled_render_layer_state(); - } - oled_render_timer(); - if (is_keyboard_master()) { - oled_render_presses(); - } - oled_render_rgb_mode(); - return false; -} diff --git a/keyboards/crkbd/keymaps/ollyhayes/readme.md b/keyboards/crkbd/keymaps/ollyhayes/readme.md deleted file mode 100644 index 9e63f780ff46..000000000000 --- a/keyboards/crkbd/keymaps/ollyhayes/readme.md +++ /dev/null @@ -1,67 +0,0 @@ -# ollyhayes's keymap for [Corne Keyboard (crkbd)](https://github.com/foostan/crkbd) - -## Keymap - -After many years of changing my keymap often and reperatedly, I finally came to a stable version. I've been using this for a while now with only small tweaks every so often. - -All layers are activated only whilst the layer key is held, except the default layers. - -Lots of keys are repeated on both sides. I find this really useful for two reasons: - -* I like to have the option to use the opposite hand to hold modifiers shift/ctrl etc as the hand pressing the key, I find this really comfortable. -* When using the mouse, I like to be able to do common things with just my left hand. - -### Colemak - -The base layer: - -![colemak](https://i.imgur.com/uxLJzul.png) - -### Navigation - -All things for moving the cursor around, inspired by vim. - -* `c←` is ctrl+left -* `↓↓↓↓` is ↓ pressed four times - -![navigation](https://i.imgur.com/xfkA0ze.png) - -### Symbols - -The shifted number row and all brackets and other symbols. - -* `a/t` is alt-tab for window switching in windows/linux. Using some special code to release alt when the punc key is released, this works quite nicely. - -![symbols](https://i.imgur.com/t9Jygs1.png) - -### Specials - -Some extra symbols (linux only for now) that work by sending UTF sequences. Layer activated by holding both punctuation layer keys. - -![specials](https://i.imgur.com/AtPWKrA.png) - -### Numbers - -Numbpads (left version is reversed so 1, 2, 3 are easy to reach with one hand (like on a regular keyboard). - -Also the keys to switch the default layer are here. - -![numbers](https://i.imgur.com/9XXcAXK.png) - -### Functions - -Function keys, nothing too interesting. - -![functions](https://i.imgur.com/ttrw3FJ.png) - -### Games (default layer) - -Used for some games, qwerty with space bar and alt for the left hand. - -![games](https://i.imgur.com/zVvHWKd.png) - -### Qwerty (default layer) - -Mostly for guests. - -![qwerty](https://i.imgur.com/Bqs1bjV.png) diff --git a/keyboards/crkbd/keymaps/ollyhayes/rules.mk b/keyboards/crkbd/keymaps/ollyhayes/rules.mk deleted file mode 100644 index f2bf2ce07b85..000000000000 --- a/keyboards/crkbd/keymaps/ollyhayes/rules.mk +++ /dev/null @@ -1,16 +0,0 @@ -SRC += oled.c - -OLED_ENABLE = yes - -EXTRAKEY_ENABLE = yes -UNICODE_ENABLE = yes - -RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes -# RGB_MATRIX_CUSTOM_USER = yes - -VIRTSER_ENABLE = yes - -LTO_ENABLE = yes - -MOUSEKEY_ENABLE = no diff --git a/keyboards/crkbd/keymaps/pdl/config.h b/keyboards/crkbd/keymaps/pdl/config.h deleted file mode 100644 index f2a5a522eac3..000000000000 --- a/keyboards/crkbd/keymaps/pdl/config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert -Copyright 2021 Daniel Perrett - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 TAPPING_TOGGLE 2 -#define TAPPING_TERM 200 - -#define COMBO_PDL -#define COMBO_TERM 100 diff --git a/keyboards/crkbd/keymaps/pdl/keymap.c b/keyboards/crkbd/keymaps/pdl/keymap.c deleted file mode 100644 index 1060a92650d4..000000000000 --- a/keyboards/crkbd/keymaps/pdl/keymap.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright 2022 Daniel Perrett - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "pdl.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_wrapper( - MY_FESC, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC, - KC_TAB, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, MY_SQUO, - MY_SBSL, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, MY_CENT, - KC_LCTL, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN - ), - [_PROXIM] = LAYOUT_wrapper( - MY_FESC, _________________PROXIM_L1_________________, _________________PROXIM_R1_________________, KC_BSPC, - KC_TAB, _________________PROXIM_L2_________________, _________________PROXIM_R2_________________, MY_ASCL, - MY_SBSL, _________________PROXIM_L3_________________, _________________PROXIM_R3_________________, MY_CENT, - KC_LCTL, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN - ), - [_NAVIGN] = LAYOUT_wrapper( - _______, _________________NAVIGN_L1_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NAVIGN_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NAVIGN_L3_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ - ), - [_PUNCTN] = LAYOUT_wrapper( - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R1_________________, _______, - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R2_________________, _______, - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R3_________________, _______, - _______, _______, _______, _______, _______, _______ - ), - [_NUMBRS] = LAYOUT_wrapper( - _______, _________________NUMBRS_L1_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NUMBRS_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NUMBRS_L3_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ - ), - [_CODING] = LAYOUT_wrapper( - _______, _______, _______, _______, _______, _______, _________________CODING_R1_________________, _______, - _______, _______, _______, _______, _______, _______, _________________CODING_R2_________________, _______, - _______, _______, _______, _______, _______, _______, _________________CODING_R3_________________, _______, - _______, _______, _______, _______, _______, _______ - ), - [_FUNCTN] = LAYOUT_wrapper( - _______, _________________FUNCTN_L1_________________, _________________FUNCTN_R1_________________, MY_CAD, - _______, _________________FUNCTN_L2_________________, _________________FUNCTN_R2_________________, KC_PSCR, - _______, _________________FUNCTN_L3_________________, _________________FUNCTN_R3_________________, _______, - _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/crkbd/keymaps/rmeli/config.h b/keyboards/crkbd/keymaps/rmeli/config.h deleted file mode 100644 index 86104fbacbdd..000000000000 --- a/keyboards/crkbd/keymaps/rmeli/config.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert -Copyright 2021 Rocco Meli <@RMeli> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 MASTER_LEFT // Left side is the master -#define SPLIT_LED_STATE_ENABLE - -#ifdef RGB_MATRIX_ENABLE -// RGB matrix options -# define RGB_MATRIX_KEYPRESSES // enable keypress effects -# define RGB_MATRIX_LED_FLUSH_LIMIT 16 -# define RGB_DISABLE_WHEN_USB_SUSPENDED -// Disable unwanted R2G effects (from r2g/config.h) -# undef ENABLE_RGB_MATRIX_ALPHAS_MODS -# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_BREATHING -# undef ENABLE_RGB_MATRIX_BAND_SAT -# undef ENABLE_RGB_MATRIX_BAND_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_RAINBOW_MOVING_CHEVRON -# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL -# undef ENABLE_RGB_MATRIX_RAINDROPS -# undef ENABLE_RGB_MATRIX_HUE_BREATHING -# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL -# define ENABLE_RGB_MATRIX_TYPING_HEATMAP -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# undef ENABLE_RGB_MATRIX_SPLASH -# undef ENABLE_RGB_MATRIX_SOLID_SPLASH -// Enable effects -# define ENABLE_RGB_MATRIX_SOLID_COLOR -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -// Default effect -# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR -# define RGB_MATRIX_DEFAULT_HUE 10 -# define RGB_MATRIX_DEFAULT_SAT 255 -# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -#endif - -// https://github.com/qmk/qmk_firmware/blob/develop/docs/squeezing_avr.md -#undef LOCKING_SUPPORT_ENABLE -#undef LOCKING_RESYNC_ENABLE -#define NO_MUSIC_MODE -#define LAYER_STATE_8BIT // Limit to 8 layers diff --git a/keyboards/crkbd/keymaps/rmeli/keymap.c b/keyboards/crkbd/keymaps/rmeli/keymap.c deleted file mode 100644 index 5a04e8150fbb..000000000000 --- a/keyboards/crkbd/keymaps/rmeli/keymap.c +++ /dev/null @@ -1,129 +0,0 @@ -/* -Copyright 2019 @foostan -Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) -Copyright 2021 Rocco Meli <@RMeli> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "rmeli.h" - -// + -------------------- + -// + RGB MATRIX CALLBACKS | -// + -------------------- + - -// LED numbers: -// https://github.com/foostan/crkbd/blob/main/corne-classic/doc/buildguide_en.md - -// Change LED color to red when CAPS LOCK is active -bool rgb_matrix_indicators_user(void) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(26, 255, 0, 0); - // Only works with SPLIT_LED_STATE_ENABLE - rgb_matrix_set_color(53, 255, 0, 0); - } - return false; -} - -// + ---- + -// + OLED | -// + ---- + - -bool oled_task_user(void) { - if (is_keyboard_master()) { - oled_render_rocco(); - } else { - oled_render_meli(); - } - return false; -} - -// + ------- + -// + KEY MAP | -// + ------- + - -// Layer names -enum layer_names { - _QWERTY, - _COLEMAK_DH, - _DWN, - _UP, - _CONFIG, -}; - -// Layer names shortcuts -#define _QWY 0 -#define _CMK 1 -#define _CFG 4 - -#define ______THUMB_LEFT_x3______ KC_LGUI, MO(_DWN), KC_SPC -#define ______THUMB_RIGHT_x3_____ KC_ENT, MO(_UP), KC_RCTL - -// LAYOUT -// -// |-----------------------------| |-----------------------------| -// | | | | | | | | | | | | | | -// |----+----+----+----+----+----| |----+----+----+----+----+----| -// | | | | | | | | | | | | | | -// |----+----+----+----+----+----| |----+----+----+----+----+----| -// | | | | | | | | | | | | | | -// |----+----+----+----+----+----+----| |----+----+----+----+----+----+----| -// | | | | | | | | -// |--------------| |--------------| - -// Define wrapper for standard CRKB layout -#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_wrapper( - // clang-format off - ___________________QWERTY_L1_x6_____________________, ___________________QWERTY_R1_x6_____________________, - ___________________QWERTY_L2_x6_____________________, ___________________QWERTY_R2_x6_____________________, - ___________________QWERTY_L3_x6_____________________, ___________________QWERTY_R3_x6_____________________, - ______THUMB_LEFT_x3______, ______THUMB_RIGHT_x3_____ - ), - - [_COLEMAK_DH] = LAYOUT_wrapper( - ________________COLEMAK_MOD_DH_L1_x6________________, ________________COLEMAK_MOD_DH_R1_x6________________, - ________________COLEMAK_MOD_DH_L2_x6________________, ________________COLEMAK_MOD_DH_R2_x6________________, - ________________COLEMAK_MOD_DH_L3_x6________________, ________________COLEMAK_MOD_DH_R3_x6________________, - ______THUMB_LEFT_x3______, ______THUMB_RIGHT_x3_____ - ), - - [_DWN] = LAYOUT_wrapper( - _______, ______________NUMBER_LEFT_x5_______________, ______________NUMBER_RIGHT_x5______________, _______, - _______, ______________UNICODE_L2_x5________________, ________________NAV_R2_x5__________________, XXXXXXX, - _______, ______________UNICODE_L3_x5________________, ________________NAV_R3_x5__________________, _______, - KC_LGUI, _______, _______, _______,MO(_CFG), _______ - ), - - [_UP] = LAYOUT_wrapper( - ___________________SYMBOL_LEFT_x6___________________, ___________________SYMBOL_RIGHT_x6__________________, - _______, ____________NAV_VIM_x4____________, XXXXXXX, ____________________SYMBOL_R2_x6____________________, - _______, _________________NONE_5x___________________, ____________________SYMBOL_R3_x6____________________, - _______,MO(_CFG), _______, _______, _______, _______ - ), - - [_CONFIG] = LAYOUT_wrapper( - QK_BOOT, _________________NONE_5x___________________, _______________CONFIG_R1_x5________________,DF(_QWY), - RGB_TOG, ________________RGB_L2_x5__________________, _______________CONFIG_R2_x5________________, XXXXXXX, - XXXXXXX, ________________RGB_L3_x5__________________, _______________CONFIG_R3_x5________________,DF(_CMK), - _______, _______, _______, _______, _______, _______ - ) -}; -// clang-format on diff --git a/keyboards/crkbd/keymaps/rmeli/rules.mk b/keyboards/crkbd/keymaps/rmeli/rules.mk deleted file mode 100644 index 107c4939782c..000000000000 --- a/keyboards/crkbd/keymaps/rmeli/rules.mk +++ /dev/null @@ -1,11 +0,0 @@ -OLED_ENABLE = yes - -TAP_DANCE_ENABLE = yes -AUTO_SHIFT_ENABLE = no // disable auto-shift with home row mods - -UNICODEMAP_ENABLE = yes -NKRO_ENABLE = yes -MAGIC_ENABLE = yes - -RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/rs/config.h b/keyboards/crkbd/keymaps/rs/config.h deleted file mode 100644 index bbdb0d8106b3..000000000000 --- a/keyboards/crkbd/keymaps/rs/config.h +++ /dev/null @@ -1,49 +0,0 @@ -/* -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 - -//#define USE_MATRIX_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#define QUICK_TAP_TERM 0 -#define TAPPING_TERM 300 - -#undef RGBLED_NUM -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#define RGBLED_NUM 27 -#define RGBLIGHT_LIMIT_VAL 120 -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 diff --git a/keyboards/crkbd/keymaps/rs/keymap.c b/keyboards/crkbd/keymaps/rs/keymap.c deleted file mode 100644 index 7e2a2e066eaa..000000000000 --- a/keyboards/crkbd/keymaps/rs/keymap.c +++ /dev/null @@ -1,39 +0,0 @@ -#include QMK_KEYBOARD_H -#include "rs.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_EQL , - //|----+----+----+----+----+----| |----+----+----+----+----+----| - KC_ESCC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, - //|----+----+----+----+----+----+ |----+----+----+----+----+----| - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_ENTS, - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - KC_LALT,KC_LGUI,KC_SPC , KC_BSPC,KC_CODE,KC_FN - // `----+----+----' `+---+----+----'c - ), - [_CODE] = LAYOUT( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - KC_GRV ,KC_EXLM, KC_AT ,KC_HASH, KC_DLR,KC_PERC, KC_CIRC,KC_LPLT,KC_ASTR,KC_RPGT,KC_NEQL,_______, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_MINS,KC_LBRC, KC_UP ,KC_RBRC,_______,KC_BSLS, - //|----+----+----+----+----+----+ |----+----+----+----+----+----| - _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_AMPR,KC_LEFT,KC_DOWN,KC_RGHT,_______,KC_PIPE, - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - _______,_______,KC_DOT , _______,_______,_______ - // `----+----+----' `----+----+----' - ), - [_FN] = LAYOUT( - //,----+----+----+----+----+----. ,----+----+----+----+----+----. - _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, - //|----+----+----+----+----+----| |----+----+----+----+----+----| - KC_LTOG,KC_LHUI,KC_LSAI,KC_LVAI,KC_LRST,KC_BRMU, KC_VOLU,_______,KC_PGUP,_______,_______,_______, - //|----+----+----+----+----+----+ |----+----+----+----+----+----| - KC_LMOD,KC_LHUD,KC_LSAD,KC_LVAD,KC_RST ,KC_BRMD, KC_VOLD,KC_CTRA,KC_PGDN,KC_CTRE,_______,_______, - //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' - _______,_______,_______, KC_MUTE,_______,_______ - // `----+----+----' `----+----+----' - ), -}; - diff --git a/keyboards/crkbd/keymaps/rs/oled.c b/keyboards/crkbd/keymaps/rs/oled.c deleted file mode 100644 index a4c71daac2ca..000000000000 --- a/keyboards/crkbd/keymaps/rs/oled.c +++ /dev/null @@ -1,87 +0,0 @@ -#ifdef OLED_ENABLE -#include QMK_KEYBOARD_H -#ifdef PROTOCOL_LUFA -#include "lufa.h" -#include "split_util.h" -#endif - -// When add source files to SRC in rules.mk, you can use functions. -const char *read_logo(void); -const char *read_keylog(void); -const char *read_keylogs(void); -void set_keylog(uint16_t keycode, keyrecord_t *record); - -void matrix_scan_user(void) { iota_gfx_task(); } - -typedef struct { - uint8_t state; - char name[8]; -} LAYER_DISPLAY_NAME; - -#define LAYER_DISPLAY_MAX 5 -const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = { - {0, "Base"}, - {2, "Code"}, - {4, "Fn"}, - {6, "Fn+Code"}, - {__UINT8_MAX__, "?"}, -}; -static uint8_t layer_name_idx; -static char layer_status_buf[24] = "Layer: Base\n"; - -#ifdef RGBLIGHT_ENABLE -// Following line allows macro to read current RGB settings -extern rgblight_config_t rgblight_config; -void update_keymap_status(void) { - snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "Layer:%s RGB: %d\n", - layer_display_name[layer_name_idx].name, rgblight_config.mode); -} -#else -void update_keymap_status(void) { - snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "Layer:%s\n", - layer_display_name[layer_name_idx].name); -} -#endif - -void matrix_init_user(void) { - update_keymap_status(); -} - -// declared in users/rs/rs.c -void rgb_mod_changed_keymap(void) { - update_keymap_status(); -} - -// declared in users/rs/rs.c -void keylog_set_keymap(uint16_t keycode, keyrecord_t *record) { - set_keylog(keycode, record); -} - -layer_state_t layer_state_set_user(layer_state_t state) { - for (layer_name_idx = 0; layer_name_idx < LAYER_DISPLAY_MAX; ++layer_name_idx) { - if (state == 0 && layer_display_name[layer_name_idx].state == default_layer_state) { - break; - } else if (state != 0 && layer_display_name[layer_name_idx].state == state) { - break; - } - } - update_keymap_status(); - return state; -} - -static inline void render_keymap_status(struct CharacterMatrix *matrix) { - oled_write(layer_status_buf); -} - -bool oled_task_user(void) { - if (is_keyboard_master()) { - render_keymap_status(matrix); - oled_write_ln(read_keylog(), false); - oled_write_ln(read_keylogs(), false); - } else { - oled_write(read_logo(), false); - } - return false; -} - -#endif diff --git a/keyboards/crkbd/keymaps/rs/readme.md b/keyboards/crkbd/keymaps/rs/readme.md deleted file mode 100644 index d7f7bb6459ec..000000000000 --- a/keyboards/crkbd/keymaps/rs/readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# RS40: Code Friendly 40% Keymap - -This keymap is an evolution of my previous keymap optimized for coding with a 60% keyboards like the Iris. I tried to keep the simplicity of my previous keymap with all the keys necessary for coding on a single layer in addition to the base one. - -Because I sometime have to use my internal keyboard I my macbook, a karabiner configuration is also provided to get most of the features of this keyboard, including the code layer / backspace on right command key etc. - -See [rs readme](../../../../users/rs/readme.md) for a list of other keyboards supported by this keymap. - -## Base Layer - -[![](http://poitr.us/moooMf+)](http://www.keyboard-layout-editor.com/##@_backcolor=%23d8c1f5&switchMount=cherry&pcb:false&plate:true%3B&@_x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=E&_x:8%3B&=I%3B&@_y:-0.87&x:2%3B&=W&_x:1%3B&=R&_x:6%3B&=U&_x:1%3B&=O%3B&@_y:-0.8799999999999999&x:5%3B&=T&_x:4%3B&=Y%3B&@_y:-0.87&c=%233a1ee6&t=%23b84465%3B&=Tab&_c=%236750f2&t=%2344b8b8%3B&=Q&_x:12%3B&=P&_c=%233a1ee6&t=%23b84465&a:5%3B&=+%0A%2F=%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=D&_x:8%3B&=K%3B&@_y:-0.8700000000000001&x:2%3B&=S&_x:1%3B&=F&_x:6%3B&=J&_x:1%3B&=L%3B&@_y:-0.8799999999999999&x:5%3B&=G&_x:4%3B&=H%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465&a:5%3B&=Esc%0ACtrl&_c=%236750f2&t=%2344b8b8&a:7%3B&=A&_x:12&a:5%3B&=%2F:%0A%2F%3B&_c=%233a1ee6&t=%23b84465%3B&=%22%0A'%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=C&_x:8&a:5%3B&=%3C%0A,%3B&@_y:-0.8700000000000001&x:2&a:7%3B&=X&_x:1%3B&=V&_x:6%3B&=M&_x:1&a:5%3B&=%3E%0A.%3B&@_y:-0.8799999999999999&x:5&a:7%3B&=B&_x:4%3B&=N%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=Shift&_c=%236750f2&t=%2344b8b8%3B&=Z&_x:12&a:5%3B&=%3F%0A%2F%2F&_c=%233a1ee6&t=%23b84465&a:7%3B&=Enter%3B&@_y:-0.17999999999999972&x:11.75%3B&=Fn%3B&@_ry:0.25&y:2.95&x:3.3%3B&=Alt%3B&@_r:12&ry:1.75&y:0.5&x:4.8%3B&=Cmd%3B&@_r:35&rx:6.5&ry:4.25&y:-0.75&x:-0.75&c=%23d12424&t=%23ffffff&h:1.5%3B&=Space%3B&@_r:-35&rx:13&y:-2.75&x:-3.0999999999999996&h:1.5%3B&=Back%20Space%3B&@_r:-12&rx:0&ry:0&y:5.55&x:9.55&c=%233a1ee6&t=%23b84465%3B&=Code) - -## Code Layer - -[![](http://poitr.us/GvljvC+)](http://www.keyboard-layout-editor.com/##@_backcolor=%23d8c1f5&switchMount=cherry&pcb:false&plate:true%3B&@_x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=%23&_x:8%3B&=*%3B&@_y:-0.87&x:2%3B&=%2F@&_x:1%3B&=$&_x:6&a:5%3B&=%3C%0A(&_x:1%3B&=%3E%0A)%3B&@_y:-0.8799999999999999&x:5&a:7%3B&=%25&_x:4%3B&=%5E%3B&@_y:-0.87&c=%233a1ee6&t=%23b84465%3B&=Tab&_c=%236750f2&t=%2344b8b8%3B&=!&_x:12%3B&=!%2F=&_c=%233a1ee6&t=%23b84465&a:5%3B&=+%0A%2F=%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=3&_x:8%3B&=↑%3B&@_y:-0.8700000000000001&x:2%3B&=2&_x:1%3B&=4&_x:6&a:5%3B&=%7B%0A%5B&_x:1%3B&=%7D%0A%5D%3B&@_y:-0.8799999999999999&x:5&a:7%3B&=5&_x:4&a:5%3B&=%2F_%0A-%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=Esc%0ACtrl&_c=%236750f2&t=%2344b8b8&a:7%3B&=1&_x:12&a:5%3B&=%2F:%0A%2F%3B&_c=%233a1ee6&t=%23b84465%3B&=%7C%0A%5C%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=8&_x:8%3B&=↓%3B&@_y:-0.8700000000000001&x:2%3B&=7&_x:1%3B&=9&_x:6%3B&=←&_x:1%3B&=→%3B&@_y:-0.8799999999999999&x:5%3B&=0&_x:4%3B&=%2F&%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=Shift&_c=%236750f2&t=%2344b8b8%3B&=6&_x:12&a:5%3B&=%3F%0A%2F%2F&_c=%233a1ee6&t=%23b84465&a:7%3B&=Enter%3B&@_y:-0.17999999999999972&x:11.75%3B&=Fn%3B&@_ry:0.25&y:2.95&x:3.3%3B&=Alt%3B&@_r:12&ry:1.75&y:0.5&x:4.8%3B&=Cmd%3B&@_r:35&rx:6.5&ry:4.25&y:-0.75&x:-0.75&c=%23d12424&t=%23ffffff&h:1.5%3B&=.%3B&@_r:-35&rx:13&y:-2.75&x:-3.0999999999999996&h:1.5%3B&=Back%20Space%3B&@_r:-12&rx:0&ry:0&y:5.55&x:9.55&c=%233a1ee6&t=%23b84465%3B&=Code) - -## Fn Layer - -[![](http://poitr.us/OXwmBK+)](http://www.keyboard-layout-editor.com/##@_backcolor=%23d8c1f5&switchMount=cherry&pcb:false&plate:true%3B&@_x:3&c=%236750f2&t=%2344b8b8&a:7%3B&=F3&_x:8%3B&=F8%3B&@_y:-0.87&x:2%3B&=F2&_x:1%3B&=F4&_x:6%3B&=F7&_x:1%3B&=F9%3B&@_y:-0.8799999999999999&x:5%3B&=F5&_x:4%3B&=F6%3B&@_y:-0.87&c=%233a1ee6&t=%23b84465%3B&=&_c=%236750f2&t=%2344b8b8%3B&=F1&_x:12%3B&=F10&_c=%233a1ee6&t=%23b84465%3B&=F11%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8%3B&=RGB%20Value+&_x:8%3B&=Page%20Up%3B&@_y:-0.8700000000000001&x:2%3B&=RGB%20Sat+&_x:1%3B&=RGB%20Reset&_x:6%3B&=&_x:1%3B&=%3B&@_y:-0.8799999999999999&x:5%3B&=Bright+&_x:4%3B&=Vol+%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=RGB%20Toggle&_c=%236750f2&t=%2344b8b8%3B&=RGB%20Hue+&_x:12%3B&=&_c=%233a1ee6&t=%23b84465%3B&=%3B&@_y:-0.3799999999999999&x:3&c=%236750f2&t=%2344b8b8%3B&=RGB%20Value-&_x:8%3B&=Page%20Down%3B&@_y:-0.8700000000000001&x:2%3B&=RGB%20Sat-&_x:1%3B&=Reset&_x:6%3B&=Ctrl+A&_x:1%3B&=Ctrl+E%3B&@_y:-0.8799999999999999&x:5%3B&=Bright-&_x:4%3B&=Vol-%3B&@_y:-0.8700000000000001&c=%233a1ee6&t=%23b84465%3B&=RGB%20Mode&_c=%236750f2&t=%2344b8b8%3B&=RGB%20Hue-&_x:12%3B&=&_c=%233a1ee6&t=%23b84465%3B&=%3B&@_y:-0.17999999999999972&x:11.75%3B&=Fn%3B&@_ry:0.25&y:2.95&x:3.3%3B&=%3B&@_r:12&ry:1.75&y:0.5&x:4.8%3B&=%3B&@_r:35&rx:6.5&ry:4.25&y:-0.75&x:-0.75&c=%23d12424&t=%23ffffff&h:1.5%3B&=%3B&@_r:-35&rx:13&y:-2.75&x:-3.0999999999999996&h:1.5%3B&=Mute%3B&@_r:-12&rx:0&ry:0&y:5.55&x:9.55&c=%233a1ee6&t=%23b84465%3B&=Code) \ No newline at end of file diff --git a/keyboards/crkbd/keymaps/rs/rules.mk b/keyboards/crkbd/keymaps/rs/rules.mk deleted file mode 100644 index 5a76c38f3836..000000000000 --- a/keyboards/crkbd/keymaps/rs/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ - -# Build Options -# 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 # 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) -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # 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 -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -SWAP_HANDS_ENABLE = no # Enable one-hand typing -TAP_DANCE_ENABLE = no - -BOOTLOADER = atmel-dfu - -# 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 you want to change the display of OLED, you need to change here -SRC += oled.c \ - ./lib/rgb_state_reader.c \ - ./lib/layer_state_reader.c \ - ./lib/logo_reader.c \ - ./lib/keylogger.c \ diff --git a/keyboards/crkbd/keymaps/snowe/config.h b/keyboards/crkbd/keymaps/snowe/config.h deleted file mode 100644 index 82097c503a9c..000000000000 --- a/keyboards/crkbd/keymaps/snowe/config.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -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 - -//#define USE_MATRIX_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#define QUICK_TAP_TERM 0 -#define TAPPING_TERM 200 - -#undef PERMISSIVE_HOLD - -#ifdef RGBLIGHT_ENABLE - #undef RGBLED_NUM -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE - #define RGBLED_NUM 27 - #define RGBLIGHT_LIMIT_VAL 120 - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 -#endif - -#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" - -#define LAYER_STATE_8BIT -#define SPLIT_WPM_ENABLE diff --git a/keyboards/crkbd/keymaps/snowe/keycode_aliases.h b/keyboards/crkbd/keymaps/snowe/keycode_aliases.h deleted file mode 100644 index c19fb11d4bd7..000000000000 --- a/keyboards/crkbd/keymaps/snowe/keycode_aliases.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2020 Drashna Jaelre <@drashna> - * Copyright 2021 Tyler Thrailkill <@snowe/@snowe2010> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 GUI_ESC GUI_T(KC_ESC) -#define CTL_ESC CTL_T(KC_ESC) -#define SH_BKSP SFT_T(KC_BSPC) -#define SP_RAIS LT(_UPPER, KC_SPC) - -#define LOWER MO(_LOWER) -#define RAISE MO(_UPPER) -#define ADJUST MO(_ADJUST) -#define TG_MODS TG(_MODS) -//#define TG_GAME TG(_GAMEPAD) -//#define OS_LWR OSL(_LOWER) -//#define OS_RSE OSL(_UPPER) - -//#define KC_SEC1 KC_SECRET_1 -//#define KC_SEC2 KC_SECRET_2 -//#define KC_SEC3 KC_SECRET_3 -//#define KC_SEC4 KC_SECRET_4 -//#define KC_SEC5 KC_SECRET_5 - -#define QWERTY KC_QWERTY -#define DVORAK KC_DVORAK -#define COLEMAK KC_COLEMAK -#define WORKMAN KC_WORKMAN - -#define KC_RESET QK_BOOT -#define KC_RST KC_RESET - -#ifdef SWAP_HANDS_ENABLE -# define KC_C1R3 SH_TT -#else // SWAP_HANDS_ENABLE -# define KC_C1R3 KC_BSPC -#endif // SWAP_HANDS_ENABLE - -#define BK_LWER LT(_LOWER, KC_BSPC) -#define SP_LWER LT(_LOWER, KC_SPC) -#define DL_RAIS LT(_UPPER, KC_DEL) -#define ET_RAIS LT(_UPPER, KC_ENTER) -#define SFT_ENT SFT_T(KC_ENTER) -#define SP_RAIS LT(_UPPER, KC_SPC) - -/* OSM keycodes, to keep things clean and easy to change */ -#define KC_MLSF OSM(MOD_LSFT) -#define KC_MRSF OSM(MOD_RSFT) - -#define OS_LGUI OSM(MOD_LGUI) -#define OS_RGUI OSM(MOD_RGUI) -#define OS_LSFT OSM(MOD_LSFT) -#define OS_RSFT OSM(MOD_RSFT) -#define OS_LCTL OSM(MOD_LCTL) -#define OS_RCTL OSM(MOD_RCTL) -#define OS_LALT OSM(MOD_LALT) -#define OS_RALT OSM(MOD_RALT) -#define OS_MEH OSM(MOD_MEH) -#define OS_HYPR OSM(MOD_HYPR) - -#define ALT_APP ALT_T(KC_APP) - -#define MG_NKRO MAGIC_TOGGLE_NKRO - -#define UC_IRNY UC(0x2E2E) -#define UC_CLUE UC(0x203D) diff --git a/keyboards/crkbd/keymaps/snowe/keymap.c b/keyboards/crkbd/keymaps/snowe/keymap.c deleted file mode 100644 index c605089bfb5e..000000000000 --- a/keyboards/crkbd/keymaps/snowe/keymap.c +++ /dev/null @@ -1,211 +0,0 @@ -/* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> -Copyright 2021 Tyler Thrailkill <@snowe/@snowe2010> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "snowe.h" - -// Symbols chart -// ↯ hyper key (ctrl, alt, shift, super) -// ⌘ command -// ⌥ option -// ⌃ control -// ⇧ shift -// ⌫ backspace -// ⌦ delete -// ⎋ escape -// ↩ enter - -/* Wrapper - * ,-----------------------------------------------. .-----------------------------------------------. - * | Tab | K01 | K02 | K03 | K04 | K05 | | K06 | K07 | K08 | K09 | K0A | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | ⌘/⎋ | ⌃/K11 | K12 | K13 | K14 | K15 | | K16 | K17 | K18 | K19 | ⌥/K1A | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | ↯/⌦ | ⌥/K21 | K22 | K23 | K24 | K25 | | K26 | K27 | K28 | K29 | ⌃/K2A | | - * `-----------------------. | | .-----------------------' - * |-------+-------+-------| |-------+-------+-------| - * | ⌃ | ⇧/↩ | ⌫/LWR | | ␣/RAY | ␣ | R ⌥ | - * `-----------------------' '-----------------------' - */ -// clang-format off -#define LAYOUT_crkbd_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_wrapper( \ - KC_TAB, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ - GUI_ESC, CTL_T(K11), K12, K13, K14, K15, K16, K17, K18, K19, ALT_T(K1A), KC_QUOT, \ - HYPR_T(KC_DEL), ALT_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_BSLS, \ - KC_LCTL, LOWER, SH_BKSP, KC_ENTER, SP_RAIS, KC_LALT \ - ) -// clang-format on -#define LAYOUT_crkbd_base_wrapper(...) LAYOUT_crkbd_base(__VA_ARGS__) -// clang-format off -#define LAYOUT_crkbd_no_hold_shortcuts( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_wrapper( \ - KC_TAB, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ - GUI_ESC, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \ - KC_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, KC_BSLS, \ - KC_LCTL, LOWER, KC_BSPC, KC_ENTER, SP_RAIS, KC_LALT \ - ) -// clang-format on -#define LAYOUT_crkbd_no_hold_shortcuts_wrapper(...) LAYOUT_crkbd_no_hold_shortcuts(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // clang-format off - /* QWERTY - * ,-----------------------------------------------. .-----------------------------------------------. - * | | Q | W | E | R | T | | Y | U | I | O | P | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | A | S | D | F | G | | H | J | K | L | ; | ' | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | Z | X | C | V | B | | N | M | , | . | / | | - * `-----------------------. | | .-----------------------' - * |-------+-------+-------| |-------+-------+-------| - * | | | | | | | | - * `-----------------------' '-----------------------' - */ - [_MAIN] = LAYOUT_crkbd_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - [_GAMING] = LAYOUT_crkbd_no_hold_shortcuts_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - /* Lower - * ,-----------------------------------------------. .-----------------------------------------------. - * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | | | | | | | | _ | + | [ | ] | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | | | | | | | | ← | ↑ | ↓ | → | | - * `-----------------------. | | .-----------------------' - * |-------+-------+-------| |-------+-------+-------| - * | | | | | | | | - * `-----------------------' '-----------------------' - */ - [_LOWER] = LAYOUT_wrapper( - KC_TILDE, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, - KC_F12 , _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, - _______ , _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, _______, _______ - ), - - - /* - * ,-----------------------------------------------. .-----------------------------------------------. - * | | | | | | | | | | | | | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | | | | | | | | | | | | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | | | | | | | | | | | | | - * `-----------------------. | | .-----------------------' - * |-------+-------+-------| |-------+-------+-------| - * | | | | | | | | - * `-----------------------' '-----------------------' - */ - /* Raise - * ,-----------------------------------------------. .-----------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | | | | | | | | ← | ↑ | ↓ | → | | - * |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------| - * | | | | | | | | | home |pg down| pg up | end | | - * `-----------------------. | | .-----------------------' - * |-------+-------+-------| |-------+-------+-------| - * | | | | | | | | - * `-----------------------' '-----------------------' - */ - [_UPPER] = LAYOUT_wrapper( - KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, - _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, _______, _______ - ), - - [_ADJUST] = LAYOUT_wrapper( - _______, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET, - _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EE_CLR, - _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY, - _______, _______, _______, _______, _______, _______ - ) - // clang-format on -}; - -layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _UPPER, _ADJUST); } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_LCTL: - case KC_RCTL: -#ifdef OCEAN_DREAM_ENABLE - is_calm = (record->event.pressed) ? true : false; -#endif -#ifdef LUNA_ENABLE - if (record->event.pressed) { - isSneaking = true; - } else { - isSneaking = false; - } -#endif - break; - case KC_SPC: -#ifdef LUNA_ENABLE - if (record->event.pressed) { - isJumping = true; - showedJump = false; - } else { - isJumping = false; - } -#endif - break; - } - return true; -} - -// uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { -// switch (keycode) { -// case ALT_T(KC_A): -// case SH_BKSP: -// return TAPPING_TERM + 500; -// default: -// return TAPPING_TERM; -// } -//} -// -// bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { -// if (keycode == ALT_T(KC_A) || keycode == SH_BKSP) { -// return false; -// } -// switch (keycode) { -// case QK_MOD_TAP ... QK_MOD_TAP_MAX: -// return true; -// default: -// return false; -// } -//} diff --git a/keyboards/crkbd/keymaps/snowe/rules.mk b/keyboards/crkbd/keymaps/snowe/rules.mk deleted file mode 100644 index 10cf2fa97ca9..000000000000 --- a/keyboards/crkbd/keymaps/snowe/rules.mk +++ /dev/null @@ -1,25 +0,0 @@ -BOOTMAGIC_ENABLE = no # 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) -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -AUDIO_ENABLE = no # Audio output on port C6 -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -LEADER_ENABLE = no -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -SWAP_HANDS_ENABLE = no # Enable one-hand typing -RGBLIGHT_TWINKLE = no -OLED_ENABLE = yes -RGB_MATRIX_ENABLE = yes - -OCEAN_DREAM_ENABLE = yes -LUNA_ENABLE = no # disabled so travis build succeeds - -# if firmware size over limit, try this option -LTO_ENABLE = yes - -WPM_ENABLE = yes diff --git a/keyboards/crkbd/keymaps/toinux/config.h b/keyboards/crkbd/keymaps/toinux/config.h deleted file mode 100644 index 83fe82aa8d73..000000000000 --- a/keyboards/crkbd/keymaps/toinux/config.h +++ /dev/null @@ -1,123 +0,0 @@ -/* -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 - -//#define USE_MATRIX_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -//#define QUICK_TAP_TERM 0 -//#define TAPPING_TERM 100 - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_EFFECT_BREATHING - // #define RGBLIGHT_EFFECT_RAINBOW_MOOD - // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - #define RGBLIGHT_EFFECT_SNAKE - #define RGBLIGHT_EFFECT_KNIGHT - #define RGBLIGHT_EFFECT_CHRISTMAS - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - #define RGBLIGHT_EFFECT_RGB_TEST - #define RGBLIGHT_EFFECT_ALTERNATING - #define RGBLIGHT_EFFECT_TWINKLE - #define RGBLIGHT_LIMIT_VAL 120 - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 -#endif - -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_KEYPRESSES // reacts to keypresses -// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) -# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended -# define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// # define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness) -// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness) -# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash. -# define RGB_MATRIX_HUE_STEP 8 -# define RGB_MATRIX_SAT_STEP 8 -# define RGB_MATRIX_VAL_STEP 8 -# define RGB_MATRIX_SPD_STEP 10 - -/* Enable the animations you want/need. You may need to enable only a small number of these because * - * they take up a lot of space. Enable and confirm that you can still successfully compile your firmware. */ -// RGB Matrix Animation modes. Explicitly enabled -// For full list of effects, see: -// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects -# 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_RAIN -# undef ENABLE_RGB_MATRIX_PIXEL_FLOW -# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL -// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined -# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP -# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN -// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined -# 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 -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -# define ENABLE_RGB_MATRIX_SPLASH -# undef ENABLE_RGB_MATRIX_MULTISPLASH -# undef ENABLE_RGB_MATRIX_SOLID_SPLASH -# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif - -#define OLED_FONT_H "keyboards/crkbd/keymaps/toinux/glcdfont.c" - -#define SPLIT_LAYER_STATE_ENABLE -// #define SPLIT_LED_STATE_ENABLE - -#define LAYER_STATE_16BIT - -#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY diff --git a/keyboards/crkbd/keymaps/toinux/glcdfont.c b/keyboards/crkbd/keymaps/toinux/glcdfont.c deleted file mode 100644 index 74cce5a95274..000000000000 --- a/keyboards/crkbd/keymaps/toinux/glcdfont.c +++ /dev/null @@ -1,232 +0,0 @@ -// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. -// See gfxfont.h for newer custom bitmap font info. - -#include "progmem.h" - -// Standard ASCII 5x7 font -const unsigned char font[] PROGMEM = { - 0x24, 0x7E, 0x24, 0x24, 0x7E, 0x24, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0xD4, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x28, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x50, 0x50, 0x50, 0x3C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, - 0x83, 0xC3, 0xC3, 0xC3, 0x9B, 0x03, - 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x36, 0x32, 0x32, 0x32, 0x32, 0x32, - 0x32, 0xE6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFE, - 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, - 0x80, 0x80, 0x80, 0x80, 0x9E, 0x81, - 0x80, 0x9E, 0x80, 0x80, 0x80, 0x80, - 0xFF, 0xEF, 0xD7, 0x0F, 0xDF, 0xDF, - 0xDF, 0xDF, 0x0F, 0xD7, 0xEF, 0xFF, - 0x01, 0x11, 0x29, 0xF1, 0x21, 0x21, - 0x21, 0x21, 0xF1, 0x29, 0x11, 0x01, - 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xEF, - 0xDF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0xFC, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFC, 0x02, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x09, 0x11, - 0x21, 0x41, 0x81, 0x01, 0x01, 0x01, - 0x01, 0x02, 0xFC, 0x00, 0x00, 0x00, - 0x3E, 0xFF, 0xF8, 0xF8, 0xFF, 0x3E, - 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, - 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63, - 0x07, 0x7F, 0x7F, 0x07, 0x7F, 0x7F, - 0x08, 0x08, 0x7F, 0x3E, 0x1C, 0x08, - 0x08, 0x1C, 0x3E, 0x7F, 0x08, 0x08, - 0x63, 0x7F, 0x7F, 0x63, 0x7F, 0x3E, - 0x1F, 0x3F, 0x63, 0x63, 0x3F, 0x1F, - 0x73, 0x3B, 0x1F, 0x1F, 0x3B, 0x73, - 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8F, 0x8C, 0x0C, 0x0C, 0x0F, 0x0C, - 0x8C, 0xAC, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x83, 0x82, 0x82, 0x9E, 0x88, - 0x84, 0x82, 0x81, 0x80, 0x80, 0x80, - 0xFF, 0xEF, 0xD7, 0xE0, 0xF7, 0xF7, - 0xF7, 0xF7, 0xE0, 0xD7, 0xEF, 0xFF, - 0x00, 0x10, 0x28, 0x1F, 0x08, 0x08, - 0x08, 0x08, 0x1F, 0x28, 0x10, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xEF, - 0xF7, 0xFB, 0xFD, 0xFE, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, - 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, - 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0xFF, 0xFF, 0xBD, 0x81, 0x81, 0x00, - 0x63, 0x7F, 0x7F, 0x63, 0x7F, 0x3E, - 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x77, - 0x08, 0x08, 0x7F, 0x3E, 0x1C, 0x08, - 0x08, 0x1C, 0x3E, 0x7F, 0x08, 0x08, - 0x7F, 0x7F, 0x03, 0x03, 0x7F, 0x7F, - 0x1C, 0x1C, 0x1C, 0x1C, 0x7F, 0x7F, - 0x03, 0x7F, 0x7F, 0x63, 0x7F, 0x1F, - 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xD9, 0x99, 0x9B, 0x9E, 0x9E, 0x9B, - 0x99, 0xD9, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 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, 0xFC, 0xFD, 0xFD, 0xE1, 0xF7, - 0xFB, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x7F, 0xBF, 0xDF, 0xE1, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x40, 0x3C, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xFF, - 0xFF, 0x1F, 0xDF, 0xDF, 0xC3, 0xF7, - 0xEF, 0xDF, 0xBF, 0x7F, 0xFF, 0xFF, - 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3F, 0x40, 0x80, - 0x00, 0xE0, 0x20, 0x20, 0x3C, 0x08, - 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, - 0x80, 0x40, 0x3F, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0xE3, 0xE3, 0x7F, 0x00, - 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07, - 0x1C, 0x3E, 0x77, 0x63, 0x63, 0x63, - 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63, - 0x08, 0x08, 0x7F, 0x3E, 0x1C, 0x08, - 0x08, 0x1C, 0x3E, 0x7F, 0x08, 0x08, - 0x7F, 0x7F, 0x03, 0x03, 0x7F, 0x7F, - 0x7F, 0x7F, 0x03, 0x03, 0x7F, 0x7F, - 0x3E, 0x7F, 0x63, 0x63, 0x63, 0x63, - 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/keyboards/crkbd/keymaps/toinux/keycodes.h b/keyboards/crkbd/keymaps/toinux/keycodes.h deleted file mode 100644 index 0d7c1e326024..000000000000 --- a/keyboards/crkbd/keymaps/toinux/keycodes.h +++ /dev/null @@ -1,49 +0,0 @@ -/* Copyright 2022 @toinux - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -enum crkbd_layers { - _BASE, - _GAMING, - _GAMING2, - _ACCENTS, - _LOWER, - _RAISE, - _FUN, - _NAV, - _MOUSE, - _ADJUST -}; - -#define CTRLSC LCTL_T(KC_ESC) -#define QUORCTL RCTL_T(KC_QUOT) -#define MOSCLN LT(_MOUSE,KC_SCLN) -#define ACCENTS LT(_ACCENTS,KC_RALT) -#define FUN LT(_FUN,KC_SPC) -#define LOWER MO(_LOWER) -#define RAISE MO(_RAISE) -#define SPCNAV LT(_NAV,KC_SPC) -#define SFTENT MT(MOD_RSFT,KC_ENT) -#define TABLGUI LGUI_T(KC_TAB) -#define BASE DF(_BASE) -#define GAMING DF(_GAMING) -#define GAMING2 MO(_GAMING2) - -#define SC_F1 LSFT(LCTL(KC_F1)) -#define SC_F2 LSFT(LCTL(KC_F2)) -#define SC_F3 LSFT(LCTL(KC_F3)) -#define SC_F4 LSFT(LCTL(KC_F4)) diff --git a/keyboards/crkbd/keymaps/toinux/keymap.c b/keyboards/crkbd/keymaps/toinux/keymap.c deleted file mode 100644 index 3742ed9b82d0..000000000000 --- a/keyboards/crkbd/keymaps/toinux/keymap.c +++ /dev/null @@ -1,259 +0,0 @@ -/* -Copyright 2019 @foostan -Copyright 2020 Drashna Jaelre <@drashna> -Copyright 2022 @toinux - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "users/toinux/keymap_qwerty_fr.h" -#include "keycodes.h" - -#ifdef OLED_ENABLE -#include "oled.h" -#endif - -// TEMPLATE -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | | | | | | | | | | | | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | | | | | | | | | | | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | | | | | | | | | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// Base -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// |Tab/LGui| Q | W | E | R | T | | Y | U | I | O | P | Bksp | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | CtrlSc | A | S | D | F | G | | H | J | K | L | ;/Mous | '/Rctl | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | Shift | Z | X | C | V | B | | N | M | , | . | / | SftEnT | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | LALT | LOWER |Spc/FUN | | Spc/NAV| RAISE |ACCENTS | -// `--------------------------' `--------------------------' - [_BASE] = LAYOUT_split_3x6_3( - TABLGUI, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - CTRLSC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MOSCLN, QUORCTL, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFTENT, - KC_LALT, LOWER, FUN, SPCNAV, RAISE, ACCENTS - - ), - -// Gaming -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | Ctrl | A | S | D | F | G | | H | J | K | L | ;/Mous | ' | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | Shift | Z | X | C | V | B | | N | M | , | . | / | SftEnT | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | LALT |GAMING2 | Space | | Spc/NAV| RAISE |ACCENTS | -// `--------------------------' `--------------------------' - [_GAMING] = LAYOUT_split_3x6_3( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MOSCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFTENT, - KC_LALT, GAMING2, KC_SPC, SPCNAV, RAISE, ACCENTS - - ), - -// Gaming 2 -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | Tab | 1 | 2 | 3 | 4 | 5 | | | | | | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | Esc | 6 | 7 | 8 | 9 | 0 | | | | | | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | LGui | Base | | Vol- | Vol+ | Mute | | | | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - [_GAMING2] = LAYOUT_split_3x6_3( - KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LGUI, BASE, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, _______, _______, _______, _______ - - ), - -// Accents, see http://marin.jb.free.fr/qwerty-fr/ -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | | â | é | è | ê | € | | û | ù | î | ô | œ | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | à | æ | ë | | « | | » | ü | ï | ö | ° | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | à | | ç | | | | | | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - [_ACCENTS] = LAYOUT_split_3x6_3( - _______, QF_ACIR, QF_EACU, QF_EGRV, QF_ECIR, QF_EURO, QF_UCIR, QF_UGRV, QF_ICIR, QF_OCIR, QF_OE, _______, - _______, QF_AGRV, QF_AE, QF_EDIA, _______, QF_LDAQ, QF_RDAQ, QF_UDIA, QF_IDIA, QF_ODIA, QF_DEG, _______, - _______, QF_AGRV, _______, QF_CCED, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ - - ), - -// Lower -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | SC_F1 | SC_F2 | SC_F3 | SC_F4 | | | | _ | + | { | } | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | Gaming | | Vol- | Vol+ | Mute | | | | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - [_LOWER] = LAYOUT_split_3x6_3( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, - _______, SC_F1, SC_F2, SC_F3, SC_F4, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - _______, GAMING, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, - _______, _______, _______, _______, _______, _______ - - ), - -// Raise -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | | | | | | | | - | = | [ | ] | \ | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | | | | | | | | | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - [_RAISE] = LAYOUT_split_3x6_3( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, - _______, _______, _______, _______, _______, _______ - - ), - -// Functions and keypad -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | | F1 | F2 | F2 | F4 | | | | 7 | 8 | 9 | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | F5 | F6 | F7 | F8 | | | | 4 | 5 | 6 | - | / | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | F9 | F10 | F11 | F12 | | | | 1 | 2 | 3 | + | * | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | = | 0 | . | -// `--------------------------' `--------------------------' - [_FUN] = LAYOUT_split_3x6_3( - _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, XXXXXXX, _______, - _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PSLS, - _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PAST, - _______, _______, _______, KC_PENT, KC_P0, KC_PDOT - - ), - -// Navigation and function keys -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | | F1 | F2 | F2 | F4 | | | | Pg Up | Up | Pg Dn | Ins | Del | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | F5 | F6 | F7 | F8 | | | Home | Left | Down | Right | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | F9 | F10 | F11 | F12 | | | Space | End | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - [_NAV] = LAYOUT_split_3x6_3( - _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_DEL, - _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, - _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_SPC, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, _______, - _______, _______, _______, _______, _______, _______ - - ), - -// Mouse -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | | | Wh up | Ms up | Wh dn | | | | | | | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | | Ms lft | Ms dn | Ms rgt | | | | btn1 | btn3 | btn2 | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | | | Wh lft | | Wh rgt | | | | | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - [_MOUSE] = LAYOUT_split_3x6_3( - _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______, - _______, _______, KC_WH_L, _______, KC_WH_R, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ - - ), - -// Adjust -// ,-----------------------------------------------------. ,-----------------------------------------------------. -// | Reset | | | | | Print | | Num | Caps | Scroll | | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | On/Off | Hue ↑ | Sat ↑ | Brght ↑| | | | | | | | | | -// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -// | Cycle | Hue ↓ | Sat ↓ | Brght ↓| | | | | | | | | | -// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------' -// | | | | | | | | -// `--------------------------' `--------------------------' - [_ADJUST] = LAYOUT_split_3x6_3( - QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_NUM, KC_CAPS, KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX, - RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, _______, _______, _______, _______ - ) -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case CTRLSC: - return true; - default: - return false; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - -#ifdef OLED_ENABLE - if (record->event.pressed) { - set_keylog(keycode, record); - } -#endif // OLED_ENABLE - - switch (keycode) { - case FUN: - if (!host_keyboard_led_state().num_lock) { - tap_code(KC_NUM_LOCK); - } - return true; - break; - } - return true; -} - -void keyboard_post_init_user(void) { -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR); - rgb_matrix_sethsv_noeeprom(HSV_OFF); -#endif -} diff --git a/keyboards/crkbd/keymaps/toinux/oled.c b/keyboards/crkbd/keymaps/toinux/oled.c deleted file mode 100644 index df2a693d8d80..000000000000 --- a/keyboards/crkbd/keymaps/toinux/oled.c +++ /dev/null @@ -1,112 +0,0 @@ -/* Copyright 2022 @toinux - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "keycodes.h" -#include "oled.h" - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_keyboard_master()) { - return OLED_ROTATION_180; // flips the display 180 degrees if offhand - } - return rotation; -} - - -void oled_render_mod_status(void) { - - const uint8_t modifiers = get_mods() | get_oneshot_mods(); - - for (uint8_t i = 0; i < 2; i++) { - oled_set_cursor(9,i); - oled_write_P(gui_icon[(modifiers & MOD_MASK_GUI) ? 1 : 0][i], false); - oled_write_P(ctrl_icon[(modifiers & MOD_MASK_CTRL) ? 1 : 0][i], false); - oled_set_cursor(9,i+2); - oled_write_P(alt_icon[(modifiers & MOD_MASK_ALT) ? 1 : 0][i], false); - oled_write_P(shift_icon[(modifiers & MOD_MASK_SHIFT) ? 1 : 0][i], false); - } - -} - -void oled_render_layer_state(void) { - - char c = 0x9F - get_highest_layer(layer_state|default_layer_state); - - oled_set_cursor(20,0); - oled_write_char(0X00, false); - - oled_set_cursor(20,1); - oled_write_char(c, false); - c += 32; - oled_set_cursor(20,2); - oled_write_char(c, false); - c += 32; - oled_set_cursor(20,3); - oled_write_char(c, false); - -} - -void oled_render_led_state(void) { - // oled_advance_page(false) instead of oled_write_ln_P to not break OLED_TIMEOUT - oled_write_P(PSTR("NUM"), host_keyboard_led_state().num_lock); - oled_advance_page(false); - oled_write_P(PSTR("CAP"), host_keyboard_led_state().caps_lock); - oled_advance_page(false); - oled_write_P(PSTR("SCL"), host_keyboard_led_state().scroll_lock); - oled_advance_page(false); -} - -uint8_t last_row = 0; -uint8_t last_col = 0; - -void set_keylog(uint16_t keycode, keyrecord_t *record) { - last_row = record->event.key.row; - last_col = record->event.key.col; -} - -void oled_render_keylog(void) { - oled_write_char(last_row + '0', false); - oled_write_char('x', false); - oled_write_char(last_col + '0', false); -} - -void oled_render_logo(void) { - static const char PROGMEM kpu_logo[][3] = { - {0x82, 0x83, 0}, - {0x80, 0x81, 0}, - {0xa0, 0xa1, 0}, - {0xc0, 0xc1, 0} - }; - for (uint8_t i = 0; i < 4; i++) { - oled_write_ln_P(kpu_logo[i], false); - } - -} - -bool oled_task_user(void) { - if (is_keyboard_master ()) { - oled_render_led_state(); - oled_render_keylog(); - oled_render_mod_status(); - oled_render_layer_state(); - } else { - oled_render_logo(); - oled_scroll_right(); - oled_scroll_set_speed(4); - } - return false; -} diff --git a/keyboards/crkbd/keymaps/toinux/oled.h b/keyboards/crkbd/keymaps/toinux/oled.h deleted file mode 100644 index 30be16e602fb..000000000000 --- a/keyboards/crkbd/keymaps/toinux/oled.h +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright 2022 @toinux - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -static const char PROGMEM ctrl_icon[2][2][4] = { - { - // off - {0x93, 0x94, 0x95, 0}, - {0xB3, 0xB4, 0xB5, 0}, - }, - { - // on - {0x8F ,0x90, 0x91, 0}, - {0xAF ,0xB0, 0xB1, 0}, - } -}; - -static const char PROGMEM shift_icon[2][2][4] = { - { - // off - {0xD3, 0xD4, 0xB5, 0}, - {0xA8, 0xA9, 0xD5, 0}, - }, - { - // on - {0xCF ,0xD0, 0xB1, 0}, - {0xC8 ,0xC9, 0xD1, 0}, - } -}; - -static const char PROGMEM gui_icon[2][2][4] = { - { - // off - {0x92, 0x8C, 0x8D, 0}, - {0xB2, 0xAC, 0xAD, 0}, - }, - { - // on - {0x8E ,0x8A, 0x8B, 0}, - {0xAE ,0xAA, 0xAB, 0}, - } -}; - -static const char PROGMEM alt_icon[2][2][4] = { - { - // off - {0xB2, 0xCC, 0xCD, 0}, - {0xD2, 0x88, 0x89, 0}, - }, - { - // on - {0xAE ,0xCA, 0xCB, 0}, - {0xCE ,0x86, 0x87, 0}, - } -}; - -void set_keylog(uint16_t keycode, keyrecord_t *record); diff --git a/keyboards/crkbd/keymaps/toinux/rgb.c b/keyboards/crkbd/keymaps/toinux/rgb.c deleted file mode 100644 index 2b1a2266025a..000000000000 --- a/keyboards/crkbd/keymaps/toinux/rgb.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2022 @toinux - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "keycodes.h" - -static const char gaming_leds[] = {18, 22, 19, 16}; -static const char gaming2_leds[] = {23, 18, 17, 10, 9, 22, 19, 16, 11, 8}; -static const char nav_leds[] = {38, 43, 44, 46}; -static const char fun_leds[] = {45, 44, 37, 46, 43, 38, 47, 42, 39, 40}; -static const char mouse_leds[] = {11, 16, 17, 19}; -static const char adjust_leds[] = {6, 33}; - -bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(26, RGB_RED); - } - switch(get_highest_layer(layer_state|default_layer_state)) { - case _GAMING: - if (is_keyboard_master()) { - for (uint8_t i = 0; i < 4; i++) { - rgb_matrix_set_color(gaming_leds[i], 0x88, 0x00, 0x00); - } - } - break; - case _GAMING2: - if (is_keyboard_master()) { - for (uint8_t i = 0; i < 10; i++) { - rgb_matrix_set_color(gaming2_leds[i], RGB_GREEN); - } - } - break; - case _NAV: - for (uint8_t i = 0; i < 4; i++) { - rgb_matrix_set_color(nav_leds[i], RGB_BLUE); - } - break; - case _FUN: - for (uint8_t i = 0; i < 10; i++) { - rgb_matrix_set_color(fun_leds[i], RGB_GREEN); - } - break; - case _ADJUST: - for (uint8_t i = 0; i < 2; i++) { - rgb_matrix_set_color(adjust_leds[i], RGB_RED); - } - break; - case _MOUSE: - if (is_keyboard_master()) { - for (uint8_t i = 0; i < 4; i++) { - rgb_matrix_set_color(mouse_leds[i], RGB_PURPLE); - } - } - break; - - } - return false; -} diff --git a/keyboards/crkbd/keymaps/toinux/rules.mk b/keyboards/crkbd/keymaps/toinux/rules.mk deleted file mode 100644 index 59b90c792c25..000000000000 --- a/keyboards/crkbd/keymaps/toinux/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -MOUSEKEY_ENABLE = yes # Mouse keys -RGBLIGHT_ENABLE = no -RGB_MATRIX_ENABLE = yes -OLED_ENABLE = yes -LTO_ENABLE = yes -BOOTLOADER = atmel-dfu - -SRC += ./oled.c ./rgb.c diff --git a/keyboards/crkbd/keymaps/tominabox1/keymap.c b/keyboards/crkbd/keymaps/tominabox1/keymap.c deleted file mode 100755 index d58911194eea..000000000000 --- a/keyboards/crkbd/keymaps/tominabox1/keymap.c +++ /dev/null @@ -1,46 +0,0 @@ -#include QMK_KEYBOARD_H -#include "tominabox1.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BASE] = LAYOUT_wrapper( - ___________________CRKBD1__________________, - ___________________CRKBD2__________________, - ___________________CRKBD3__________________, - ___________________CRKBD4__________________ - ), - - [_RAISE] = LAYOUT_wrapper( - ___________________RAISE1__________________, - ___________________RAISE2__________________, - ___________________CRKBD_RAISE3____________, - ___________________CRKBD_RAISE4____________ - ), - - [_LOWER] = LAYOUT_wrapper( - _________________LOWER_1___________________, - _________________LOWER_2___________________, - ___________________CRKBD_LOW3______________, - ___________________CRKBD_LOW4______________ - ), - - [_ADJUST] = LAYOUT_wrapper( - ___________________ADJST1__________________, - ___________________CRKBD_ADJST2____________, - ___________________CRKBD_ADJST3____________, - ___________________CRKBD_ADJST4____________ - ), - - [_ARROW] = LAYOUT_wrapper( - ___________________ARROW1__________________, - ___________________ARROW2__________________, - ___________________ARROW3__________________, - ___________________ARROW4__________________ - ), - [_FKEY] = LAYOUT_wrapper( - ___________________FKEY1___________________, - ___________________FKEY2___________________, - ___________________CRKBD_FKEY3_____________, - ___________________CRKBD_FKEY4_____________ - ) - -}; diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c b/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c index 2d2535cda91a..5f95ad497f60 100644 --- a/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c +++ b/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c @@ -1,13 +1,4 @@ #include QMK_KEYBOARD_H -#include "bootloader.h" -#include "mousekey.h" -#include "pointing_device.h" -#include "report.h" - -#ifdef PROTOCOL_LUFA - #include "lufa.h" - #include "split_util.h" -#endif extern bool isScrollMode; diff --git a/keyboards/crkbd/rev1/keymaps/dvorak_42_key/config.h b/keyboards/crkbd/rev1/keymaps/dvorak_42_key/config.h deleted file mode 100644 index fcf6befb1659..000000000000 --- a/keyboards/crkbd/rev1/keymaps/dvorak_42_key/config.h +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2022 LucW (@luc-languagetools) -// SPDX-License-Identifier: GPL-2.0-or-later - - -#pragma once - - -/* Select hand configuration */ - -// #define MASTER_LEFT -#define MASTER_RIGHT -// #define EE_HANDS - -//#define QUICK_TAP_TERM 0 -//#define TAPPING_TERM 100 - -// #define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD -#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD - -// MOUSE SETTINGS -// ============== - -#define MOUSEKEY_TIME_TO_MAX 200 - -#define RGBLIGHT_LAYERS - -#ifdef RGBLIGHT_ENABLE - #define RGBLIGHT_LIMIT_VAL 90 - // #define RGBLIGHT_LIMIT_VAL 0 - #define RGBLIGHT_HUE_STEP 10 - #define RGBLIGHT_SAT_STEP 17 - #define RGBLIGHT_VAL_STEP 17 -#endif - -#ifdef RGB_MATRIX_ENABLE - // #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON - // #define RGB_MATRIX_KEYPRESSES // reacts to keypresses - // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE - // #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE - // #define ENABLE_RGB_MATRIX_SPLASH - //#define ENABLE_RGB_MATRIX_SOLID_SPLASH -#endif - -#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/rev1/keymaps/dvorak_42_key/keymap.c b/keyboards/crkbd/rev1/keymaps/dvorak_42_key/keymap.c deleted file mode 100644 index 43bbd9a617b1..000000000000 --- a/keyboards/crkbd/rev1/keymaps/dvorak_42_key/keymap.c +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright 2022 LucW (@luc-languagetools) -// SPDX-License-Identifier: GPL-2.0-or-later - - -#include QMK_KEYBOARD_H -#include -#include "dvorak_42_key.h" - -// to build: qmk compile -kb crkbd/rev1 -km dvorak_42_key - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [BASE] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - OSL(VSCODE), KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_TAB, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -OSL(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, TD(TD_DEL_WORD_DEL), - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -OSM(MOD_LSFT),KC_SEMICOLON, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, OSM(MOD_LSFT), - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - MO(BROWSER_CONTROL), MO(COMBINED),MO(KEYNAV), KC_ENTER, KC_SPACE, OSL(SHORTCUTS) - //`--------------------------' `--------------------------' - - ), - - [KEYNAV] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. -KC_ESC, RCTL(KC_ENTER), RCTL(KC_K), RCTL(KC_Z), RCTL(KC_S), RCTL(KC_N), KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DELETE, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -KC_TRNS, MO(KEYSEL), KC_TRNS, RSFT(KC_TAB), KC_TAB, RCTL(KC_F), LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), KC_BSPC, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -KC_TRNS, RCTL(KC_P), RCTL(KC_O), RCTL(KC_A), RCTL(KC_B), NP_DUPE_LINE, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDN, RCTL(KC_DELETE), - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ), - - - [KEYSEL] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RSFT(KC_HOME), RSFT(KC_UP), RSFT(KC_END), RSFT(KC_PGUP), KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), RSFT(KC_PGDN), KC_TRNS, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ), - - - [SHELL_NAV] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. -TO(BASE),SHELL_GIT_DIFF, SHELL_PGREP, SHELL_PLESS, SHELL_LESS, KC_TRNS, RCTL(KC_D), KC_HOME, KC_UP, KC_END, RCTL(KC_L), RCTL(KC_X), - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -OSL(SHELL_SCREEN),SHELL_GIT_STATUS,SHELL_CDPRE,SHELL_LSLTR,SHELL_LS, SHELL_LSLA, LALT(KC_B), KC_LEFT, KC_DOWN, KC_RIGHT, LALT(KC_F), RCTL(KC_W), - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -KC_TRNS,SHELL_SCREEN_LIST, SHELL_SCREENRD, SHELL_SCREEN_NEW, SHELL_TAILF, KC_TRNS, RCTL(KC_U), LALT(KC_DOT), RCTL(KC_R), KC_BTN2, RCTL(KC_K), RCTL(KC_C), - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, LCTL(LSFT(KC_V)), KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ), - - [SHELL_SCREEN] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. -TO(BASE),KC_TRNS, SCREEN_READREG_3, SCREEN_READREG_2, SCREEN_READREG_1,KC_TRNS, KC_TRNS, SCREEN_7, SCREEN_8, SCREEN_9, SCREEN_RENAME, KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -TO(BASE),KC_TRNS,SCREEN_PASTEREG_3,SCREEN_PASTEREG_2,SCREEN_PASTEREG_1,SCREEN_DETACH, SCREEN_TAB_LEFT, SCREEN_4, SCREEN_5, SCREEN_6, SCREEN_TAB_RIGHT, SCREEN_COPY_MODE, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, SCREEN_1, SCREEN_2, SCREEN_3, SCREEN_NUMBER, SCREEN_PASTE, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, SCREEN_KILL, SCREEN_NEW_TAB, SCREEN_0 - //`--------------------------' `--------------------------' - ), - - [VSCODE] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. -TO(BASE), KC_TRNS, VS_FIND_FILES, VS_CMT_BLOCK, VS_CMT_LINE, VS_BM_LISTALL, VS_COPYLINEDOWN, VS_REFERENCES, VS_DEFINITION, VS_IMPLEMENTATION, VS_LINE, VS_BRACKET, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -KC_TRNS, KC_TRNS, VS_TOGGLE_TERMINAL, VS_FOCUS_TERMINAL, VS_FOCUS_EDITOR, VS_BM_LIST, VS_CLOSETAB, VS_TABLEFT, VS_TABRIGHT, VS_SYMBOLEDITOR, VS_FILE, VS_BACK, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, VS_BM_CLEARALL, VS_JUMPY, VS_BM_PREV, VS_BM_NEXT, VS_GROUP_1, VS_GROUP_2, VS_BM_TOGGLE, -//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, VS_DEL_LEFT, VS_DEL_RIGHT, VS_DEL_LINE, VS_JUMPY, VS_COMMANDS - //`--------------------------' `--------------------------' - ), - - [COMBINED] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PLUS, KC_7, KC_8, KC_9, KC_ASTR, KC_PIPE, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_GRAVE, KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_UNDS, KC_MINUS, KC_4, KC_5, KC_6, KC_SLSH, KC_BSLS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_CIRC, KC_COLN, KC_DQUO, KC_LCBR, KC_RCBR, KC_AMPR, KC_EQUAL, KC_1, KC_2, KC_3, KC_QUES, KC_DOT, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0 - //`--------------------------' `--------------------------' - ), - - // chrome OS keyboard shortcuts: https://support.google.com/chromebook/answer/183101?hl=en - // search key == windows key - [BROWSER_CONTROL] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. -KC_TRNS, KC_TRNS, KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, KC_TRNS, KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - CO_WS_LEFT, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_DOWN, RCTL(KC_PGUP), RCTL(KC_PGDN), KC_MS_WH_DOWN, LALT(KC_LEFT), CO_WS_RIGHT, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -KC_TRNS, RCTL(LSFT(KC_TAB)), RCTL(KC_TAB), WINDOWS10_WORKSPACE_LEFT, WINDOWS10_WORKSPACE_RIGHT, WINDOWS10_TASK_VIEW, KC_TRNS, RCTL(KC_1), RCTL(KC_9), LCTL(KC_L), KC_F5, KC_TRNS, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_W), RCTL(KC_T), KC_TRNS - //`--------------------------' `--------------------------' - ), - - - [SHORTCUTS] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, MEH(KC_F1), MEH(KC_F2), MEH(KC_F3), MEH(KC_F4), MEH(KC_F5), MEH(KC_F6), - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MEH(KC_F7), MEH(KC_F8), MEH(KC_F9), MEH(KC_F10), MEH(KC_F11), MEH(KC_F12), - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| -KC_TRNS, OSM(MOD_LSFT), OSM(MOD_LGUI), OSM(MOD_LALT), OSM(MOD_LCTL), KC_TRNS, MEH(KC_F13), MEH(KC_F14), MEH(KC_F15), MEH(KC_F16), MEH(KC_F17), MEH(KC_F18), - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(SHORTCUTS), TO(BASE) - //`--------------------------' `--------------------------' - ), - - /* - // empty layer - [15] = LAYOUT_split_3x6_3( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - //`--------------------------' `--------------------------' - ), - */ - - -}; - -#ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - if (!is_keyboard_master()) { - return OLED_ROTATION_180; // flips the display 180 degrees if offhand - } - // return rotation; - return OLED_ROTATION_180; -} - - -#define DISPLAY_LAYER_NAME(LAYER_NAME, LAYER_STRING) \ - if(get_highest_layer(layer_state) == LAYER_NAME) { \ - oled_write_ln_P(PSTR(LAYER_STRING), false); \ - return;\ - }\ - - -void oled_render_layer_state(void) { - // if caps word is enabled, show - if(is_caps_word_on()) { - oled_write_ln_P(PSTR("CAPS WORD"), false); - return; - } - DISPLAY_LAYER_NAME(SHORTCUTS, "SHORTCUTS"); - DISPLAY_LAYER_NAME(VSCODE, "VSCODE"); - DISPLAY_LAYER_NAME(COMBINED, "SYMBOLS"); - DISPLAY_LAYER_NAME(BROWSER_CONTROL, "BROWSER"); - DISPLAY_LAYER_NAME(SHELL_SCREEN, "SHELL SCREEN"); - DISPLAY_LAYER_NAME(SHELL_NAV, "SHELL NAV"); - DISPLAY_LAYER_NAME(KEYSEL, "KEYSEL"); - DISPLAY_LAYER_NAME(KEYNAV, "KEYNAV"); - DISPLAY_LAYER_NAME(BASE, "BASE"); - -} - -const rgblight_segment_t PROGMEM rgb_layer_off[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 0, 0} -); - -const rgblight_segment_t PROGMEM rgb_layer_blue[] = RGBLIGHT_LAYER_SEGMENTS( - {0, RGBLED_NUM, HSV_BLUE} -); - -const rgblight_segment_t PROGMEM rgb_layer_purple[] = RGBLIGHT_LAYER_SEGMENTS( - {0, RGBLED_NUM, HSV_PURPLE} -); - -const rgblight_segment_t PROGMEM rgb_layer_red[] = RGBLIGHT_LAYER_SEGMENTS( - {0, RGBLED_NUM, HSV_RED} -); - -const rgblight_segment_t PROGMEM rgb_layer_orange[] = RGBLIGHT_LAYER_SEGMENTS( - {0, RGBLED_NUM, HSV_ORANGE} -); - -const rgblight_segment_t PROGMEM rgb_layer_yellow[] = RGBLIGHT_LAYER_SEGMENTS( - {0, RGBLED_NUM, HSV_YELLOW} -); - -const rgblight_segment_t PROGMEM rgb_layer_green[] = RGBLIGHT_LAYER_SEGMENTS( - {0, RGBLED_NUM, HSV_GREEN} -); - -const rgblight_segment_t PROGMEM rgb_layer_pink[] = RGBLIGHT_LAYER_SEGMENTS( - {0, RGBLED_NUM, HSV_PINK} -); - - -// Now define the array of layers. Later layers take precedence -const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( - rgb_layer_off, - rgb_layer_blue, - rgb_layer_purple, - rgb_layer_red, - rgb_layer_orange, - rgb_layer_yellow, - rgb_layer_green, - rgb_layer_pink -); - -void keyboard_post_init_user(void) { - // Enable the LED layers - rgblight_layers = my_rgb_layers; -} - -layer_state_t default_layer_state_set_user(layer_state_t state) { - rgblight_set_layer_state(0, layer_state_cmp(state, BASE)); - return state; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - - - rgblight_set_layer_state(1, layer_state_cmp(state, KEYNAV)); - rgblight_set_layer_state(2, layer_state_cmp(state, KEYSEL)); - - - rgblight_set_layer_state(3, layer_state_cmp(state, SHELL_NAV)); - rgblight_set_layer_state(4, layer_state_cmp(state, SHELL_SCREEN)); - - rgblight_set_layer_state(5, layer_state_cmp(state, SHORTCUTS)); - - rgblight_set_layer_state(6, layer_state_cmp(state, VSCODE)); - - return state; -} - -void caps_word_set_user(bool active) { - // will enable/disable rgb layer 7 based on whether caps word is active - rgblight_set_layer_state(7, active); -} - -void render_bootmagic_status(bool status) { - /* Show Ctrl-Gui Swap options */ - static const char PROGMEM logo[][2][3] = { - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - }; - if (status) { - oled_write_ln_P(logo[0][0], false); - oled_write_ln_P(logo[0][1], false); - } else { - oled_write_ln_P(logo[1][0], false); - oled_write_ln_P(logo[1][1], false); - } -} - -void oled_render_logo(void) { - static const char PROGMEM crkbd_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(crkbd_logo, false); -} - -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/rev1/keymaps/dvorak_42_key/rules.mk b/keyboards/crkbd/rev1/keymaps/dvorak_42_key/rules.mk deleted file mode 100644 index 9fe565335aec..000000000000 --- a/keyboards/crkbd/rev1/keymaps/dvorak_42_key/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright 2022 LucW (@luc-languagetools) -# SPDX-License-Identifier: GPL-2.0-or-later - -MOUSEKEY_ENABLE = yes # Mouse keys -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -# RGB_MATRIX_ENABLE = no -OLED_ENABLE = yes -LTO_ENABLE = yes diff --git a/keyboards/crowboard/rules.mk b/keyboards/crowboard/rules.mk index 37ad1d4c6070..6e7633bfe015 100644 --- a/keyboards/crowboard/rules.mk +++ b/keyboards/crowboard/rules.mk @@ -1 +1 @@ -PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS! +# This file intentionally left blank diff --git a/keyboards/custommk/ergostrafer/info.json b/keyboards/custommk/ergostrafer/info.json index 590925065e18..a1283114c8ed 100644 --- a/keyboards/custommk/ergostrafer/info.json +++ b/keyboards/custommk/ergostrafer/info.json @@ -4,6 +4,9 @@ "maintainer": "customMK", "bootloader": "stm32-dfu", "diode_direction": "ROW2COL", + "eeprom": { + "driver": "spi" + }, "features": { "bootmagic": true, "command": false, @@ -64,7 +67,7 @@ { "matrix": [4, 2], "label":"Z", "x":2.5, "y":5.6 }, { "matrix": [4, 3], "label":"S", "x":3.5, "y":4.5 }, { "matrix": [4, 5], "label":"V", "x":5, "y":5.75, "w":1.5 }, - { "matrix": [4, 6], "label":"Space", "x":6.5, "y":6.85, "w":1.75 } + { "matrix": [4, 6], "label":"Space", "x":6.5, "y":6.85, "w":1.75 }, { "matrix": [5, 1], "label":"L Ctrl Duck", "x":0.25, "y":6.75, "w":1.5 }, { "matrix": [5, 3], "label":"X", "x":3.5, "y":5.6 }, diff --git a/keyboards/custommk/ergostrafer/rules.mk b/keyboards/custommk/ergostrafer/rules.mk index ee519ea8b55b..72f75f4367e0 100644 --- a/keyboards/custommk/ergostrafer/rules.mk +++ b/keyboards/custommk/ergostrafer/rules.mk @@ -1,3 +1 @@ -EEPROM_DRIVER = spi - AUDIO_DRIVER = pwm_hardware diff --git a/keyboards/custommk/evo70_r2/config.h b/keyboards/custommk/evo70_r2/config.h index 25ab789d75fb..62606cf1ee60 100644 --- a/keyboards/custommk/evo70_r2/config.h +++ b/keyboards/custommk/evo70_r2/config.h @@ -26,6 +26,7 @@ #define MATRIX_ROW_PINS { A8, A1, A2, B1, A7 } // FRAM configuration +#define EEPROM_SPI_MB85RS64V #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A0 #define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 4 // 48MHz / 4 = 12MHz; max supported by MB85R64 is 20MHz diff --git a/keyboards/custommk/evo70_r2/info.json b/keyboards/custommk/evo70_r2/info.json index 18c618abc6d2..a11daef092d1 100644 --- a/keyboards/custommk/evo70_r2/info.json +++ b/keyboards/custommk/evo70_r2/info.json @@ -24,6 +24,9 @@ "device_version": "1.0.0" }, "diode_direction": "ROW2COL", + "eeprom": { + "driver": "spi" + }, "processor": "STM32F411", "bootloader": "stm32-dfu", "rgblight": { diff --git a/keyboards/custommk/evo70_r2/rules.mk b/keyboards/custommk/evo70_r2/rules.mk index b79d08c6b759..193fe4f1a435 100644 --- a/keyboards/custommk/evo70_r2/rules.mk +++ b/keyboards/custommk/evo70_r2/rules.mk @@ -3,8 +3,6 @@ AUDIO_DRIVER = pwm_hardware # project specific files SRC += matrix.c -EEPROM_DRIVER = spi - QUANTUM_PAINTER_DRIVERS = st7735_spi CUSTOM_MATRIX = lite diff --git a/keyboards/cutie_club/borsdorf/keymaps/zyber/keymap.c b/keyboards/cutie_club/borsdorf/keymaps/zyber/keymap.c deleted file mode 100644 index 468a16f92d97..000000000000 --- a/keyboards/cutie_club/borsdorf/keymaps/zyber/keymap.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright 2020 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 -#include "zyber.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base */ - [0] = LAYOUT_rshift( - 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, LGUI(KC_LEFT), - 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, LGUI(KC_RIGHT), - L1_EXPL, 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_UP, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT - ), - [1] = LAYOUT_rshift( - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, - KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/cutie_club/fidelity/keymaps/vial/config.h b/keyboards/cutie_club/fidelity/keymaps/vial/config.h new file mode 100644 index 000000000000..148cf0892e7d --- /dev/null +++ b/keyboards/cutie_club/fidelity/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0xCF, 0xDB, 0x3F, 0x71, 0x64, 0x55, 0x5B, 0x03} + +#define VIAL_UNLOCK_COMBO_ROWS { 2, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 11 } diff --git a/keyboards/cutie_club/fidelity/keymaps/vial/keymap.c b/keyboards/cutie_club/fidelity/keymaps/vial/keymap.c new file mode 100644 index 000000000000..c98b1fcdcb2b --- /dev/null +++ b/keyboards/cutie_club/fidelity/keymaps/vial/keymap.c @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [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_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGDN, + 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, MO(1), + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/cutie_club/fidelity/keymaps/vial/rules.mk b/keyboards/cutie_club/fidelity/keymaps/vial/rules.mk new file mode 100644 index 000000000000..4f7618e9b211 --- /dev/null +++ b/keyboards/cutie_club/fidelity/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes diff --git a/keyboards/cutie_club/fidelity/keymaps/vial/vial.json b/keyboards/cutie_club/fidelity/keymaps/vial/vial.json new file mode 100644 index 000000000000..8ce11b23d142 --- /dev/null +++ b/keyboards/cutie_club/fidelity/keymaps/vial/vial.json @@ -0,0 +1,162 @@ +{ + "name": "HAND Engineering Fidelity", + "matrix": { + "rows": 5, + "cols": 16 + }, + "layouts": { + "labels": [ + "Split Backspace", + [ + "Enter", + "ANSI", + "ISO" + ], + "Split Left Shift" + ], + "keymap": [ + [ + { + "x": 2.5 + }, + "0,0", + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "w": 2 + }, + "0,13\n\n\n0,0", + "0,15", + { + "x": 0.75 + }, + "0,13\n\n\n0,1", + "0,14\n\n\n0,1" + ], + [ + { + "x": 2.5, + "w": 1.5 + }, + "1,0", + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "w": 1.5 + }, + "1,13\n\n\n1,0", + "1,15", + { + "x": 1.5, + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "1,14\n\n\n1,1" + ], + [ + { + "x": 2.5, + "w": 1.75 + }, + "2,0", + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + { + "w": 2.25 + }, + "2,12\n\n\n1,0", + "2,15", + { + "x": 0.5 + }, + "2,12\n\n\n1,1" + ], + [ + { + "w": 1.25 + }, + "3,0\n\n\n2,1", + "3,1\n\n\n2,1", + { + "x": 0.25, + "w": 2.25 + }, + "3,0\n\n\n2,0", + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "w": 1.75 + }, + "3,12", + "3,14", + "3,15" + ], + [ + { + "x": 2.5, + "w": 1.5 + }, + "4,0", + { + "x": 0.75, + "w": 1.5 + }, + "4,2", + { + "w": 7 + }, + "4,7", + { + "w": 1.5 + }, + "4,11", + { + "x": 0.75 + }, + "4,13", + "4,14", + "4,15" + ] + ] + } +} diff --git a/keyboards/dailycraft/wings42/rev2/info.json b/keyboards/dailycraft/wings42/rev2/info.json index 261157627ac2..a3c3e2396efe 100644 --- a/keyboards/dailycraft/wings42/rev2/info.json +++ b/keyboards/dailycraft/wings42/rev2/info.json @@ -27,8 +27,12 @@ }, "processor": "atmega32u4", "bootloader": "caterina", + "layout_aliases": { + "LAYOUT_split_3x6_3_2": "LAYOUT_split_3x6_3" + }, + "community_layouts": ["split_3x6_3"], "layouts": { - "LAYOUT_split_3x6_3_2": { + "LAYOUT_split_3x6_3": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0.875}, {"matrix": [0, 1], "x": 1, "y": 0.625}, diff --git a/keyboards/dailycraft/wings42/rev2/keymaps/default/keymap.c b/keyboards/dailycraft/wings42/rev2/keymaps/default/keymap.c index d809d59f4c14..51647fe79566 100644 --- a/keyboards/dailycraft/wings42/rev2/keymaps/default/keymap.c +++ b/keyboards/dailycraft/wings42/rev2/keymaps/default/keymap.c @@ -31,7 +31,7 @@ enum layer_number { #define KC_A_DEL ALT_T(KC_DEL) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_split_3x6_3_2( + [_QWERTY] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+---------+--------+---------+--------+--------. KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, //|--------+--------+--------+--------+--------+--------| |--------+---------+--------+---------+--------+--------| @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // `+--------+--------+--------' `--------+---------+--------+' ), - [_RAISE] = LAYOUT_split_3x6_3_2( + [_RAISE] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // `+--------+--------+--------' `--------+-------+--------+' ), - [_LOWER] = LAYOUT_split_3x6_3_2( + [_LOWER] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // `+--------+--------+--------' `--------+--------+--------+' ), - [_ADJUST] = LAYOUT_split_3x6_3_2( + [_ADJUST] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| diff --git a/keyboards/dailycraft/wings42/rev2/keymaps/via/keymap.c b/keyboards/dailycraft/wings42/rev2/keymaps/via/keymap.c index 362164c5ec0e..0995600a4735 100644 --- a/keyboards/dailycraft/wings42/rev2/keymaps/via/keymap.c +++ b/keyboards/dailycraft/wings42/rev2/keymaps/via/keymap.c @@ -31,7 +31,7 @@ enum layer_number { #define KC_A_DEL ALT_T(KC_DEL) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_split_3x6_3_2( + [_QWERTY] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+---------+--------+---------+--------+--------. KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, //|--------+--------+--------+--------+--------+--------| |--------+---------+--------+---------+--------+--------| @@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // `+--------+--------+--------' `--------+---------+--------+' ), - [_RAISE] = LAYOUT_split_3x6_3_2( + [_RAISE] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. _______, KC_BSLS, KC_CIRC, KC_EXLM, KC_AMPR, KC_PIPE, KC_AT , KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // `+--------+--------+--------' `--------+-------+--------+' ), - [_LOWER] = LAYOUT_split_3x6_3_2( + [_LOWER] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , _______, KC_EQL , KC_PLUS, KC_ASTR, KC_PERC, KC_MINS, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| @@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // `+--------+--------+--------' `--------+--------+--------+' ), - [_ADJUST] = LAYOUT_split_3x6_3_2( + [_ADJUST] = LAYOUT_split_3x6_3( //,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| diff --git a/keyboards/dark/magnum_ergo_1/config.h b/keyboards/dark/magnum_ergo_1/config.h new file mode 100644 index 000000000000..207bc978e870 --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/config.h @@ -0,0 +1,35 @@ +/* Copyright 2023 Gondolindrim + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE + +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 2 +#define BACKLIGHT_PAL_MODE 2 + +#define LED_CAPS_LOCK_PIN B1 +#define LED_INDICATOR_1 C4 +#define LED_INDICATOR_2 C5 +#define LED_INDICATOR_3 B0 +#define LED_INDICATOR_4 A5 +#define LED_INDICATOR_5 C15 + +#define WEAR_LEVELING_LOGICAL_SIZE 2048 +#define WEAR_LEVELING_BACKING_SIZE 4096 diff --git a/keyboards/dark/magnum_ergo_1/halconf.h b/keyboards/dark/magnum_ergo_1/halconf.h new file mode 100644 index 000000000000..8dd395b2f655 --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/halconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Gondolindrim . + */ + +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/dark/magnum_ergo_1/info.json b/keyboards/dark/magnum_ergo_1/info.json new file mode 100644 index 000000000000..a213d92fd56e --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Magnum Ergo 1", + "manufacturer": "Gondolindrim X Dark", + "url": "", + "maintainer": "Gondolindrim", + "usb": { + "vid": "0x4744", + "pid": "0x4D45", + "device_version": "0.0.1" + }, + "features": { + "audio": false, + "backlight": true, + "bootmagic": true, + "command": false, + "console": false, + "encoder": false, + "extrakey": true, + "lto": true, + "mousekey": false, + "nkro": true, + "rgblight": false + }, + "diode_direction": "COL2ROW", + "backlight": { + "pin": "C7", + "levels": 20, + "breathing": true + }, + "matrix_pins": { + "cols": ["C8", "C9" , "C6" , "B15", "B14", "B13", "B12", "B9" , "A4" , "B4" , "A2" , "C0" , "C1" , "C2" , "A1" ], + "rows": ["A10", "A8" , "B10", "A7" , "A6" , "A0", "C3" , "B5", "B8" , "A3" ] + }, + "processor": "STM32F401", + "bootloader": "stm32-dfu", + "community_layouts": ["alice_split_bs"], + "layouts": { + "LAYOUT_alice_split_bs": { + "layout": [ + {"label": "Esc", "matrix": [0,0], "x":0.5, "y":0}, + {"label": "`~", "matrix": [0,1], "x":1.7, "y":0}, + {"label": "1!", "matrix": [0,2], "x":2.7, "y":0}, + {"label": "2@", "matrix": [0,3], "x":3.7, "y":0}, + {"label": "3#", "matrix": [0,4], "x":4.7, "y":0}, + {"label": "4$", "matrix": [0,5], "x":5.7, "y":0}, + {"label": "5%", "matrix": [4,5], "x":6.7, "y":0}, + {"label": "6^", "matrix": [0,6], "x":7.7, "y":0}, + {"label": "7&", "matrix": [5,7], "x":9.15, "y":0}, + {"label": "8*", "matrix": [5,8], "x":10.15, "y":0}, + {"label": "9(", "matrix": [5,9], "x":11.15, "y":0}, + {"label": "0)", "matrix": [5,10], "x":12.15, "y":0}, + {"label": "-_", "matrix": [5,11], "x":13.15, "y":0}, + {"label": "=+", "matrix": [5,12], "x":14.15, "y":0}, + {"label": "Backspace", "matrix": [5,13], "x":15.15, "y":0}, + {"label": "Backspace", "matrix": [5,14], "x":16.15, "y":0}, + {"label": "Page Up", "matrix": [1,0], "x":0.25, "y":1}, + {"label": "Tab", "matrix": [1,1], "x":1.5, "y":1, "w":1.5}, + {"label": "Q", "matrix": [1,2], "x":3, "y":1}, + {"label": "W", "matrix": [1,3], "x":4, "y":1}, + {"label": "E", "matrix": [1,4], "x":5, "y":1}, + {"label": "R", "matrix": [1,5], "x":6, "y":1}, + {"label": "T", "matrix": [1,6], "x":7, "y":1}, + {"label": "Y", "matrix": [6,7], "x":9, "y":1}, + {"label": "U", "matrix": [6,8], "x":10, "y":1}, + {"label": "I", "matrix": [6,9], "x":11, "y":1}, + {"label": "O", "matrix": [6,10], "x":12, "y":1}, + {"label": "P", "matrix": [6,11], "x":13, "y":1}, + {"label": "[{", "matrix": [6,12], "x":14, "y":1}, + {"label": "]}", "matrix": [6,13], "x":15, "y":1}, + {"label": "\\|", "matrix": [6,14], "x":16, "y":1, "w":1.5}, + {"label": "Page Down", "matrix": [2,0], "x":0, "y":2}, + {"label": "Caps Lock", "matrix": [2,1], "x":1.3, "y":2, "w":1.75}, + {"label": "A", "matrix": [2,2], "x":3.05, "y":2}, + {"label": "S", "matrix": [2,3], "x":4.05, "y":2}, + {"label": "D", "matrix": [2,4], "x":5.05, "y":2}, + {"label": "F", "matrix": [2,5], "x":6.05, "y":2}, + {"label": "G", "matrix": [2,6], "x":7.05, "y":2}, + {"label": "H", "matrix": [7,7], "x":9.4, "y":2}, + {"label": "J", "matrix": [7,8], "x":10.4, "y":2}, + {"label": "K", "matrix": [7,9], "x":11.4, "y":2}, + {"label": "L", "matrix": [7,10], "x":12.4, "y":2}, + {"label": ";:", "matrix": [7,11], "x":13.4, "y":2}, + {"label": "'\"", "matrix": [7,12], "x":14.4, "y":2}, + {"label": "Enter", "matrix": [7,14], "x":15.4, "y":2, "w":2.25}, + {"label": "Shift", "matrix": [3,1], "x":1.05, "y":3, "w":2.25}, + {"label": "Z", "matrix": [3,2], "x":3.3, "y":3}, + {"label": "X", "matrix": [3,3], "x":4.3, "y":3}, + {"label": "C", "matrix": [3,4], "x":5.3, "y":3}, + {"label": "V", "matrix": [3,5], "x":6.3, "y":3}, + {"label": "B", "matrix": [3,6], "x":7.3, "y":3}, + {"label": "B", "matrix": [8,7], "x":9.1, "y":3}, + {"label": "N", "matrix": [8,8], "x":10.1, "y":3}, + {"label": "M", "matrix": [8,9], "x":11.1, "y":3}, + {"label": ",<", "matrix": [8,10], "x":12.1, "y":3}, + {"label": ".>", "matrix": [8,11], "x":13.1, "y":3}, + {"label": "/?", "matrix": [8,12], "x":14.1, "y":3}, + {"label": "Shift", "matrix": [8,13], "x":15.1, "y":3, "w":1.75}, + {"label": "MO(1)", "matrix": [8,14], "x":16.85, "y":3}, + {"label": "LCtrl", "matrix": [4,1], "x":1.3, "y":4, "w":1.5}, + {"label": "LAlt", "matrix": [4,3], "x":3.6, "y":4, "w":1.5}, + {"label": "Space", "matrix": [4,4], "x":5.1, "y":4, "w":2.25}, + {"label": "Space", "matrix": [4,6], "x":7.35, "y":4}, + {"label": "Space", "matrix": [9,8], "x":9.0, "y":4, "w":2.75}, + {"label": "RAlt", "matrix": [9,10], "x":11.75, "y":4, "w":1.5}, + {"label": "RCtrl", "matrix": [9,14], "x":15.35, "y":4, "w":1.5}] + } + } +} diff --git a/keyboards/dark/magnum_ergo_1/keymaps/default/keymap.c b/keyboards/dark/magnum_ergo_1/keymaps/default/keymap.c new file mode 100644 index 000000000000..67e3ff2387b7 --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/keymaps/default/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2023 Gondolindrim + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_alice_split_bs( /* Base */ + KC_GRV , 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_INS , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, + KC_DEL , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RCTL +), +[1] = LAYOUT_alice_split_bs( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/dark/magnum_ergo_1/keymaps/via/keymap.c b/keyboards/dark/magnum_ergo_1/keymaps/via/keymap.c new file mode 100644 index 000000000000..67e3ff2387b7 --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2023 Gondolindrim + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_alice_split_bs( /* Base */ + KC_GRV , 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_INS , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, + KC_DEL , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , + KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO(1) , + KC_LCTL, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RCTL +), +[1] = LAYOUT_alice_split_bs( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/mlego/m65/keymaps/via/rules.mk b/keyboards/dark/magnum_ergo_1/keymaps/via/rules.mk similarity index 100% rename from keyboards/mlego/m65/keymaps/via/rules.mk rename to keyboards/dark/magnum_ergo_1/keymaps/via/rules.mk diff --git a/keyboards/dark/magnum_ergo_1/magnum_ergo_1.c b/keyboards/dark/magnum_ergo_1/magnum_ergo_1.c new file mode 100644 index 000000000000..9125410df056 --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/magnum_ergo_1.c @@ -0,0 +1,93 @@ +/* Copyright 2023 Gondolindrim + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +void keyoard_post_init_kb(void) { + setPinOutput(LED_CAPS_LOCK_PIN); + setPinOutput(LED_INDICATOR_1); + setPinOutput(LED_INDICATOR_2); + setPinOutput(LED_INDICATOR_3); + setPinOutput(LED_INDICATOR_4); + setPinOutput(LED_INDICATOR_5); +#ifndef LED_CAPS_LOCK_PIN + writePin(LED_CAPS_LOCK_PIN, 0); +#endif + +#ifndef LED_INDICATOR_1 + writePin(LED_INDICATOR_1, 0); +#endif + +#ifndef LED_INDICATOR_2 + writePin(LED_INDICATOR_2, 0); +#endif + +#ifndef LED_INDICATOR_3 + writePin(LED_INDICATOR_3, 0); +#endif + +#ifndef LED_INDICATOR_4 + writePin(LED_INDICATOR_4, 0); +#endif + +#ifndef LED_INDICATOR_5 + writePin(LED_INDICATOR_5, 0); +#endif + keyboard_post_init_user(); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(state)) { + case 1: +#ifdef LED_INDICATOR_4 + writePin(LED_INDICATOR_4, 1); +#endif + +#ifdef LED_INDICATOR_5 + writePin(LED_INDICATOR_5, 1); +#endif + break; + case 2: +#ifdef LED_INDICATOR_1 + writePin(LED_INDICATOR_1, 1); +#endif +#ifdef LED_INDICATOR_2 + writePin(LED_INDICATOR_2, 1); +#endif +#ifdef LED_INDICATOR_3 + writePin(LED_INDICATOR_3, 1); +#endif + break; + default: +#ifdef LED_INDICATOR_1 + writePin(LED_INDICATOR_1, 0); +#endif +#ifdef LED_INDICATOR_2 + writePin(LED_INDICATOR_2, 0); +#endif +#ifdef LED_INDICATOR_3 + writePin(LED_INDICATOR_3, 0); +#endif +#ifdef LED_INDICATOR_4 + writePin(LED_INDICATOR_4, 0); +#endif +#ifdef LED_INDICATOR_5 + writePin(LED_INDICATOR_5, 0); +#endif + break; + } + return layer_state_set_user(state); +} diff --git a/keyboards/dark/magnum_ergo_1/mcuconf.h b/keyboards/dark/magnum_ergo_1/mcuconf.h new file mode 100644 index 000000000000..b7b462f8cd3c --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Gondolindrim + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/dark/magnum_ergo_1/readme.md b/keyboards/dark/magnum_ergo_1/readme.md new file mode 100644 index 000000000000..c6a5d23b5668 --- /dev/null +++ b/keyboards/dark/magnum_ergo_1/readme.md @@ -0,0 +1,28 @@ +# Gondolindrim X Dark Magnum Ergo 1 PCB QMK firmware + +The Magnum Ergo 1 is an Alice-layout ergonomic keyboard designed by Dark, with a PCB designer by Gondolindrim. + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: proprietary PCB using STM32F4x1C microcontroller; +* Availability: as of november 2022 both keyboard and PCB were sold in a private Group Buy; therefore availability is limited. + +## How to flash + +### Enter bootloader + +The DFU state in the bootloader can be accessed in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key, grave accent in the default keymap) and plug in the keyboard; +* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds; +* **Keycode in layout**: Press the key mapped to `QK_BOOT`; in the default layout, that is top left key ('grave') in layer 1. + +### How to compile and flash + +You can compile the Iron 165R2 default keymap by using the following: + + make magnum_ergo_1:default + +And use dfu-util in the command line or through a GUI like QMK toolbox to upload the firmware to the PCB. To directly flash the PCB after it is put into a DFU state, use: + + make magnum_ergo_1:default:flash + diff --git a/users/cbbrowne/cbbrowne.c b/keyboards/dark/magnum_ergo_1/rules.mk similarity index 100% rename from users/cbbrowne/cbbrowne.c rename to keyboards/dark/magnum_ergo_1/rules.mk diff --git a/keyboards/darkproject/kd83a_bfg_edition/config.h b/keyboards/darkproject/kd83a_bfg_edition/config.h new file mode 100644 index 000000000000..9cf993b8613c --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/config.h @@ -0,0 +1,44 @@ +/* Copyright 2022 GSKY + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +/* External spi flash */ +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14 +#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) + +/* SPI Config for LED Driver */ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN A5 +#define SPI_MOSI_PIN A7 +#define SPI_MISO_PIN A6 + +#define DRIVER_1_CS A15 +#define DRIVER_2_CS B15 +#define DRIVER_1_EN C13 +#define DRIVER_2_EN C13 + +#define DRIVER_COUNT 2 +#define DRIVER_1_LED_TOTAL 66 +#define DRIVER_2_LED_TOTAL 19 +#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/darkproject/kd83a_bfg_edition/halconf.h b/keyboards/darkproject/kd83a_bfg_edition/halconf.h new file mode 100644 index 000000000000..8f61d3fc64ff --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/halconf.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/darkproject/kd83a_bfg_edition/info.json b/keyboards/darkproject/kd83a_bfg_edition/info.json new file mode 100644 index 000000000000..5795c11cca35 --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/info.json @@ -0,0 +1,270 @@ +{ + "manufacturer": "Gsky", + "keyboard_name": "KD83A_BFG_Edition", + "maintainer": "Gsky", + "bootloader": "wb32-dfu", + "bootmagic": { + "matrix": [1, 3] + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "C2", "pin_b": "C3"} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "indicators": { + "caps_lock": "C14" + }, + "matrix_pins": { + "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], + "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B12"] + }, + "processor": "WB32FQ95", + "qmk": { + "tap_keycode_delay": 10 + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "center_point": [76, 25], + "driver": "aw20216", + "layout": [ + { "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [3, 6], "x": 30, "y": 0 }, + { "flags": 4, "matrix": [3, 1], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [3, 3], "x": 50, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 60, "y": 0 }, + { "flags": 4, "matrix": [6, 3], "x": 70, "y": 0 }, + { "flags": 4, "matrix": [7, 1], "x": 80, "y": 0 }, + { "flags": 4, "matrix": [7, 6], "x": 90, "y": 0 }, + { "flags": 4, "matrix": [10, 6], "x": 100, "y": 0 }, + { "flags": 4, "matrix": [10, 7], "x": 110, "y": 0 }, + { "flags": 4, "matrix": [10, 3], "x": 120, "y": 0 }, + { "flags": 4, "matrix": [10, 5], "x": 130, "y": 0 }, + { "flags": 4, "matrix": [9, 7], "x": 140, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 150, "y": 0 }, + { "flags": 4, "matrix": [1, 6], "x": 0, "y": 10 }, + { "flags": 4, "matrix": [1, 7], "x": 10, "y": 10 }, + { "flags": 4, "matrix": [2, 7], "x": 20, "y": 10 }, + { "flags": 4, "matrix": [3, 7], "x": 30, "y": 10 }, + { "flags": 4, "matrix": [4, 7], "x": 40, "y": 10 }, + { "flags": 4, "matrix": [4, 6], "x": 50, "y": 10 }, + { "flags": 4, "matrix": [5, 6], "x": 60, "y": 10 }, + { "flags": 4, "matrix": [5, 7], "x": 70, "y": 10 }, + { "flags": 4, "matrix": [6, 7], "x": 80, "y": 10 }, + { "flags": 4, "matrix": [7, 7], "x": 90, "y": 10 }, + { "flags": 4, "matrix": [8, 7], "x": 100, "y": 10 }, + { "flags": 4, "matrix": [8, 6], "x": 110, "y": 10 }, + { "flags": 4, "matrix": [6, 6], "x": 120, "y": 10 }, + { "flags": 4, "matrix": [10, 1], "x": 130, "y": 10 }, + { "flags": 4, "matrix": [11, 6], "x": 150, "y": 10 }, + { "flags": 4, "matrix": [1, 1], "x": 0, "y": 20 }, + { "flags": 4, "matrix": [1, 0], "x": 15, "y": 20 }, + { "flags": 4, "matrix": [2, 0], "x": 25, "y": 20 }, + { "flags": 4, "matrix": [3, 0], "x": 35, "y": 20 }, + { "flags": 4, "matrix": [4, 0], "x": 45, "y": 20 }, + { "flags": 4, "matrix": [4, 1], "x": 55, "y": 20 }, + { "flags": 4, "matrix": [5, 1], "x": 65, "y": 20 }, + { "flags": 4, "matrix": [5, 0], "x": 75, "y": 20 }, + { "flags": 4, "matrix": [6, 0], "x": 85, "y": 20 }, + { "flags": 4, "matrix": [7, 0], "x": 95, "y": 20 }, + { "flags": 4, "matrix": [8, 0], "x": 105, "y": 20 }, + { "flags": 4, "matrix": [8, 1], "x": 115, "y": 20 }, + { "flags": 4, "matrix": [6, 1], "x": 125, "y": 20 }, + { "flags": 4, "matrix": [10, 2], "x": 135, "y": 20 }, + { "flags": 4, "matrix": [6, 5], "x": 150, "y": 20 }, + { "flags": 4, "matrix": [2, 1], "x": 0, "y": 30 }, + { "flags": 4, "matrix": [1, 2], "x": 17, "y": 30 }, + { "flags": 8, "matrix": [2, 2], "x": 27, "y": 30 }, + { "flags": 4, "matrix": [3, 2], "x": 37, "y": 30 }, + { "flags": 4, "matrix": [4, 2], "x": 47, "y": 30 }, + { "flags": 4, "matrix": [4, 3], "x": 57, "y": 30 }, + { "flags": 4, "matrix": [5, 3], "x": 67, "y": 30 }, + { "flags": 4, "matrix": [5, 2], "x": 77, "y": 30 }, + { "flags": 4, "matrix": [6, 2], "x": 87, "y": 30 }, + { "flags": 4, "matrix": [7, 2], "x": 97, "y": 30 }, + { "flags": 4, "matrix": [8, 2], "x": 107, "y": 30 }, + { "flags": 4, "matrix": [8, 3], "x": 117, "y": 30 }, + { "flags": 4, "matrix": [10, 4], "x": 127, "y": 30 }, + { "flags": 4, "matrix": [1, 5], "x": 150, "y": 30 }, + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 40 }, + { "flags": 4, "matrix": [1, 4], "x": 22, "y": 40 }, + { "flags": 4, "matrix": [2, 4], "x": 32, "y": 40 }, + { "flags": 4, "matrix": [3, 4], "x": 42, "y": 40 }, + { "flags": 4, "matrix": [4, 4], "x": 52, "y": 40 }, + { "flags": 4, "matrix": [4, 5], "x": 62, "y": 40 }, + { "flags": 4, "matrix": [5, 5], "x": 72, "y": 40 }, + { "flags": 4, "matrix": [5, 4], "x": 82, "y": 40 }, + { "flags": 4, "matrix": [6, 4], "x": 92, "y": 40 }, + { "flags": 4, "matrix": [7, 4], "x": 102, "y": 40 }, + { "flags": 4, "matrix": [8, 5], "x": 112, "y": 40 }, + { "flags": 4, "matrix": [9, 1], "x": 122, "y": 40 }, + { "flags": 4, "matrix": [3, 5], "x": 140, "y": 40 }, + { "flags": 4, "matrix": [2, 5], "x": 150, "y": 40 }, + { "flags": 4, "matrix": [0, 6], "x": 0, "y": 50 }, + { "flags": 4, "matrix": [9, 0], "x": 12, "y": 50 }, + { "flags": 4, "matrix": [9, 3], "x": 25, "y": 50 }, + { "flags": 4, "matrix": [9, 4], "x": 37, "y": 50 }, + { "flags": 4, "matrix": [9, 5], "x": 100, "y": 50 }, + { "flags": 4, "matrix": [9, 2], "x": 110, "y": 50 }, + { "flags": 4, "matrix": [0, 4], "x": 120, "y": 50 }, + { "flags": 4, "matrix": [0, 3], "x": 130, "y": 50 }, + { "flags": 4, "matrix": [7, 3], "x": 140, "y": 50 }, + { "flags": 4, "matrix": [0, 5], "x": 150, "y": 50 }, + { "flags": 4, "matrix": [11, 0], "x": 0, "y": 1 }, + { "flags": 4, "matrix": [11, 1], "x": 0, "y": 2 } + ] + }, + "url": "", + "usb": { + "device_version": "0.0.3", + "pid": "0xE392", + "vid": "0x342D" + }, + "eeprom": { + "driver": "wear_leveling" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "ESC", "matrix": [1, 3], "x": 0, "y": 0 }, + { "label": "F1", "matrix": [2, 6], "x": 2, "y": 0 }, + { "label": "F2", "matrix": [3, 6], "x": 3, "y": 0 }, + { "label": "F3", "matrix": [3, 1], "x": 4, "y": 0 }, + { "label": "F4", "matrix": [3, 3], "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 7], "x": 6, "y": 0 }, + { "label": "F6", "matrix": [6, 3], "x": 7, "y": 0 }, + { "label": "F7", "matrix": [7, 1], "x": 8, "y": 0 }, + { "label": "F8", "matrix": [7, 6], "x": 9, "y": 0 }, + { "label": "F9", "matrix": [10, 6], "x": 10, "y": 0 }, + { "label": "F10", "matrix": [10, 7], "x": 11, "y": 0 }, + { "label": "F11", "matrix": [10, 3], "x": 12, "y": 0 }, + { "label": "F12", "matrix": [10, 5], "x": 13, "y": 0 }, + { "label": "Printscreen", "matrix": [9, 7], "x": 14, "y": 0 }, + { "label": "Del", "matrix": [0, 2], "x": 15, "y": 0 }, + { "label": "`", "matrix": [1, 6], "x": 0, "y": 1 }, + { "label": "1", "matrix": [1, 7], "x": 1, "y": 1 }, + { "label": "2", "matrix": [2, 7], "x": 2, "y": 1 }, + { "label": "3", "matrix": [3, 7], "x": 3, "y": 1 }, + { "label": "4", "matrix": [4, 7], "x": 4, "y": 1 }, + { "label": "5", "matrix": [4, 6], "x": 5, "y": 1 }, + { "label": "6", "matrix": [5, 6], "x": 6, "y": 1 }, + { "label": "7", "matrix": [5, 7], "x": 7, "y": 1 }, + { "label": "8", "matrix": [6, 7], "x": 8, "y": 1 }, + { "label": "9", "matrix": [7, 7], "x": 9, "y": 1 }, + { "label": "0", "matrix": [8, 7], "x": 10, "y": 1 }, + { "label": "-", "matrix": [8, 6], "x": 11, "y": 1 }, + { "label": "=", "matrix": [6, 6], "x": 12, "y": 1 }, + { "label": "Backspace", "matrix": [10, 1], "w": 2, "x": 13, "y": 1 }, + { "label": "Home", "matrix": [11, 6], "x": 15, "y": 1 }, + { "label": "Tab", "matrix": [1, 1], "w": 1.5, "x": 0, "y": 2 }, + { "label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2 }, + { "label": "W", "matrix": [2, 0], "x": 2.5, "y": 2 }, + { "label": "E", "matrix": [3, 0], "x": 3.5, "y": 2 }, + { "label": "R", "matrix": [4, 0], "x": 4.5, "y": 2 }, + { "label": "T", "matrix": [4, 1], "x": 5.5, "y": 2 }, + { "label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2 }, + { "label": "U", "matrix": [5, 0], "x": 7.5, "y": 2 }, + { "label": "I", "matrix": [6, 0], "x": 8.5, "y": 2 }, + { "label": "O", "matrix": [7, 0], "x": 9.5, "y": 2 }, + { "label": "P", "matrix": [8, 0], "x": 10.5, "y": 2 }, + { "label": "[", "matrix": [8, 1], "x": 11.5, "y": 2 }, + { "label": "]", "matrix": [6, 1], "x": 12.5, "y": 2 }, + { "label": "\\", "matrix": [10, 2], "w": 1.5, "x": 13.5, "y": 2 }, + { "label": "End", "matrix": [6, 5], "x": 15, "y": 2 }, + { "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 3 }, + { "label": "A", "matrix": [1, 2], "x": 1.75, "y": 3 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 3 }, + { "label": "D", "matrix": [3, 2], "x": 3.75, "y": 3 }, + { "label": "F", "matrix": [4, 2], "x": 4.75, "y": 3 }, + { "label": "G", "matrix": [4, 3], "x": 5.75, "y": 3 }, + { "label": "H", "matrix": [5, 3], "x": 6.75, "y": 3 }, + { "label": "J", "matrix": [5, 2], "x": 7.75, "y": 3 }, + { "label": "K", "matrix": [6, 2], "x": 8.75, "y": 3 }, + { "label": "L", "matrix": [7, 2], "x": 9.75, "y": 3 }, + { "label": ";", "matrix": [8, 2], "x": 10.75, "y": 3 }, + { "label": "'", "matrix": [8, 3], "x": 11.75, "y": 3 }, + { "label": "Enter", "matrix": [10, 4], "w": 2.25, "x": 12.75, "y": 3 }, + { "label": "PgUp", "matrix": [1, 5], "x": 15, "y": 3 }, + { "label": "Shift", "matrix": [0, 0], "w": 2.25, "x": 0, "y": 4 }, + { "label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4 }, + { "label": "X", "matrix": [2, 4], "x": 3.25, "y": 4 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 4 }, + { "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4 }, + { "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4 }, + { "label": "N", "matrix": [5, 5], "x": 7.25, "y": 4 }, + { "label": "M", "matrix": [5, 4], "x": 8.25, "y": 4 }, + { "label": ",", "matrix": [6, 4], "x": 9.25, "y": 4 }, + { "label": ".", "matrix": [7, 4], "x": 10.25, "y": 4 }, + { "label": "/", "matrix": [8, 5], "x": 11.25, "y": 4 }, + { "label": "Shift", "matrix": [9, 1], "w": 1.75, "x": 12.25, "y": 4 }, + { "label": "Up", "matrix": [3, 5], "x": 14, "y": 4 }, + { "label": "PgDn", "matrix": [2, 5], "x": 15, "y": 4 }, + { "label": "Ctrl", "matrix": [0, 6], "w": 1.25, "x": 0, "y": 5 }, + { "label": "Win", "matrix": [9, 0], "w": 1.25, "x": 1.25, "y": 5 }, + { "label": "Alt", "matrix": [9, 3], "w": 1.25, "x": 2.5, "y": 5 }, + { "label": "Space", "matrix": [9, 4], "w": 6.25, "x": 3.75, "y": 5 }, + { "label": "Alt", "matrix": [9, 5], "x": 10, "y": 5 }, + { "label": "FN", "matrix": [9, 2], "x": 11, "y": 5 }, + { "label": "Ctrl", "matrix": [0, 4], "x": 12, "y": 5 }, + { "label": "Left", "matrix": [0, 3], "x": 13, "y": 5 }, + { "label": "Down", "matrix": [7, 3], "x": 14, "y": 5 }, + { "label": "Right", "matrix": [0, 5], "x": 15, "y": 5 } + ] + } + } +} diff --git a/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c b/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c new file mode 100644 index 000000000000..e78de78bf80b --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.c @@ -0,0 +1,188 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "kd83a_bfg_edition.h" + +#ifdef RGB_MATRIX_ENABLE + +const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + //{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 0, k00, Esc + + {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 1, k13, Esc + {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 2, k26, F1 + {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 3, k36, F2 + {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 4, k31, F3 + {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 5, k33, F4 + {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 6, k07, F5 + {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 7, k63, F6 + {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 8, k71, F7 + {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 9, k76, F8 + {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 10, ka6, F9 + {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 11, ka7, F10 + {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 12, ka3, F11 + {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 13, ka5, F12 + {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 14, k97, Printscreen + {1, CS4_SW5, CS5_SW5, CS6_SW5}, // 15, k02, Del + + {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 16, k16, ` + {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 17, k17, 1 + {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 18, k27, 2 + {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, k37, 3 + {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 20, k47, 4 + {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 21, k46, 5 + {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 22, k56, 6 + {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 23, k57, 7 + {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 24, k67, 8 + {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 25, k77, 9 + {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 26, k87, 0 + {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 27, k86, - + {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 28, k66, = + {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 29, ka1, Backspace + {1, CS1_SW2, CS2_SW2, CS3_SW2}, // 30, kc6, Home + + {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 31, k11, Tab + {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 32, k10, Q + {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 33, k20, W + {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 34, k30, E + {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 35, k40, R + {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 36, k41, T + {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 37, k51, Y + {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 38, k50, U + {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 39, k60, I + {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 40, k70, O + {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 41, k80, P + {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 42, k81, [ + {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 43, k61, ] + {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, ka2, "\\" + {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 45, k65, End + + {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 46, k21, Caps Lock + {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 47, k12, A + {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 48, k22, S + {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 49, k32, D + {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 50, k42, F + {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 51, k43, G + {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 52, k53, H + {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 53, k52, J + {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 54, k62, K + {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 55, k72, L + {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 56, k82, ; + {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 57, k83, ' + {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 58, ka4, Enter + {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 59, k15, PgUp + + {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 60, k00, Shift_L + {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 61, k14, Z + {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 62, k24, X + {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 63, k34, C + {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 64, k44, V + {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 65, k45, B + {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 66, k55, N + {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 67, k54, M + {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 68, k64, , + {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 69, k74, . + {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 70, k85, / + {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 71, k91, Shift_R + {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 72, k35, Up + {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 73, k25, PgDn + + {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 74, k06, Ctrl_L + {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 75, k90, Win_L + {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 76, k93, Alt_L + {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 77, k94, Space + {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 78, k95, Alt_R + {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 79, k92, FN + {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 80, k04, Ctrl_R + {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 81, k03, Left + {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 82, k73, Down + {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 83, k05, Right + + {1, CS10_SW10, CS11_SW10, CS12_SW10}, // 84, kb0, Z1 + {1, CS10_SW11, CS11_SW11, CS12_SW11}, // 85, kb1, Z2 +}; + +#endif + +#ifdef EEPROM_ENABLE + +#include "spi_master.h" + +void spi_init(void) { + static bool is_initialised = false; + if (!is_initialised) { + is_initialised = true; + + // Try releasing special pins for a short time + setPinInput(SPI_SCK_PIN); + setPinInput(SPI_MOSI_PIN); + setPinInput(SPI_MISO_PIN); + + chThdSleepMilliseconds(10); + + palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3); + palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + } +} + +#endif + +void keyboard_pre_init_kb(void) { + setPinOutput(C0); + setPinOutput(C15); + keyboard_pre_init_user(); +}; +void housekeeping_task_kb(void) { + writePin(C15, keymap_config.no_gui); +}; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + + case KC_SIRI: + if (record->event.pressed) { + host_consumer_send(0xCF); + } else { + host_consumer_send(0); + } + return false; /* Skip all further processing of this key */ + default: + return true; /* Process all other keycodes normally */ + } +}; + +#if defined(ENCODER_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + return false; +}; +#endif \ No newline at end of file diff --git a/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.h b/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.h new file mode 100644 index 000000000000..e2c656eb0eb2 --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/kd83a_bfg_edition.h @@ -0,0 +1,22 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" + +enum keyboard_keycodes { + KC_SIRI = QK_KB_0 +}; diff --git a/keyboards/darkproject/kd83a_bfg_edition/keymaps/default/keymap.c b/keyboards/darkproject/kd83a_bfg_edition/keymaps/default/keymap.c new file mode 100644 index 000000000000..78324c69426b --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/keymaps/default/keymap.c @@ -0,0 +1,78 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +enum custom_layers { + Win, + Mac, + Winfn, + Macfn, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[Win] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Mac] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Winfn] = LAYOUT( + QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, + KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +[Macfn] = LAYOUT( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } +}; +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(C0, layer_state_cmp(state, 1)); + return state; +}; diff --git a/keyboards/darkproject/kd83a_bfg_edition/keymaps/default/rules.mk b/keyboards/darkproject/kd83a_bfg_edition/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/darkproject/kd83a_bfg_edition/keymaps/via/keymap.c b/keyboards/darkproject/kd83a_bfg_edition/keymaps/via/keymap.c new file mode 100644 index 000000000000..78324c69426b --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/keymaps/via/keymap.c @@ -0,0 +1,78 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +enum custom_layers { + Win, + Mac, + Winfn, + Macfn, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[Win] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Mac] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Winfn] = LAYOUT( + QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, + KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +[Macfn] = LAYOUT( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } +}; +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(C0, layer_state_cmp(state, 1)); + return state; +}; diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/rules.mk b/keyboards/darkproject/kd83a_bfg_edition/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/rules.mk rename to keyboards/darkproject/kd83a_bfg_edition/keymaps/via/rules.mk diff --git a/keyboards/darkproject/kd83a_bfg_edition/mcuconf.h b/keyboards/darkproject/kd83a_bfg_edition/mcuconf.h new file mode 100644 index 000000000000..440f78d2bc27 --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_SPI_USE_SPIM2 +#define WB32_SPI_USE_SPIM2 TRUE diff --git a/keyboards/darkproject/kd83a_bfg_edition/readme.md b/keyboards/darkproject/kd83a_bfg_edition/readme.md new file mode 100644 index 000000000000..96826c0c1b0c --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/readme.md @@ -0,0 +1,25 @@ +# kd83a_bfg_edition +![KD83A_BFG_EDITION](https://imgur.com/UXuXerrh.png) +![KD83A_BFG_EDITION](https://imgur.com/Dn852gEh.png) + +An 83 keys keyboard, Equipped with the WestBerry Q95 microcontroller. + +* Keyboard Maintainer: [GSKY](https://github.com/gksygithub) +* Hardware Supported: KD83A_BFG_Edition +* Hardware Availability: [GSKY GitHub](https://github.com/gksygithub/keyboard) + +Make example for this keyboard (after setting up your build environment): + + make darkproject/kd83a_bfg_edition:default + +Flashing example for this keyboard: + + make darkproject/kd83a_bfg_edition:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted on the surface of the PCB back side after the USB cable is connected +* Hold the Escape key while connecting the USB cable (also erases persistent settings) +* Fn+ESC will reset the board to bootloader mode + +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/darkproject/kd83a_bfg_edition/rules.mk b/keyboards/darkproject/kd83a_bfg_edition/rules.mk new file mode 100644 index 000000000000..07eb511a199b --- /dev/null +++ b/keyboards/darkproject/kd83a_bfg_edition/rules.mk @@ -0,0 +1 @@ +WEAR_LEVELING_DRIVER = spi_flash \ No newline at end of file diff --git a/keyboards/darkproject/kd87a_bfg_edition/config.h b/keyboards/darkproject/kd87a_bfg_edition/config.h new file mode 100644 index 000000000000..4ac83ab9f627 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/config.h @@ -0,0 +1,42 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +/* External spi flash */ +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14 + +/* SPI Config for LED Driver */ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN A5 +#define SPI_MOSI_PIN A7 +#define SPI_MISO_PIN A6 + +#define DRIVER_1_CS A15 +#define DRIVER_2_CS B15 +#define DRIVER_1_EN C13 +#define DRIVER_2_EN C13 + +#define DRIVER_1_LED_TOTAL 68 +#define DRIVER_2_LED_TOTAL 54 +#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/darkproject/kd87a_bfg_edition/halconf.h b/keyboards/darkproject/kd87a_bfg_edition/halconf.h new file mode 100644 index 000000000000..8f61d3fc64ff --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/halconf.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/darkproject/kd87a_bfg_edition/info.json b/keyboards/darkproject/kd87a_bfg_edition/info.json new file mode 100644 index 000000000000..94717c6baac2 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/info.json @@ -0,0 +1,278 @@ +{ + "manufacturer": "Kd87a_bfg_edition", + "keyboard_name": "Kd87a_bfg_edition", + "maintainer": "Gsky", + "bootloader": "wb32-dfu", + "bootmagic": { + "matrix": [1, 3] + }, + "diode_direction": "COL2ROW", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 8192 + } + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "indicators": { + "caps_lock": "C14" + }, + "matrix_pins": { + "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], + "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B12"] + }, + "processor": "WB32FQ95", + "qmk": { + "tap_keycode_delay": 10 + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "center_point": [87, 35], + "driver": "aw20216", + "layout": [ + { "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 }, + { "flags": 4, "matrix": [3, 6], "x": 30, "y": 0 }, + { "flags": 4, "matrix": [3, 1], "x": 40, "y": 0 }, + { "flags": 4, "matrix": [3, 3], "x": 50, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 65, "y": 0 }, + { "flags": 4, "matrix": [6, 3], "x": 75, "y": 0 }, + { "flags": 4, "matrix": [7, 1], "x": 85, "y": 0 }, + { "flags": 4, "matrix": [7, 6], "x": 95, "y": 0 }, + { "flags": 4, "matrix": [10, 6], "x": 110, "y": 0 }, + { "flags": 4, "matrix": [10, 7], "x": 120, "y": 0 }, + { "flags": 4, "matrix": [10, 3], "x": 130, "y": 0 }, + { "flags": 4, "matrix": [10, 5], "x": 140, "y": 0 }, + { "flags": 4, "matrix": [9, 7], "x": 155, "y": 0 }, + { "flags": 4, "matrix": [10, 0], "x": 165, "y": 0 }, + { "flags": 4, "matrix": [9, 6], "x": 175, "y": 0 }, + + { "flags": 4, "matrix": [1, 6], "x": 0, "y": 15 }, + { "flags": 4, "matrix": [1, 7], "x": 10, "y": 15 }, + { "flags": 4, "matrix": [2, 7], "x": 20, "y": 15 }, + { "flags": 4, "matrix": [3, 7], "x": 30, "y": 15 }, + { "flags": 4, "matrix": [4, 7], "x": 40, "y": 15 }, + { "flags": 4, "matrix": [4, 6], "x": 50, "y": 15 }, + { "flags": 4, "matrix": [5, 6], "x": 60, "y": 15 }, + { "flags": 4, "matrix": [5, 7], "x": 70, "y": 15 }, + { "flags": 4, "matrix": [6, 7], "x": 80, "y": 15 }, + { "flags": 4, "matrix": [7, 7], "x": 90, "y": 15 }, + { "flags": 4, "matrix": [8, 7], "x": 100, "y": 15 }, + { "flags": 4, "matrix": [8, 6], "x": 110, "y": 15 }, + { "flags": 4, "matrix": [6, 6], "x": 120, "y": 15 }, + { "flags": 4, "matrix": [10, 1], "x": 130, "y": 15 }, + { "flags": 4, "matrix": [11, 6], "x": 155, "y": 15 }, + { "flags": 4, "matrix": [0, 2], "x": 165, "y": 15 }, + { "flags": 4, "matrix": [1, 5], "x": 175, "y": 15 }, + + { "flags": 4, "matrix": [1, 1], "x": 0, "y": 25 }, + { "flags": 4, "matrix": [1, 0], "x": 15, "y": 25 }, + { "flags": 4, "matrix": [2, 0], "x": 25, "y": 25 }, + { "flags": 4, "matrix": [3, 0], "x": 35, "y": 25 }, + { "flags": 4, "matrix": [4, 0], "x": 45, "y": 25 }, + { "flags": 4, "matrix": [4, 1], "x": 55, "y": 25 }, + { "flags": 4, "matrix": [5, 1], "x": 65, "y": 25 }, + { "flags": 4, "matrix": [5, 0], "x": 75, "y": 25 }, + { "flags": 4, "matrix": [6, 0], "x": 85, "y": 25 }, + { "flags": 4, "matrix": [7, 0], "x": 95, "y": 25 }, + { "flags": 4, "matrix": [8, 0], "x": 105, "y": 25 }, + { "flags": 4, "matrix": [8, 1], "x": 115, "y": 25 }, + { "flags": 4, "matrix": [6, 1], "x": 125, "y": 25 }, + { "flags": 4, "matrix": [10, 2], "x": 135, "y": 25 }, + { "flags": 4, "matrix": [6, 5], "x": 155, "y": 25 }, + { "flags": 4, "matrix": [7, 5], "x": 165, "y": 25 }, + { "flags": 4, "matrix": [2, 5], "x": 175, "y": 25 }, + + { "flags": 8, "matrix": [2, 1], "x": 0, "y": 35 }, + { "flags": 4, "matrix": [1, 2], "x": 17.5, "y": 35 }, + { "flags": 4, "matrix": [2, 2], "x": 27.5, "y": 35 }, + { "flags": 4, "matrix": [3, 2], "x": 37.5, "y": 35 }, + { "flags": 4, "matrix": [4, 2], "x": 47.5, "y": 35 }, + { "flags": 4, "matrix": [4, 3], "x": 57.5, "y": 35 }, + { "flags": 4, "matrix": [5, 3], "x": 67.5, "y": 35 }, + { "flags": 4, "matrix": [5, 2], "x": 77.5, "y": 35 }, + { "flags": 4, "matrix": [6, 2], "x": 87.5, "y": 35 }, + { "flags": 4, "matrix": [7, 2], "x": 97.5, "y": 35 }, + { "flags": 4, "matrix": [8, 2], "x": 107.5, "y": 35 }, + { "flags": 4, "matrix": [8, 3], "x": 117.5, "y": 35 }, + { "flags": 4, "matrix": [10, 4], "x": 127.5, "y": 35 }, + + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 45 }, + { "flags": 4, "matrix": [1, 4], "x": 22.5, "y": 45 }, + { "flags": 4, "matrix": [2, 4], "x": 32.5, "y": 45 }, + { "flags": 4, "matrix": [3, 4], "x": 42.5, "y": 45 }, + { "flags": 4, "matrix": [4, 4], "x": 52.5, "y": 45 }, + { "flags": 4, "matrix": [4, 5], "x": 62.5, "y": 45 }, + { "flags": 4, "matrix": [5, 5], "x": 72.5, "y": 45 }, + { "flags": 4, "matrix": [5, 4], "x": 82.5, "y": 45 }, + { "flags": 4, "matrix": [6, 4], "x": 92.5, "y": 45 }, + { "flags": 4, "matrix": [7, 4], "x": 102.5, "y": 45 }, + { "flags": 4, "matrix": [8, 5], "x": 112.5, "y": 45 }, + { "flags": 4, "matrix": [9, 1], "x": 122.5, "y": 45 }, + { "flags": 4, "matrix": [3, 5], "x": 165, "y": 45 }, + + { "flags": 4, "matrix": [0, 6], "x": 0, "y": 55 }, + { "flags": 4, "matrix": [9, 0], "x": 12.5, "y": 55 }, + { "flags": 4, "matrix": [9, 3], "x": 25, "y": 55 }, + { "flags": 4, "matrix": [9, 4], "x": 37.5, "y": 55 }, + { "flags": 4, "matrix": [9, 5], "x": 100, "y": 55 }, + { "flags": 4, "matrix": [9, 2], "x": 112.5, "y": 55 }, + { "flags": 4, "matrix": [8, 4], "x": 125, "y": 55 }, + { "flags": 4, "matrix": [0, 4], "x": 137.5, "y": 55 }, + { "flags": 4, "matrix": [0, 3], "x": 155, "y": 55 }, + { "flags": 4, "matrix": [7, 3], "x": 165, "y": 55 }, + { "flags": 4, "matrix": [0, 5], "x": 175, "y": 55 } + ] + }, + "url": "", + "usb": { + "device_version": "0.0.3", + "pid": "0xE393", + "vid": "0x342D" + }, + "community_layouts": ["tkl_ansi"], + "layouts": { + "LAYOUT_tkl_ansi": { + "layout": [ + { "label": "ESC", "matrix": [1, 3], "x": 0, "y": 0 }, + { "label": "F1", "matrix": [2, 6], "x": 2, "y": 0 }, + { "label": "F2", "matrix": [3, 6], "x": 3, "y": 0 }, + { "label": "F3", "matrix": [3, 1], "x": 4, "y": 0 }, + { "label": "F4", "matrix": [3, 3], "x": 5, "y": 0 }, + { "label": "F5", "matrix": [0, 7], "x": 6.5, "y": 0 }, + { "label": "F6", "matrix": [6, 3], "x": 7.5, "y": 0 }, + { "label": "F7", "matrix": [7, 1], "x": 8.5, "y": 0 }, + { "label": "F8", "matrix": [7, 6], "x": 9.5, "y": 0 }, + { "label": "F9", "matrix": [10, 6], "x": 11, "y": 0 }, + { "label": "F10", "matrix": [10, 7], "x": 12, "y": 0 }, + { "label": "F11", "matrix": [10, 3], "x": 13, "y": 0 }, + { "label": "F12", "matrix": [10, 5], "x": 14, "y": 0 }, + { "label": "Printscreen", "matrix": [9, 7], "x": 15.5, "y": 0 }, + { "label": "Scroll Lock", "matrix": [10, 0], "x": 16.5, "y": 0 }, + { "label": "Pause Break", "matrix": [9, 6], "x": 17.5, "y": 0 }, + { "label": "`", "matrix": [1, 6], "x": 0, "y": 1.5 }, + { "label": "1", "matrix": [1, 7], "x": 1, "y": 1.5 }, + { "label": "2", "matrix": [2, 7], "x": 2, "y": 1.5 }, + { "label": "3", "matrix": [3, 7], "x": 3, "y": 1.5 }, + { "label": "4", "matrix": [4, 7], "x": 4, "y": 1.5 }, + { "label": "5", "matrix": [4, 6], "x": 5, "y": 1.5 }, + { "label": "6", "matrix": [5, 6], "x": 6, "y": 1.5 }, + { "label": "7", "matrix": [5, 7], "x": 7, "y": 1.5 }, + { "label": "8", "matrix": [6, 7], "x": 8, "y": 1.5 }, + { "label": "9", "matrix": [7, 7], "x": 9, "y": 1.5 }, + { "label": "0", "matrix": [8, 7], "x": 10, "y": 1.5 }, + { "label": "-", "matrix": [8, 6], "x": 11, "y": 1.5 }, + { "label": "=", "matrix": [6, 6], "x": 12, "y": 1.5 }, + { "label": "Backspace", "matrix": [10, 1], "w": 2, "x": 13, "y": 1.5 }, + { "label": "INS", "matrix": [11, 6], "x": 15.5, "y": 1.5 }, + { "label": "Home", "matrix": [0, 2], "x": 16.5, "y": 1.5 }, + { "label": "PgUp", "matrix": [1, 5], "x": 17.5, "y": 1.5 }, + { "label": "Tab", "matrix": [1, 1], "w": 1.5, "x": 0, "y": 2.5 }, + { "label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2.5 }, + { "label": "W", "matrix": [2, 0], "x": 2.5, "y": 2.5 }, + { "label": "E", "matrix": [3, 0], "x": 3.5, "y": 2.5 }, + { "label": "R", "matrix": [4, 0], "x": 4.5, "y": 2.5 }, + { "label": "T", "matrix": [4, 1], "x": 5.5, "y": 2.5 }, + { "label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2.5 }, + { "label": "U", "matrix": [5, 0], "x": 7.5, "y": 2.5 }, + { "label": "I", "matrix": [6, 0], "x": 8.5, "y": 2.5 }, + { "label": "O", "matrix": [7, 0], "x": 9.5, "y": 2.5 }, + { "label": "P", "matrix": [8, 0], "x": 10.5, "y": 2.5 }, + { "label": "[", "matrix": [8, 1], "x": 11.5, "y": 2.5 }, + { "label": "]", "matrix": [6, 1], "x": 12.5, "y": 2.5 }, + { "label": "\\", "matrix": [10, 2], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "label": "Delete", "matrix": [6, 5], "x": 15.5, "y": 2.5 }, + { "label": "End", "matrix": [7, 5], "x": 16.5, "y": 2.5 }, + { "label": "PgDn", "matrix": [2, 5], "x": 17.5, "y": 2.5 }, + { "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 3.5 }, + { "label": "A", "matrix": [1, 2], "x": 1.75, "y": 3.5 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 3.5 }, + { "label": "D", "matrix": [3, 2], "x": 3.75, "y": 3.5 }, + { "label": "F", "matrix": [4, 2], "x": 4.75, "y": 3.5 }, + { "label": "G", "matrix": [4, 3], "x": 5.75, "y": 3.5 }, + { "label": "H", "matrix": [5, 3], "x": 6.75, "y": 3.5 }, + { "label": "J", "matrix": [5, 2], "x": 7.75, "y": 3.5 }, + { "label": "K", "matrix": [6, 2], "x": 8.75, "y": 3.5 }, + { "label": "L", "matrix": [7, 2], "x": 9.75, "y": 3.5 }, + { "label": ";", "matrix": [8, 2], "x": 10.75, "y": 3.5 }, + { "label": "'", "matrix": [8, 3], "x": 11.75, "y": 3.5 }, + { "label": "Enter", "matrix": [10, 4], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "label": "Shift", "matrix": [0, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4.5 }, + { "label": "X", "matrix": [2, 4], "x": 3.25, "y": 4.5 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 4.5 }, + { "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.5 }, + { "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.5 }, + { "label": "N", "matrix": [5, 5], "x": 7.25, "y": 4.5 }, + { "label": "M", "matrix": [5, 4], "x": 8.25, "y": 4.5 }, + { "label": ",", "matrix": [6, 4], "x": 9.25, "y": 4.5 }, + { "label": ".", "matrix": [7, 4], "x": 10.25, "y": 4.5 }, + { "label": "/", "matrix": [8, 5], "x": 11.25, "y": 4.5 }, + { "label": "Shift", "matrix": [9, 1], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "label": "Up", "matrix": [3, 5], "x": 16.5, "y": 4.5 }, + { "label": "Ctrl", "matrix": [0, 6], "w": 1.25, "x": 0, "y": 5.5 }, + { "label": "Win", "matrix": [9, 0], "w": 1.25, "x": 1.25, "y": 5.5 }, + { "label": "Alt", "matrix": [9, 3], "w": 1.25, "x": 2.5, "y": 5.5 }, + { "label": "Space", "matrix": [9, 4], "w": 6.25, "x": 3.75, "y": 5.5 }, + { "label": "Alt", "matrix": [9, 5], "w": 1.25, "x": 10, "y": 5.5 }, + { "label": "FN", "matrix": [9, 2], "w": 1.25, "x": 11.25, "y": 5.5 }, + { "label": "APP", "matrix": [8, 4], "w": 1.25, "x": 12.5, "y": 5.5 }, + { "label": "Ctrl", "matrix": [0, 4], "w": 1.25, "x": 13.75, "y": 5.5 }, + { "label": "Left", "matrix": [0, 3], "x": 15.5, "y": 5.5 }, + { "label": "Down", "matrix": [7, 3], "x": 16.5, "y": 5.5 }, + { "label": "Right", "matrix": [0, 5], "x": 17.5, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c new file mode 100644 index 000000000000..0ce0799e14cb --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.c @@ -0,0 +1,174 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 "kd87a_bfg_edition.h" + +#ifdef RGB_MATRIX_ENABLE + +const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + //{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 0, Esc + + {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 1, Esc + {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 2, F1 + {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 3, F2 + {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 4, F3 + {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 5, F4 + {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 6, F5 + {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 7, F6 + {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 8, F7 + {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 9, F8 + {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 10, F9 + {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 11, F10 + {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 12, F11 + {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 13, F12 + {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 14, Printscreen + {1, CS1_SW3, CS2_SW3, CS3_SW3}, // 15, Scroll Lock + {1, CS1_SW4, CS2_SW4, CS3_SW4}, // 16, Pause Break + + {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 17, ` + {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 18, 1 + {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 19, 2 + {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 20, 3 + {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 21, 4 + {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 22, 5 + {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 23, 6 + {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 24, 7 + {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 25, 8 + {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 26, 9 + {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 27, 0 + {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 28, - + {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 29, = + {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 30, Backspace + {1, CS1_SW2, CS2_SW2, CS3_SW2}, // 31, Insert + {1, CS4_SW5, CS5_SW5, CS6_SW5}, // 32, Home + {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 33, Page Up + + {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 34, Tab + {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 35, Q + {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 36, W + {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 37, E + {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 38, R + {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 39, T + {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 40, Y + {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U + {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 42, I + {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 43, O + {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 44, P + {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 45, [ + {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 46, ] + {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 47, "\\" + {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 48, Delete + {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 49, END + {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 50, Page down + + {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 51, Caps Lock + {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 52, A + {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 53, S + {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 54, D + {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 55, F + {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 56, G + {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 57, H + {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 58, J + {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 59, K + {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 60, L + {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 61, ; + {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 62, ' + {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 63, Enter + + {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 64, Shift_L + {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 65, Z + {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 66, X + {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 67, C + {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 68, V + {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 69, B + {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 70, N + {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 71, M + {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 72, , + {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 73, . + {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 74, / + {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 75, Shift_R + {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 76, Up + + {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 77, Ctrl_L + {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 78, Win_L + {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 79, Alt_L + {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 80, Space + {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 81, Alt_R + {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 82, FN + {0, CS16_SW11, CS17_SW11, CS18_SW11}, // 83, APP + {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 84, Ctrl_R + {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 85, Left + {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 86, Down + {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 87, Right +}; + +#endif + +#ifdef EEPROM_ENABLE + +#include "spi_master.h" + +void spi_init(void) { + static bool is_initialised = false; + if (!is_initialised) { + is_initialised = true; + + // Try releasing special pins for a short time + setPinInput(SPI_SCK_PIN); + setPinInput(SPI_MOSI_PIN); + setPinInput(SPI_MISO_PIN); + + chThdSleepMilliseconds(10); + + palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3); + palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + } +} + +#endif + +void keyboard_pre_init_kb(void) { + setPinOutput(C0); + setPinOutput(C15); + keyboard_pre_init_user(); +}; +void housekeeping_task_kb(void) { + writePin(C15, keymap_config.no_gui); +}; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + case KC_SIRI: + if (record->event.pressed) { + host_consumer_send(0xCF); + } else { + host_consumer_send(0); + } + return false; /* Skip all further processing of this key */ + default: + return true; /* Process all other keycodes normally */ + } +}; diff --git a/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.h b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.h new file mode 100644 index 000000000000..e2c656eb0eb2 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/kd87a_bfg_edition.h @@ -0,0 +1,22 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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" + +enum keyboard_keycodes { + KC_SIRI = QK_KB_0 +}; diff --git a/keyboards/darkproject/kd87a_bfg_edition/keymaps/default/keymap.c b/keyboards/darkproject/kd87a_bfg_edition/keymaps/default/keymap.c new file mode 100644 index 000000000000..4abb1bdc9158 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/keymaps/default/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +enum custom_layers { + Win, + Mac, + Winfn, + Macfn, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[Win] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Mac] = LAYOUT_tkl_ansi( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Winfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +[Macfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(C0, layer_state_cmp(state, 1)); + return state; +}; \ No newline at end of file diff --git a/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/keymap.c b/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/keymap.c new file mode 100644 index 000000000000..71fbfa4ff203 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/keymap.c @@ -0,0 +1,69 @@ +/* Copyright 2022 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +enum custom_layers { + Win, + Mac, + Winfn, + Macfn, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[Win] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Mac] = LAYOUT_tkl_ansi( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[Winfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +[Macfn] = LAYOUT_tkl_ansi( + QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, + KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI), + +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(C0, layer_state_cmp(state, 1)); + return state; +}; diff --git a/keyboards/soda/mango/keymaps/via/rules.mk b/keyboards/darkproject/kd87a_bfg_edition/keymaps/via/rules.mk similarity index 100% rename from keyboards/soda/mango/keymaps/via/rules.mk rename to keyboards/darkproject/kd87a_bfg_edition/keymaps/via/rules.mk diff --git a/keyboards/darkproject/kd87a_bfg_edition/mcuconf.h b/keyboards/darkproject/kd87a_bfg_edition/mcuconf.h new file mode 100644 index 000000000000..440f78d2bc27 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_SPI_USE_SPIM2 +#define WB32_SPI_USE_SPIM2 TRUE diff --git a/keyboards/darkproject/kd87a_bfg_edition/readme.md b/keyboards/darkproject/kd87a_bfg_edition/readme.md new file mode 100644 index 000000000000..83cc8a923db9 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/readme.md @@ -0,0 +1,24 @@ +# KD87A_BFG_Edition +![KD87A_BFG_Edition](https://imgur.com/uOUvWvwh.png) + +An 87 keys keyboard, Equipped with the WestBerry Q95 microcontroller. + +* Keyboard Maintainer: [GSKY](https://github.com/gksygithub) +* Hardware Supported: KD87A_BFG_Edition +* Hardware Availability: [GSKY GitHub](https://github.com/gksygithub/keyboard1) + +Make example for this keyboard (after setting up your build environment): + + make darkproject/kd87a_bfg_edition:default + +Flashing example for this keyboard: + + make darkproject/kd87a_bfg_edition:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted on the surface of the PCB back side after the USB cable is connected +* Hold the Escape key while connecting the USB cable (also erases persistent settings) +* Fn+ESC will reset the board to bootloader mode + +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/darkproject/kd87a_bfg_edition/rules.mk b/keyboards/darkproject/kd87a_bfg_edition/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/darkproject/kd87a_bfg_edition/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/dasky/reverb/config.h b/keyboards/dasky/reverb/config.h new file mode 100644 index 000000000000..29cc0b04c774 --- /dev/null +++ b/keyboards/dasky/reverb/config.h @@ -0,0 +1,17 @@ +// Copyright 2023 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define DEBUG_MATRIX_SCAN_RATE // only want api + +#define SPI_DRIVER SPID0 +#define SPI_SCK_PIN GP18 +#define SPI_MOSI_PIN GP19 +#define SPI_MISO_PIN GP16 + +#define DISPLAY_RST GP15 +#define DISPLAY_CS GP21 +#define DISPLAY_DC GP20 + +#define QUANTUM_PAINTER_SUPPORTS_256_PALETTE true diff --git a/keyboards/dasky/reverb/graphics/display.c b/keyboards/dasky/reverb/graphics/display.c new file mode 100644 index 000000000000..13ac13ddb35d --- /dev/null +++ b/keyboards/dasky/reverb/graphics/display.c @@ -0,0 +1,139 @@ +// Copyright 2023 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "display.h" +#include "graphics/splash.qgf.h" +#include "graphics/reverb.qgf.h" +#include "graphics/robotomono20.qff.h" +#include +#include + +static painter_image_handle_t reverb_logo; +static deferred_token display_task_token; +static uint32_t key_pressed_count = 0; + +static uint8_t reverb_surface_fb[SURFACE_REQUIRED_BUFFER_BYTE_SIZE(240, 240, 16)]; + +painter_device_t reverb_surface; +painter_device_t reverb_display; +painter_font_handle_t roboto_font; + +uint32_t display_task_callback(uint32_t trigger_time, void *cb_arg) { + display_task_kb(); + return 100; +} + +void display_init_kb(void) { + reverb_display = qp_gc9a01_make_spi_device(240, 240, DISPLAY_CS, DISPLAY_DC, DISPLAY_RST, 2, 0); // always init display + qp_init(reverb_display, QP_ROTATION_0); + roboto_font = qp_load_font_mem(font_robotomono20); + reverb_surface = qp_make_rgb565_surface(240, 240, reverb_surface_fb); + qp_init(reverb_surface, QP_ROTATION_0); + if (!display_init_user()) { + return; + } + painter_image_handle_t splash_image; + splash_image = qp_load_image_mem(gfx_splash); + reverb_logo = qp_load_image_mem(gfx_reverb); + qp_drawimage(reverb_display, 0, 0, splash_image); + qp_flush(reverb_display); + qp_close_image(splash_image); + display_task_token = defer_exec(2000, display_task_callback, NULL); +} + +__attribute__((weak)) bool display_init_user(void) { + return true; +} + +void display_task_kb(void) { + if (!display_task_user()) { + return; + } + static bool first_draw = true; + static uint32_t last_timer = 0; + static uint32_t last_wpm = UINT32_MAX; + static uint32_t last_scan_rate = 0; + static uint32_t last_key_pressed_count = UINT32_MAX; + static uint8_t last_hue = 0; + static uint8_t last_sat = 0; + static uint8_t last_val = 0; + bool rgb_redraw = false; + + if (first_draw) { + qp_rect(reverb_display, 0, 0, 239, 239, 0, 0, 0, true); + first_draw = false; + } + + char buffer[64] = {0}; + + if (last_hue != rgb_matrix_get_hue() || last_sat != rgb_matrix_get_sat() || last_val != rgb_matrix_get_val()) { + last_hue = rgb_matrix_get_hue(); + last_sat = rgb_matrix_get_sat(); + last_val = rgb_matrix_get_val(); + qp_drawimage_recolor(reverb_surface, 60, 40, reverb_logo, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128), 0, 0, 0); + rgb_redraw = true; + } + + if (rgb_redraw || last_scan_rate != get_matrix_scan_rate()) { + snprintf(buffer, sizeof(buffer), "Scan Rate %ld", get_matrix_scan_rate()); + int16_t width = qp_textwidth(roboto_font, buffer); + qp_line(reverb_surface, 17, 101, 220, 101, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128)); + qp_rect(reverb_surface, 16, 125 - roboto_font->line_height, 221, 125, 0, 0, 0, true); + qp_drawtext_recolor(reverb_surface, (120 - (width / 2)), (125 - roboto_font->line_height), roboto_font, buffer, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128), 0, 0, 0); + qp_line(reverb_surface, 16, 126, 221, 126, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128)); + last_scan_rate = get_matrix_scan_rate(); + } + if (rgb_redraw || last_key_pressed_count != key_pressed_count) { + snprintf(buffer, sizeof(buffer), "Keys Pressed"); + int16_t width = qp_textwidth(roboto_font, buffer); + qp_rect(reverb_surface, 30, 150 - roboto_font->line_height, 209, 150, 0, 0, 0, true); + qp_drawtext_recolor(reverb_surface, (120 - (width / 2)), (150 - roboto_font->line_height), roboto_font, buffer, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128), 0, 0, 0); + snprintf(buffer, sizeof(buffer), "%ld", key_pressed_count); + width = qp_textwidth(roboto_font, buffer); + qp_rect(reverb_surface, 30, 172 - roboto_font->line_height, 173, 172, 0, 0, 0, true); + qp_drawtext_recolor(reverb_surface, (120 - (width / 2)), (172 - roboto_font->line_height), roboto_font, buffer, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128), 0, 0, 0); + qp_line(reverb_surface, 30, 173, 209, 173, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128)); + last_key_pressed_count = key_pressed_count; + } + if (rgb_redraw || last_wpm != get_current_wpm()) { + snprintf(buffer, sizeof(buffer), "WPM %d", get_current_wpm()); + int16_t width = qp_textwidth(roboto_font, buffer); + qp_rect(reverb_surface, 56, 200 - roboto_font->line_height, 184, 200, 0, 0, 0, true); + qp_drawtext_recolor(reverb_surface, (120 - (width / 2)), (200 - roboto_font->line_height), roboto_font, buffer, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128), 0, 0, 0); + qp_line(reverb_surface, 56, 201, 184, 201, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128)); + last_wpm = get_current_wpm(); + } + + if (rgb_redraw || timer_elapsed(last_timer) >= 1000) { + static uint8_t seconds = 0; + static uint8_t x = 0; + static uint8_t y = 0; + if (x && y) { + qp_circle(reverb_surface, x, y, 4, 0, 0, 0, true); + } + double radians = 0.10471975511966 * seconds; + x = (110 * cos(radians)) + 119; + y = (110 * sin(radians)) + 119; + qp_circle(reverb_surface, x, y, 4, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128), true); + qp_circle(reverb_surface, 119, 119, 105, rgb_matrix_get_hue(), rgb_matrix_get_sat(), MAX(rgb_matrix_get_val(), 128), false); + if (seconds == 59) { + seconds = 0; + } else if (timer_elapsed(last_timer) >= 1000) { + last_timer = timer_read32(); + seconds++; + } + } + + qp_surface_draw(reverb_surface, reverb_display, 0, 0, rgb_redraw); +} + +__attribute__((weak)) bool display_task_user(void) { + return true; +} + +void display_key_counter(void) { + if (key_pressed_count == UINT32_MAX) { + key_pressed_count = 0; + } + key_pressed_count++; +} diff --git a/keyboards/dasky/reverb/graphics/display.h b/keyboards/dasky/reverb/graphics/display.h new file mode 100644 index 000000000000..bc3cdf59a9ff --- /dev/null +++ b/keyboards/dasky/reverb/graphics/display.h @@ -0,0 +1,17 @@ +// Copyright 2023 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "qp.h" +#include "qp_surface.h" + +extern painter_device_t reverb_surface; +extern painter_device_t reverb_display; +extern painter_font_handle_t roboto_font; + +void display_key_counter(void); +void display_init_kb(void); +bool display_init_user(void); +void display_task_kb(void); +bool display_task_user(void); diff --git a/keyboards/dasky/reverb/graphics/reverb.qgf.c b/keyboards/dasky/reverb/graphics/reverb.qgf.c new file mode 100644 index 000000000000..27c31d41aa23 --- /dev/null +++ b/keyboards/dasky/reverb/graphics/reverb.qgf.c @@ -0,0 +1,59 @@ +// Copyright 2023 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics -i reverb.png -f mono2` + +#include + +const uint32_t gfx_reverb_length = 736; + +// clang-format off +const uint8_t gfx_reverb[736] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xE0, 0x02, 0x00, 0x00, 0x1F, 0xFD, 0xFF, + 0xFF, 0x78, 0x00, 0x32, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0xB0, 0x02, 0x00, + 0x3C, 0x00, 0x8F, 0xF8, 0xFF, 0xC7, 0xFF, 0x3F, 0x30, 0x80, 0x83, 0xFF, 0x0F, 0xFF, 0xCF, 0xFF, + 0x1F, 0x00, 0xF8, 0x03, 0xFF, 0x85, 0x7F, 0x70, 0x80, 0x83, 0xFF, 0x0F, 0x03, 0xFF, 0x8D, 0x7F, + 0x00, 0xF8, 0xFF, 0xBF, 0xFF, 0x7F, 0x70, 0x80, 0x83, 0xFF, 0x0F, 0xFF, 0xBF, 0x02, 0xFF, 0x8C, + 0x00, 0xF8, 0xFF, 0x3F, 0xFF, 0x7F, 0x70, 0x80, 0x83, 0xFF, 0x0F, 0xFF, 0x3F, 0x02, 0xFF, 0xB8, + 0x01, 0xF8, 0xFF, 0x3F, 0xFF, 0x7F, 0x70, 0x80, 0x83, 0xFF, 0x0F, 0xFF, 0x3F, 0xFE, 0xFF, 0x03, + 0xF8, 0xFF, 0x3F, 0xFE, 0x7F, 0x70, 0x80, 0x83, 0xFF, 0x0F, 0xFF, 0x3F, 0xFE, 0xFF, 0x07, 0xF8, + 0x0F, 0x3F, 0x3E, 0x00, 0x7F, 0x80, 0xC3, 0x07, 0xF0, 0x0F, 0x3F, 0x3C, 0xFE, 0x07, 0xF8, 0x07, + 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0xC3, 0x03, 0xF0, 0x0F, 0x02, 0x3C, 0x83, 0xF8, 0x07, 0xF8, 0x07, + 0x02, 0x3C, 0x86, 0x00, 0xFF, 0xC0, 0xC3, 0x03, 0xF0, 0x0F, 0x02, 0x3C, 0x83, 0xF8, 0x0F, 0xF8, + 0x07, 0x02, 0x3C, 0x8C, 0x00, 0xFF, 0xC0, 0xC3, 0x03, 0xF0, 0x0F, 0x3C, 0x38, 0xF0, 0x0F, 0xF8, + 0x07, 0x02, 0x3C, 0x86, 0x00, 0xFF, 0xC0, 0xC3, 0x03, 0xF0, 0x0F, 0x02, 0x38, 0x83, 0xF0, 0x0F, + 0xF8, 0x07, 0x02, 0x3C, 0x86, 0x00, 0xFF, 0xC0, 0xE3, 0x03, 0xF0, 0x0F, 0x02, 0x38, 0x83, 0xF0, + 0x0F, 0xF8, 0x07, 0x02, 0x3C, 0x86, 0x00, 0xFE, 0xC0, 0xE3, 0x03, 0xF0, 0x0F, 0x02, 0x38, 0x83, + 0xF0, 0x0F, 0xF8, 0x07, 0x02, 0x38, 0x86, 0x00, 0xFE, 0xC0, 0xE3, 0x03, 0xF0, 0x0F, 0x02, 0x38, + 0x83, 0xF0, 0x0F, 0xF8, 0x07, 0x02, 0x3C, 0x86, 0x00, 0xFE, 0xE0, 0xE3, 0x03, 0xF0, 0x0F, 0x02, + 0x38, 0x83, 0xF0, 0x0F, 0xF8, 0x07, 0x02, 0x3C, 0x86, 0x00, 0xFE, 0xE1, 0xE3, 0x03, 0xF0, 0x0F, + 0x02, 0x38, 0x83, 0xF8, 0x07, 0xF8, 0x07, 0x02, 0x3C, 0x86, 0x00, 0xFE, 0xE1, 0xF3, 0x03, 0xF0, + 0x0F, 0x02, 0x38, 0xCF, 0xFC, 0x07, 0xF8, 0x07, 0x3C, 0xFC, 0xFF, 0xFD, 0xE1, 0xF3, 0xFF, 0xEF, + 0x0F, 0x3C, 0xF8, 0xFF, 0x07, 0xF8, 0x07, 0x3E, 0xFC, 0xFF, 0xFD, 0xE1, 0xF3, 0xFF, 0xEF, 0x0F, + 0x3C, 0xFC, 0xFF, 0x03, 0xF8, 0x07, 0x3F, 0xFC, 0xFF, 0xFD, 0xE1, 0xF3, 0xFF, 0xEF, 0x0F, 0x3E, + 0xFC, 0xFF, 0x01, 0xF8, 0xFF, 0x3F, 0xFE, 0xFF, 0xFD, 0xE1, 0xF3, 0xFF, 0xEF, 0xFF, 0x3F, 0xFC, + 0xFF, 0x00, 0xF8, 0xFF, 0x3F, 0xFE, 0xFF, 0xFD, 0xE1, 0xF3, 0xFF, 0xEF, 0xFF, 0x3F, 0xFE, 0xFF, + 0x03, 0xF8, 0xFF, 0x3F, 0x02, 0xFF, 0x86, 0xF9, 0xF1, 0xFB, 0xFF, 0xEF, 0xFF, 0x3F, 0x02, 0xFF, + 0x83, 0x07, 0xF8, 0xFF, 0xBF, 0x02, 0xFF, 0x86, 0xF9, 0xF3, 0xFB, 0xFF, 0xEF, 0xFF, 0x3F, 0x02, + 0xFF, 0x81, 0x0F, 0xF8, 0x02, 0xFF, 0x86, 0x3F, 0x00, 0xF8, 0xF3, 0xFB, 0x03, 0xF0, 0x02, 0xFF, + 0xD3, 0x3F, 0xF8, 0x0F, 0xF8, 0xFF, 0xCF, 0x3F, 0x00, 0xF8, 0xF3, 0xFF, 0x03, 0xF0, 0xFF, 0xDF, + 0x3F, 0xF0, 0x1F, 0xF8, 0xFF, 0xCF, 0x3F, 0x00, 0xF8, 0xF3, 0xFF, 0x03, 0xF0, 0xFF, 0xDF, 0x3F, + 0xE0, 0x1F, 0xF8, 0xF7, 0xDF, 0x3F, 0x00, 0xF8, 0xF3, 0xFF, 0x03, 0xF0, 0xEF, 0xDF, 0x3F, 0xE0, + 0x1F, 0xF8, 0xE7, 0xDF, 0x3F, 0x00, 0xF0, 0xF3, 0xFF, 0x03, 0xF0, 0xEF, 0xFF, 0x3F, 0xE0, 0x1F, + 0xF8, 0xE7, 0xFF, 0x3F, 0x00, 0xF0, 0xFB, 0xFF, 0x03, 0xF0, 0xCF, 0xFF, 0x3F, 0xE0, 0x3F, 0xF8, + 0xC7, 0xFF, 0x3F, 0x00, 0xF0, 0x02, 0xFF, 0x8C, 0x03, 0xF0, 0xCF, 0xFF, 0x3F, 0xE0, 0x3F, 0xF8, + 0xC7, 0xFF, 0x3F, 0x00, 0xF0, 0x02, 0xFF, 0x8C, 0x03, 0xF0, 0x8F, 0xBF, 0x3F, 0xE0, 0x1F, 0xF8, + 0x87, 0xBF, 0x3F, 0x00, 0xF0, 0x02, 0xFF, 0x91, 0x03, 0xF0, 0x8F, 0xBF, 0x3F, 0xE0, 0x1F, 0xF8, + 0x87, 0xBF, 0x3F, 0x00, 0xE0, 0xFF, 0xFD, 0x03, 0xF0, 0x0F, 0x02, 0x3F, 0x83, 0xE0, 0x1F, 0xF8, + 0x07, 0x02, 0x3F, 0x86, 0x00, 0xE0, 0xFF, 0xFD, 0x03, 0xF0, 0x0F, 0x02, 0x3F, 0x83, 0xF0, 0x1F, + 0xF8, 0x07, 0x02, 0x3F, 0x93, 0x00, 0xE0, 0xFF, 0xFD, 0x03, 0xF0, 0x0F, 0x3F, 0x3E, 0xF8, 0x1F, + 0xF8, 0x07, 0x3E, 0xFE, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0x02, 0x0F, 0x8C, 0x3E, 0xFE, 0xFF, 0x0F, + 0xF8, 0x07, 0x3E, 0xFE, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0x02, 0x0F, 0x8C, 0x3E, 0xFC, 0xFF, 0x0F, + 0xF8, 0x07, 0x3E, 0xFC, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, 0x02, 0x0F, 0x8C, 0x3C, 0xFC, 0xFF, 0x07, + 0xF8, 0x07, 0x3C, 0xFC, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, 0x02, 0x0F, 0x8C, 0x3C, 0xF8, 0xFF, 0x03, + 0xF8, 0x07, 0x3C, 0xF8, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, 0x02, 0x0F, 0x8C, 0x38, 0xF8, 0xFF, 0x01, + 0xF8, 0x07, 0x38, 0xF8, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, 0x02, 0x0F, 0x91, 0x38, 0xF8, 0x7F, 0x00, + 0xF0, 0x07, 0x38, 0xF0, 0xFF, 0xCF, 0x7F, 0xFC, 0xFF, 0x0F, 0x0E, 0x30, 0xF0, 0x0F, 0x2E, 0x00, +}; +// clang-format on diff --git a/keyboards/dasky/reverb/graphics/reverb.qgf.h b/keyboards/dasky/reverb/graphics/reverb.qgf.h new file mode 100644 index 000000000000..d44aeeff964a --- /dev/null +++ b/keyboards/dasky/reverb/graphics/reverb.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2023 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics -i reverb.png -f mono2` + +#pragma once + +#include + +extern const uint32_t gfx_reverb_length; +extern const uint8_t gfx_reverb[736]; diff --git a/keyboards/dasky/reverb/graphics/robotomono20.qff.c b/keyboards/dasky/reverb/graphics/robotomono20.qff.c new file mode 100644 index 000000000000..a232ffadfbb4 --- /dev/null +++ b/keyboards/dasky/reverb/graphics/robotomono20.qff.c @@ -0,0 +1,320 @@ +// Copyright 2023 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image -i robotomono20.png -f mono4` + +#include + +const uint32_t font_robotomono20_length = 4904; + +// clang-format off +const uint8_t font_robotomono20[4904] = { + 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0x28, 0x13, 0x00, 0x00, 0xD7, 0xEC, 0xFF, + 0xFF, 0x16, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x0C, 0x00, + 0x00, 0x8C, 0x00, 0x00, 0x0C, 0x0E, 0x00, 0xCC, 0x12, 0x00, 0xCC, 0x1F, 0x00, 0x8C, 0x2F, 0x00, + 0x0C, 0x3D, 0x00, 0xCC, 0x49, 0x00, 0x4C, 0x4F, 0x00, 0x4C, 0x62, 0x00, 0x0C, 0x76, 0x00, 0x4C, + 0x7F, 0x00, 0xCC, 0x89, 0x00, 0x0C, 0x8F, 0x00, 0xCC, 0x91, 0x00, 0x4C, 0x95, 0x00, 0x0C, 0xA4, + 0x00, 0xCC, 0xB0, 0x00, 0x8C, 0xBE, 0x00, 0x4C, 0xCB, 0x00, 0x4C, 0xD8, 0x00, 0x8C, 0xE4, 0x00, + 0x4C, 0xF2, 0x00, 0x8C, 0xFF, 0x00, 0x0C, 0x0D, 0x01, 0xCC, 0x19, 0x01, 0x0C, 0x26, 0x01, 0x8C, + 0x2C, 0x01, 0x0C, 0x35, 0x01, 0xCC, 0x3C, 0x01, 0x8C, 0x42, 0x01, 0x8C, 0x4A, 0x01, 0x8C, 0x56, + 0x01, 0x4C, 0x63, 0x01, 0xCC, 0x70, 0x01, 0x4C, 0x7D, 0x01, 0x4C, 0x8B, 0x01, 0x8C, 0x97, 0x01, + 0x0C, 0xA6, 0x01, 0x4C, 0xB4, 0x01, 0xCC, 0xC1, 0x01, 0x4C, 0xCE, 0x01, 0x0C, 0xDD, 0x01, 0x0C, + 0xEC, 0x01, 0x8C, 0xF8, 0x01, 0x4C, 0x08, 0x02, 0xCC, 0x14, 0x02, 0x8C, 0x21, 0x02, 0x8C, 0x2E, + 0x02, 0x8C, 0x3B, 0x02, 0x8C, 0x49, 0x02, 0x0C, 0x56, 0x02, 0x4C, 0x63, 0x02, 0x4C, 0x72, 0x02, + 0x4C, 0x7F, 0x02, 0x4C, 0x8C, 0x02, 0x8C, 0x99, 0x02, 0xCC, 0xA6, 0x02, 0xCC, 0xB4, 0x02, 0x0C, + 0xC2, 0x02, 0x4C, 0xD6, 0x02, 0x0C, 0xE7, 0x02, 0x4C, 0xFB, 0x02, 0x0C, 0x03, 0x03, 0xCC, 0x05, + 0x03, 0x4C, 0x09, 0x03, 0x4C, 0x13, 0x03, 0x4C, 0x21, 0x03, 0xCC, 0x2B, 0x03, 0x0C, 0x39, 0x03, + 0x0C, 0x43, 0x03, 0x0C, 0x52, 0x03, 0x8C, 0x5E, 0x03, 0x0C, 0x6C, 0x03, 0x4C, 0x7A, 0x03, 0xCC, + 0x89, 0x03, 0x4C, 0x97, 0x03, 0x8C, 0xA6, 0x03, 0x0C, 0xB0, 0x03, 0x8C, 0xB9, 0x03, 0x4C, 0xC3, + 0x03, 0xCC, 0xCF, 0x03, 0x0C, 0xDD, 0x03, 0x4C, 0xE6, 0x03, 0x0C, 0xF0, 0x03, 0x4C, 0xFD, 0x03, + 0x4C, 0x07, 0x04, 0x4C, 0x11, 0x04, 0xCC, 0x1A, 0x04, 0xCC, 0x24, 0x04, 0x8C, 0x32, 0x04, 0x8C, + 0x3C, 0x04, 0xCC, 0x4F, 0x04, 0x4C, 0x62, 0x04, 0xCC, 0x75, 0x04, 0x04, 0xFB, 0xE8, 0x11, 0x00, + 0x42, 0x00, 0x07, 0x00, 0x80, 0x04, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, + 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, + 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x14, 0x08, 0x00, + 0x80, 0x2C, 0x02, 0x00, 0x80, 0x3C, 0x10, 0x00, 0x06, 0x00, 0x8D, 0x80, 0xC3, 0x01, 0x80, 0xC3, + 0x01, 0x80, 0xC3, 0x01, 0x80, 0xC2, 0x01, 0x40, 0x82, 0x2E, 0x00, 0x07, 0x00, 0x02, 0x04, 0x80, + 0x00, 0x02, 0x0D, 0x80, 0x00, 0x02, 0x0D, 0x80, 0x00, 0x02, 0x0A, 0x97, 0x00, 0x0A, 0x0B, 0xF8, + 0xFF, 0xBF, 0x50, 0x57, 0x17, 0x40, 0x43, 0x03, 0x80, 0x82, 0x02, 0xD4, 0xD6, 0x16, 0xFD, 0xFF, + 0x2F, 0xC0, 0xD1, 0x01, 0x02, 0xD0, 0x83, 0x00, 0xE0, 0xA0, 0x00, 0x02, 0xA0, 0x10, 0x00, 0x81, + 0x00, 0x24, 0x02, 0x00, 0x80, 0x34, 0x02, 0x00, 0x95, 0x78, 0x00, 0x80, 0xFF, 0x07, 0xD0, 0x56, + 0x0F, 0xE0, 0x00, 0x1E, 0xF0, 0x00, 0x2D, 0xE0, 0x01, 0x00, 0xD0, 0x07, 0x00, 0x40, 0xBF, 0x02, + 0x00, 0x95, 0xF4, 0x07, 0x00, 0x40, 0x1F, 0x10, 0x00, 0x2D, 0x74, 0x00, 0x2D, 0xB0, 0x00, 0x2D, + 0xE0, 0x96, 0x0F, 0x80, 0xFF, 0x06, 0x00, 0x38, 0x02, 0x00, 0x80, 0x38, 0x0A, 0x00, 0x06, 0x00, + 0x80, 0x50, 0x02, 0x00, 0x90, 0xFC, 0x03, 0x00, 0x0D, 0x0B, 0x01, 0x0A, 0x4A, 0x07, 0x0E, 0x8A, + 0x02, 0x6D, 0xD7, 0x00, 0xA4, 0xB1, 0x02, 0x00, 0x80, 0x34, 0x02, 0x00, 0x80, 0x1C, 0x02, 0x00, + 0x90, 0x8E, 0x2F, 0x00, 0xD7, 0x75, 0x80, 0xA2, 0xB0, 0xC0, 0xA1, 0xA0, 0x00, 0xE0, 0x70, 0x00, + 0x80, 0x2F, 0x0F, 0x00, 0x07, 0x00, 0xAD, 0x15, 0x00, 0x80, 0xFF, 0x00, 0xD0, 0xD2, 0x02, 0xE0, + 0xC1, 0x02, 0xE0, 0xC1, 0x02, 0xD0, 0xE2, 0x01, 0xC0, 0x7F, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x2E, + 0x24, 0xB4, 0x78, 0x74, 0x3C, 0xF0, 0x39, 0x3C, 0xD0, 0x2F, 0x38, 0x40, 0x0F, 0xF4, 0xE5, 0x2F, + 0xD0, 0xBF, 0x7D, 0x00, 0x04, 0x0D, 0x00, 0x07, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x1D, 0x02, + 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x08, 0x2E, 0x00, 0x04, 0x00, 0x86, + 0x40, 0x01, 0x00, 0xE0, 0x01, 0x00, 0x74, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x1D, 0x02, + 0x00, 0x80, 0x0E, 0x02, 0x00, 0x95, 0x0B, 0x00, 0x40, 0x0B, 0x00, 0x40, 0x07, 0x00, 0x40, 0x07, + 0x00, 0x80, 0x07, 0x00, 0x40, 0x07, 0x00, 0x40, 0x07, 0x00, 0x40, 0x0B, 0x02, 0x00, 0x80, 0x0B, + 0x02, 0x00, 0x80, 0x0E, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0xB0, + 0x02, 0x00, 0x81, 0xD0, 0x01, 0x02, 0x00, 0x80, 0x01, 0x03, 0x00, 0x84, 0x80, 0x01, 0x00, 0x40, + 0x07, 0x02, 0x00, 0x80, 0x0E, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, + 0xB4, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xE0, 0x02, 0x00, 0x8C, 0xE0, 0x01, 0x00, 0xE0, + 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x02, 0x00, 0x80, 0xE0, 0x02, 0x00, 0x80, + 0xB0, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x85, + 0x0B, 0x00, 0x80, 0x02, 0x00, 0x40, 0x02, 0x00, 0x07, 0x00, 0x80, 0x10, 0x02, 0x00, 0x80, 0x38, + 0x02, 0x00, 0x8C, 0x34, 0x00, 0x10, 0x34, 0x10, 0xF4, 0x7A, 0x2E, 0x90, 0xFF, 0x1A, 0x00, 0xBC, + 0x02, 0x00, 0x87, 0xDB, 0x01, 0x80, 0x87, 0x03, 0x80, 0x42, 0x07, 0x1E, 0x00, 0x10, 0x00, 0x80, + 0x28, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x8C, 0x3C, 0x00, 0xA8, 0xBE, + 0x2A, 0xFC, 0xFF, 0x3F, 0x50, 0x7D, 0x05, 0x00, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, + 0x3C, 0x02, 0x00, 0x80, 0x28, 0x13, 0x00, 0x2E, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, + 0x00, 0x80, 0x1E, 0x02, 0x00, 0x83, 0x0F, 0x00, 0x40, 0x07, 0x07, 0x00, 0x1E, 0x00, 0x85, 0xF0, + 0xFF, 0x0B, 0x90, 0xAA, 0x06, 0x1E, 0x00, 0x2B, 0x00, 0x80, 0x24, 0x02, 0x00, 0x80, 0xBC, 0x02, + 0x00, 0x80, 0x7C, 0x10, 0x00, 0x08, 0x00, 0x80, 0x04, 0x02, 0x00, 0x8E, 0x0B, 0x00, 0x40, 0x07, + 0x00, 0x80, 0x03, 0x00, 0xC0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xA0, 0x02, 0x00, 0x80, 0x74, 0x02, + 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x0E, 0x02, + 0x00, 0x8B, 0x0B, 0x00, 0x40, 0x03, 0x00, 0xC0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0x40, 0x0B, 0x00, + 0x07, 0x00, 0xAD, 0x55, 0x00, 0x80, 0xFF, 0x02, 0xE0, 0x42, 0x0B, 0xB0, 0x00, 0x1E, 0x74, 0x00, + 0x1D, 0x78, 0x00, 0x2E, 0x78, 0xD0, 0x2F, 0x78, 0xB8, 0x2D, 0x78, 0x1E, 0x2D, 0xF8, 0x07, 0x2D, + 0xB8, 0x00, 0x2D, 0x74, 0x00, 0x1D, 0xB0, 0x00, 0x0E, 0xE0, 0x96, 0x0B, 0x40, 0xFF, 0x02, 0x00, + 0x14, 0x0D, 0x00, 0x0A, 0x00, 0x89, 0xB4, 0x00, 0x90, 0xBF, 0x00, 0xF0, 0xB6, 0x00, 0x10, 0xB4, + 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, + 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, + 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x10, 0x00, 0x07, 0x00, 0x98, 0x15, 0x00, 0xD0, + 0xFF, 0x01, 0xB4, 0xD1, 0x07, 0x3C, 0x40, 0x0B, 0x2C, 0x00, 0x0B, 0x00, 0x40, 0x0B, 0x00, 0x80, + 0x07, 0x00, 0xD0, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x3D, 0x02, 0x00, 0x8D, 0x0F, 0x00, 0xC0, + 0x07, 0x00, 0xE0, 0x01, 0x00, 0xB8, 0x55, 0x15, 0xFC, 0xFF, 0x1F, 0x0F, 0x00, 0x07, 0x00, 0x9C, + 0x15, 0x00, 0xD0, 0xFF, 0x01, 0xB4, 0xD1, 0x07, 0x38, 0x40, 0x0B, 0x14, 0x00, 0x0B, 0x00, 0x40, + 0x0B, 0x00, 0xD0, 0x03, 0x40, 0xFF, 0x01, 0x00, 0xE9, 0x02, 0x00, 0x40, 0x0B, 0x02, 0x00, 0x8E, + 0x0F, 0x28, 0x00, 0x0F, 0x3C, 0x40, 0x0B, 0xF4, 0xD5, 0x07, 0xD0, 0xBF, 0x01, 0x00, 0x04, 0x0D, + 0x00, 0x07, 0x00, 0xAB, 0x40, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xF8, 0x03, 0x00, + 0x9D, 0x03, 0x00, 0x8B, 0x03, 0x80, 0x83, 0x03, 0xD0, 0x81, 0x03, 0xB0, 0x80, 0x03, 0x78, 0x80, + 0x03, 0xBC, 0xEA, 0x2B, 0xA9, 0xEA, 0x2B, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, + 0x0F, 0x00, 0x06, 0x00, 0x97, 0x40, 0x55, 0x05, 0xC0, 0xFF, 0x1F, 0xC0, 0xAA, 0x1A, 0xD0, 0x01, + 0x00, 0xD0, 0x01, 0x00, 0xD0, 0x51, 0x00, 0xE0, 0xFF, 0x07, 0xE0, 0x96, 0x0F, 0x02, 0x00, 0x80, + 0x1E, 0x02, 0x00, 0x80, 0x2D, 0x02, 0x00, 0x8E, 0x2C, 0x60, 0x00, 0x2C, 0xF0, 0x00, 0x1E, 0xD0, + 0x97, 0x0F, 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x07, 0x00, 0x80, 0x40, 0x02, 0x00, 0x88, + 0xF9, 0x01, 0x80, 0x6F, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0x9F, 0xB4, 0x14, 0x00, 0xB4, + 0xFF, 0x02, 0xF8, 0x96, 0x0B, 0xB8, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1D, 0x74, 0x00, + 0x1E, 0xF0, 0x00, 0x0F, 0xD0, 0x96, 0x07, 0x40, 0xFF, 0x01, 0x00, 0x14, 0x0D, 0x00, 0x06, 0x00, + 0x88, 0x54, 0x55, 0x05, 0xFC, 0xFF, 0x2F, 0x54, 0x55, 0x1E, 0x02, 0x00, 0x8E, 0x0E, 0x00, 0x40, + 0x07, 0x00, 0x80, 0x03, 0x00, 0xC0, 0x02, 0x00, 0xE0, 0x01, 0x00, 0xB0, 0x02, 0x00, 0x80, 0x78, + 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x86, 0x0F, 0x00, 0x40, 0x07, 0x00, + 0xC0, 0x03, 0x10, 0x00, 0x07, 0x00, 0xAD, 0x54, 0x00, 0x80, 0xFF, 0x07, 0xD0, 0x46, 0x0F, 0xE0, + 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x1E, 0xD0, 0x46, 0x0B, 0x40, 0xFF, 0x02, 0xD0, 0x9B, + 0x0B, 0xF0, 0x00, 0x1E, 0xB4, 0x00, 0x2C, 0xB4, 0x00, 0x2C, 0xF0, 0x00, 0x2D, 0xE0, 0x96, 0x0F, + 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x07, 0x00, 0x9F, 0x15, 0x00, 0x80, 0xFF, 0x02, 0xE0, + 0x92, 0x07, 0xB4, 0x00, 0x0F, 0x74, 0x00, 0x1E, 0x78, 0x00, 0x1D, 0x74, 0x00, 0x1D, 0xB4, 0x00, + 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1E, 0x00, 0x04, 0x0E, 0x02, 0x00, 0x88, 0x0B, 0x00, 0xD0, + 0x03, 0x40, 0xFA, 0x01, 0x80, 0x2F, 0x10, 0x00, 0x10, 0x00, 0x80, 0x60, 0x02, 0x00, 0x80, 0xF8, + 0x02, 0x00, 0x80, 0xF4, 0x14, 0x00, 0x80, 0x60, 0x02, 0x00, 0x80, 0xF8, 0x02, 0x00, 0x80, 0xF4, + 0x10, 0x00, 0x10, 0x00, 0x80, 0x60, 0x02, 0x00, 0x80, 0xF8, 0x02, 0x00, 0x80, 0xF8, 0x17, 0x00, + 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, + 0x80, 0x2C, 0x07, 0x00, 0x14, 0x00, 0x95, 0x04, 0x00, 0x90, 0x0F, 0x00, 0xF9, 0x06, 0xD0, 0x2F, + 0x00, 0xF4, 0x01, 0x00, 0xE0, 0x0B, 0x00, 0x40, 0xBE, 0x01, 0x00, 0xE0, 0x0F, 0x02, 0x00, 0x80, + 0x09, 0x15, 0x00, 0x15, 0x00, 0x88, 0x50, 0x55, 0x05, 0xF4, 0xFF, 0x1F, 0x50, 0x55, 0x05, 0x06, + 0x00, 0x85, 0xF4, 0xFF, 0x1F, 0x50, 0x55, 0x15, 0x18, 0x00, 0x12, 0x00, 0x80, 0x14, 0x02, 0x00, + 0x84, 0xF4, 0x02, 0x00, 0x90, 0x6F, 0x02, 0x00, 0x8E, 0xF8, 0x07, 0x00, 0x40, 0x1F, 0x00, 0xE4, + 0x0B, 0x40, 0xBF, 0x01, 0xF4, 0x07, 0x00, 0x64, 0x17, 0x00, 0x07, 0x00, 0x8A, 0x55, 0x00, 0x80, + 0xFF, 0x07, 0xE0, 0x96, 0x0F, 0xB0, 0x00, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x88, 0x0F, + 0x00, 0x80, 0x0B, 0x00, 0xD0, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x2C, + 0x08, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x10, 0x00, 0x07, 0x00, 0x89, 0x10, 0x00, 0x40, + 0xFE, 0x06, 0xD0, 0x02, 0x0E, 0x70, 0x10, 0x02, 0x28, 0x97, 0xFD, 0x31, 0x1C, 0x8B, 0x71, 0x4C, + 0x83, 0x61, 0x4D, 0xC2, 0x61, 0x8D, 0xC2, 0x70, 0x8D, 0xC2, 0x30, 0x4D, 0xFB, 0x29, 0x1C, 0x5A, + 0x0B, 0x38, 0x02, 0x00, 0x85, 0xE0, 0x55, 0x01, 0x80, 0xFF, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x80, + 0xEE, 0x02, 0x00, 0x9C, 0xDB, 0x01, 0x40, 0xC7, 0x02, 0x80, 0x83, 0x03, 0xC0, 0x42, 0x07, 0xD0, + 0x56, 0x0B, 0xE0, 0xFF, 0x0F, 0xB0, 0x55, 0x1E, 0x74, 0x00, 0x2C, 0x38, 0x00, 0x3C, 0x2C, 0x00, + 0x78, 0x0F, 0x00, 0x06, 0x00, 0xAC, 0x50, 0x15, 0x00, 0xF4, 0xFF, 0x02, 0xB4, 0x95, 0x0F, 0xB4, + 0x00, 0x1E, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x1E, 0xB4, 0x90, 0x0B, 0xF4, 0xFF, 0x02, 0xB4, 0x95, + 0x0F, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x3C, 0xB4, 0x00, 0x3C, 0xB4, 0x00, 0x2E, 0xB4, 0xAA, 0x0F, + 0xF4, 0xFF, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x8E, 0x54, 0x00, 0x80, 0xFF, 0x07, 0xE0, 0x42, 0x0F, + 0xB4, 0x00, 0x2D, 0x78, 0x00, 0x2C, 0x38, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, + 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x90, 0x38, 0x00, 0x14, 0x78, 0x00, 0x2C, + 0xB0, 0x00, 0x1E, 0xD0, 0x96, 0x0B, 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x06, 0x00, 0xAB, + 0x50, 0x05, 0x00, 0xF4, 0xBF, 0x01, 0xB4, 0xE5, 0x07, 0x74, 0x00, 0x0F, 0x74, 0x00, 0x2D, 0x74, + 0x00, 0x3C, 0x74, 0x00, 0x38, 0x74, 0x00, 0x38, 0x74, 0x00, 0x38, 0x74, 0x00, 0x38, 0x74, 0x00, + 0x2C, 0x74, 0x00, 0x1D, 0x74, 0x40, 0x0F, 0xB4, 0xE9, 0x03, 0xF4, 0x6F, 0x10, 0x00, 0x06, 0x00, + 0x89, 0x50, 0x55, 0x05, 0xF4, 0xFF, 0x1F, 0xB4, 0x55, 0x05, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, + 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x86, 0xF4, 0xFF, 0x0B, 0xB4, 0x55, 0x05, + 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x85, + 0xB4, 0xAA, 0x1A, 0xF4, 0xFF, 0x2F, 0x0F, 0x00, 0x06, 0x00, 0x89, 0x50, 0x55, 0x05, 0xF0, 0xFF, + 0x2F, 0xB0, 0x55, 0x15, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, + 0xB0, 0x02, 0x00, 0x86, 0xF0, 0xAA, 0x06, 0xF0, 0xAA, 0x06, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, + 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x11, + 0x00, 0x07, 0x00, 0x8E, 0x54, 0x00, 0x80, 0xFF, 0x06, 0xE0, 0x46, 0x0F, 0xB4, 0x00, 0x2D, 0x78, + 0x00, 0x2C, 0x3C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x96, 0x2C, 0xE0, + 0x3F, 0x3C, 0x50, 0x3D, 0x38, 0x00, 0x3C, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xD0, 0x57, 0x2E, + 0x40, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, 0x06, 0x00, 0xAC, 0x10, 0x00, 0x04, 0x38, 0x00, 0x2C, + 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x78, 0x00, 0x2D, 0xF8, + 0xFF, 0x2F, 0x78, 0x55, 0x2D, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, + 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x0F, 0x00, 0x06, 0x00, 0x8A, 0x50, 0x55, 0x05, 0xF4, + 0xFF, 0x1F, 0x50, 0x7D, 0x05, 0x00, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, + 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, + 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x87, 0x3C, 0x00, 0xA4, 0xBE, 0x1A, 0xF4, + 0xFF, 0x1F, 0x0F, 0x00, 0x08, 0x00, 0x80, 0x04, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, + 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, + 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x8E, 0x1E, + 0x3C, 0x00, 0x0E, 0x78, 0x40, 0x0B, 0xF0, 0xE6, 0x07, 0x90, 0xBF, 0x01, 0x00, 0x04, 0x0D, 0x00, + 0x06, 0x00, 0xAC, 0x10, 0x00, 0x14, 0xB4, 0x00, 0x2D, 0xB4, 0x40, 0x0F, 0xB4, 0xC0, 0x03, 0xB4, + 0xF0, 0x01, 0xB4, 0x78, 0x00, 0xB4, 0x2D, 0x00, 0xB4, 0x2F, 0x00, 0xF4, 0x7B, 0x00, 0xF4, 0xF5, + 0x00, 0xB4, 0xE0, 0x02, 0xB4, 0xC0, 0x07, 0xB4, 0x40, 0x0F, 0xB4, 0x00, 0x2E, 0xB4, 0x00, 0x7C, + 0x0F, 0x00, 0x06, 0x00, 0x80, 0x10, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, + 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, + 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, + 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x85, 0xF0, 0xAA, 0x1A, 0xF0, 0xFF, 0x2F, 0x0F, + 0x00, 0x06, 0x00, 0xAC, 0x10, 0x00, 0x04, 0xF8, 0x00, 0x2E, 0xF8, 0x01, 0x2F, 0xF8, 0x42, 0x2F, + 0xB8, 0x83, 0x2E, 0x78, 0xC7, 0x2D, 0x78, 0xEB, 0x2C, 0x38, 0xBE, 0x2C, 0x78, 0x7D, 0x2C, 0x78, + 0x3C, 0x2C, 0x78, 0x28, 0x2C, 0x78, 0x00, 0x2C, 0x78, 0x00, 0x2C, 0x78, 0x00, 0x2C, 0x78, 0x00, + 0x2C, 0x0F, 0x00, 0x06, 0x00, 0x97, 0x10, 0x00, 0x04, 0xB8, 0x00, 0x2D, 0xF8, 0x00, 0x2D, 0xF8, + 0x02, 0x2D, 0xF8, 0x07, 0x2D, 0x78, 0x0B, 0x2D, 0x78, 0x1E, 0x2D, 0x78, 0x2C, 0x2D, 0x02, 0x78, + 0x92, 0x2D, 0x78, 0xB0, 0x2D, 0x78, 0xE0, 0x2E, 0x78, 0xC0, 0x2F, 0x78, 0x80, 0x2F, 0x78, 0x00, + 0x2F, 0x78, 0x00, 0x2D, 0x0F, 0x00, 0x07, 0x00, 0x98, 0x15, 0x00, 0x80, 0xFF, 0x02, 0xE0, 0x96, + 0x0B, 0xB4, 0x00, 0x1E, 0x78, 0x00, 0x2D, 0x38, 0x00, 0x2C, 0x3C, 0x00, 0x3C, 0x2C, 0x00, 0x3C, + 0x2C, 0x00, 0x02, 0x3C, 0x92, 0x00, 0x3C, 0x38, 0x00, 0x2C, 0x78, 0x00, 0x2D, 0xB0, 0x00, 0x0E, + 0xD0, 0xD7, 0x07, 0x40, 0xFF, 0x01, 0x00, 0x14, 0x0D, 0x00, 0x06, 0x00, 0x9E, 0x50, 0x15, 0x00, + 0xF0, 0xFF, 0x07, 0xB0, 0x55, 0x1F, 0xB0, 0x00, 0x3C, 0xB0, 0x00, 0x38, 0xB0, 0x00, 0x38, 0xB0, + 0x00, 0x3C, 0xB0, 0x55, 0x1F, 0xF0, 0xFF, 0x07, 0xB0, 0x55, 0x00, 0xB0, 0x02, 0x00, 0x80, 0xB0, + 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x11, 0x00, 0x07, 0x00, + 0xAE, 0x55, 0x00, 0x80, 0xFF, 0x02, 0xE0, 0x96, 0x0B, 0xB4, 0x00, 0x1E, 0x38, 0x00, 0x2C, 0x3C, + 0x00, 0x3C, 0x2C, 0x00, 0x38, 0x2C, 0x00, 0x38, 0x2C, 0x00, 0x38, 0x2C, 0x00, 0x38, 0x3C, 0x00, + 0x3C, 0x78, 0x00, 0x2D, 0xB4, 0x00, 0x1E, 0xE0, 0x96, 0x0B, 0x40, 0xFF, 0x07, 0x00, 0x44, 0x2F, + 0x02, 0x00, 0x80, 0x38, 0x09, 0x00, 0x06, 0x00, 0xAC, 0x50, 0x15, 0x00, 0xF4, 0xFF, 0x02, 0xB4, + 0x95, 0x0F, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x2C, 0xB4, 0x00, 0x2C, 0xB4, 0x00, 0x1E, 0xB4, 0x95, + 0x0B, 0xF4, 0xFF, 0x02, 0xB4, 0xE5, 0x01, 0xB4, 0xC0, 0x03, 0xB4, 0x40, 0x07, 0xB4, 0x00, 0x0F, + 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x3C, 0x0F, 0x00, 0x07, 0x00, 0x8E, 0x54, 0x00, 0x80, 0xFF, 0x07, + 0xE0, 0x46, 0x1F, 0xB4, 0x00, 0x2D, 0x74, 0x00, 0x2C, 0xB4, 0x02, 0x00, 0x8B, 0xE0, 0x07, 0x00, + 0x80, 0xBF, 0x01, 0x00, 0xF4, 0x0B, 0x00, 0x40, 0x1F, 0x02, 0x00, 0x8E, 0x3C, 0x38, 0x00, 0x3C, + 0xB4, 0x00, 0x3D, 0xE0, 0x96, 0x1F, 0x40, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, 0x06, 0x00, 0x8A, + 0x54, 0x55, 0x15, 0xFD, 0xFF, 0x7F, 0x54, 0x7D, 0x15, 0x00, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, + 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, + 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, + 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x10, 0x00, 0x06, 0x00, 0xAE, 0x10, 0x00, 0x04, 0x38, + 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, + 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2D, 0x78, 0x00, 0x2D, + 0xB4, 0x00, 0x1E, 0xE0, 0x96, 0x0B, 0x40, 0xFF, 0x01, 0x00, 0x14, 0x0D, 0x00, 0x06, 0x00, 0xA2, + 0x04, 0x00, 0x10, 0x3C, 0x00, 0x3C, 0x38, 0x00, 0x2D, 0x74, 0x00, 0x1D, 0xB0, 0x00, 0x0E, 0xE0, + 0x00, 0x0B, 0xE0, 0x41, 0x07, 0xD0, 0x82, 0x03, 0xC0, 0xC3, 0x02, 0x80, 0xD7, 0x01, 0x40, 0xE7, + 0x01, 0x00, 0xFB, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0x3C, 0x10, + 0x00, 0x06, 0x00, 0x80, 0x04, 0x02, 0x10, 0x8A, 0x2D, 0x38, 0x74, 0x2C, 0x7C, 0x74, 0x2C, 0x7C, + 0x74, 0x28, 0xBD, 0x02, 0x38, 0x80, 0xAD, 0x02, 0x38, 0x99, 0xDA, 0x38, 0x34, 0xDB, 0x2C, 0x74, + 0xC7, 0x2D, 0xB4, 0xC7, 0x1E, 0xB0, 0x83, 0x1E, 0xF0, 0x83, 0x1F, 0xF0, 0x42, 0x0F, 0xE0, 0x42, + 0x0F, 0xE0, 0x01, 0x0F, 0x0F, 0x00, 0x06, 0x00, 0x93, 0x14, 0x00, 0x14, 0x78, 0x00, 0x3D, 0xF0, + 0x00, 0x1E, 0xD0, 0x42, 0x0B, 0xC0, 0xC3, 0x03, 0x40, 0xDB, 0x02, 0x00, 0xFE, 0x02, 0x00, 0x80, + 0x7C, 0x02, 0x00, 0x80, 0xBD, 0x02, 0x00, 0x90, 0xEF, 0x01, 0x40, 0xD7, 0x02, 0xC0, 0x83, 0x07, + 0xE0, 0x01, 0x0F, 0xB4, 0x00, 0x2E, 0x7C, 0x00, 0x3C, 0x0F, 0x00, 0x06, 0x00, 0x96, 0x04, 0x00, + 0x14, 0x3C, 0x00, 0x2D, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x0F, 0xE0, 0x81, 0x07, 0xC0, 0xC2, 0x03, + 0x80, 0xD7, 0x01, 0x00, 0xFB, 0x02, 0x00, 0x80, 0x7E, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, + 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, + 0x2C, 0x10, 0x00, 0x06, 0x00, 0x93, 0x54, 0x55, 0x05, 0xF8, 0xFF, 0x1F, 0x54, 0x55, 0x0F, 0x00, + 0x80, 0x07, 0x00, 0xD0, 0x02, 0x00, 0xE0, 0x01, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, + 0x8B, 0x1E, 0x00, 0x40, 0x0B, 0x00, 0xC0, 0x03, 0x00, 0xE0, 0x01, 0x00, 0xB4, 0x02, 0x00, 0x85, + 0xB8, 0xAA, 0x1A, 0xFC, 0xFF, 0x2F, 0x0F, 0x00, 0x81, 0x00, 0x55, 0x02, 0x00, 0x80, 0xFF, 0x02, + 0x00, 0x80, 0x5F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, + 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, + 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, + 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, + 0x00, 0x80, 0x5F, 0x02, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x06, 0x00, 0x80, 0x40, 0x02, 0x00, 0x8A, + 0xD0, 0x01, 0x00, 0xC0, 0x02, 0x00, 0x80, 0x03, 0x00, 0x40, 0x07, 0x02, 0x00, 0x80, 0x0B, 0x02, + 0x00, 0x80, 0x0E, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x74, 0x02, + 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xE0, 0x02, 0x00, 0x87, 0xD0, 0x01, 0x00, 0xC0, 0x02, 0x00, + 0x40, 0x07, 0x02, 0x00, 0x80, 0x0B, 0x02, 0x00, 0x80, 0x05, 0x09, 0x00, 0x81, 0x00, 0x55, 0x02, + 0x00, 0x80, 0xBF, 0x02, 0x00, 0x80, 0xB5, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, + 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, + 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, + 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, + 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB5, 0x02, 0x00, 0x80, 0xBF, 0x07, 0x00, 0x0A, 0x00, 0x80, + 0x3C, 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x8D, 0xEB, 0x00, 0x80, 0xC3, + 0x02, 0xC0, 0x82, 0x03, 0xD0, 0x41, 0x07, 0x50, 0x00, 0x05, 0x21, 0x00, 0x33, 0x00, 0x85, 0xF4, + 0xFF, 0x1F, 0x54, 0x55, 0x15, 0x09, 0x00, 0x07, 0x00, 0x80, 0x15, 0x02, 0x00, 0x80, 0x3C, 0x02, + 0x00, 0x80, 0xB4, 0x34, 0x00, 0x12, 0x00, 0xA2, 0x40, 0xAA, 0x01, 0xD0, 0xEB, 0x07, 0xF0, 0x40, + 0x0F, 0x50, 0x00, 0x0E, 0x00, 0x55, 0x0E, 0xD0, 0xFF, 0x0F, 0xF0, 0x01, 0x0E, 0x74, 0x00, 0x0E, + 0x74, 0x00, 0x0F, 0xF0, 0xE6, 0x1F, 0xD0, 0xBF, 0x1E, 0x00, 0x04, 0x0D, 0x00, 0x06, 0x00, 0x80, + 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0xA2, + 0xB4, 0xA9, 0x01, 0xF4, 0xEF, 0x07, 0xF4, 0x41, 0x0F, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x2D, 0xB4, + 0x00, 0x2D, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1E, 0xF4, 0x96, 0x0B, 0x74, 0xFE, + 0x02, 0x00, 0x10, 0x0D, 0x00, 0x13, 0x00, 0x8B, 0xA9, 0x01, 0xD0, 0xEB, 0x07, 0xF0, 0x01, 0x0F, + 0xB4, 0x00, 0x1D, 0x78, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x8D, 0x74, + 0x00, 0x04, 0xF0, 0x00, 0x1D, 0xD0, 0x96, 0x0B, 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x08, + 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0xA3, 0x1E, 0x40, + 0x6A, 0x1E, 0xD0, 0xEF, 0x1F, 0xF0, 0x41, 0x1F, 0xB4, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, + 0x1E, 0x78, 0x00, 0x1E, 0x74, 0x00, 0x1E, 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1E, + 0x00, 0x04, 0x0D, 0x00, 0x13, 0x00, 0x94, 0xA9, 0x01, 0xC0, 0xEB, 0x07, 0xE0, 0x01, 0x0F, 0xB4, + 0x00, 0x1D, 0x78, 0x55, 0x2D, 0xF8, 0xFF, 0x2F, 0x78, 0x55, 0x05, 0x78, 0x02, 0x00, 0x8A, 0xF0, + 0x00, 0x04, 0xD0, 0x57, 0x1F, 0x40, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, 0x04, 0x00, 0x89, 0x40, + 0x15, 0x00, 0xF4, 0x3F, 0x00, 0x7C, 0x10, 0x00, 0x1D, 0x02, 0x00, 0x89, 0x1E, 0x00, 0xA4, 0xAE, + 0x0A, 0xA4, 0xBF, 0x1A, 0x00, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, + 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, + 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x10, 0x00, 0x12, 0x00, 0xAC, 0x40, 0x6A, 0x09, 0xD0, 0xEF, + 0x1E, 0xF0, 0x41, 0x1F, 0xB4, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1E, + 0x74, 0x00, 0x1E, 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1E, 0x00, 0x04, 0x1E, 0x10, + 0x00, 0x0F, 0xF0, 0xD6, 0x07, 0x80, 0xFF, 0x01, 0x03, 0x00, 0x06, 0x00, 0x80, 0xB4, 0x02, 0x00, + 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0xA0, 0xB4, 0xA8, 0x01, + 0xB4, 0xEF, 0x0B, 0xF4, 0x01, 0x0F, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, + 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0x0F, 0x00, + 0x07, 0x00, 0x80, 0x10, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, 0x64, 0x04, 0x00, 0x84, 0xA0, + 0x6A, 0x00, 0xF0, 0x7F, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, + 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x87, 0x74, + 0x00, 0xA0, 0xBA, 0x1A, 0xF0, 0xFF, 0x2F, 0x0F, 0x00, 0x07, 0x00, 0x80, 0x40, 0x02, 0x00, 0x83, + 0xE0, 0x01, 0x00, 0x90, 0x04, 0x00, 0xAF, 0x80, 0xAA, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xE0, 0x01, + 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, + 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x00, 0x50, 0xB9, + 0x00, 0xF0, 0x2F, 0x00, 0x40, 0x01, 0x00, 0x06, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, + 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0xA0, 0xB4, 0x00, 0x0A, 0xB4, 0x80, 0x07, + 0xB4, 0xE0, 0x01, 0xB4, 0x78, 0x00, 0xB4, 0x1E, 0x00, 0xF4, 0x2F, 0x00, 0xF4, 0x79, 0x00, 0xB4, + 0xF0, 0x01, 0xB4, 0xD0, 0x03, 0xB4, 0x40, 0x0B, 0xB4, 0x00, 0x2E, 0x0F, 0x00, 0x06, 0x00, 0x84, + 0xF0, 0x7F, 0x00, 0xA0, 0x7A, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, + 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, + 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x87, + 0x74, 0x00, 0xA0, 0xBA, 0x1A, 0xF0, 0xFF, 0x2F, 0x0F, 0x00, 0x12, 0x00, 0xA0, 0x58, 0x4A, 0x0A, + 0xFC, 0xFF, 0x2E, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, + 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x0F, 0x00, + 0x12, 0x00, 0xA0, 0x64, 0xA8, 0x01, 0xB4, 0xEF, 0x0B, 0xF4, 0x01, 0x0F, 0xB4, 0x00, 0x1D, 0xB4, + 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, + 0x1D, 0xB4, 0x00, 0x1D, 0x0F, 0x00, 0x13, 0x00, 0xA1, 0xAA, 0x00, 0xD0, 0xEB, 0x07, 0xF0, 0x41, + 0x0F, 0x74, 0x00, 0x1D, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x78, 0x00, 0x2D, + 0xB4, 0x00, 0x1E, 0xE0, 0x96, 0x0B, 0x80, 0xFF, 0x02, 0x00, 0x14, 0x0D, 0x00, 0x12, 0x00, 0xA4, + 0x64, 0xA9, 0x01, 0xB4, 0xFB, 0x07, 0xF4, 0x41, 0x0F, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x2D, 0xB4, + 0x00, 0x2D, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x0F, 0xF4, 0x96, 0x0B, 0xB4, 0xFE, + 0x02, 0xB4, 0x10, 0x00, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x05, 0x00, 0x12, + 0x00, 0xA3, 0x40, 0x6A, 0x09, 0xD0, 0xEB, 0x1F, 0xF0, 0x01, 0x1F, 0xB4, 0x00, 0x1E, 0x78, 0x00, + 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x74, 0x00, 0x1E, 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, + 0x80, 0xBF, 0x1E, 0x00, 0x04, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, + 0x80, 0x1E, 0x03, 0x00, 0x12, 0x00, 0x9F, 0x40, 0x92, 0x1A, 0x80, 0xF7, 0x1F, 0x80, 0x1F, 0x00, + 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, + 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x10, 0x00, 0x13, 0x00, 0xA1, 0xA9, 0x01, 0xD0, 0xEB, + 0x0B, 0xE0, 0x01, 0x1E, 0xF0, 0x00, 0x19, 0xE0, 0x06, 0x00, 0x80, 0xBF, 0x01, 0x00, 0xA4, 0x0F, + 0x10, 0x00, 0x1E, 0xB4, 0x00, 0x1D, 0xE0, 0x56, 0x0F, 0x80, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, + 0x0D, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x89, 0x0F, 0x00, 0xA4, 0xAF, 0x0A, 0xA8, 0xAF, 0x0A, 0x00, + 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, + 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0E, 0x02, 0x00, 0x86, 0x6D, 0x09, 0x00, 0xF8, + 0x1F, 0x00, 0x40, 0x0D, 0x00, 0x12, 0x00, 0xA2, 0x60, 0x00, 0x19, 0xB4, 0x00, 0x1E, 0xB4, 0x00, + 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, + 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1D, 0x00, 0x04, 0x0D, 0x00, 0x12, 0x00, 0x96, + 0x28, 0x00, 0x18, 0x78, 0x00, 0x2D, 0xB4, 0x00, 0x0E, 0xE0, 0x00, 0x0B, 0xD0, 0x41, 0x07, 0xC0, + 0x82, 0x03, 0x80, 0xC3, 0x02, 0x00, 0xDB, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x80, 0x7D, 0x02, + 0x00, 0x80, 0x3C, 0x10, 0x00, 0x12, 0x00, 0xA0, 0x09, 0x14, 0x60, 0x1D, 0x38, 0x70, 0x1C, 0x3C, + 0x74, 0x2C, 0x7D, 0x38, 0x28, 0xAA, 0x28, 0x34, 0xDA, 0x2C, 0x74, 0xD7, 0x1D, 0xB0, 0xC3, 0x0E, + 0xE0, 0x82, 0x0F, 0xE0, 0x42, 0x0B, 0xD0, 0x41, 0x07, 0x0F, 0x00, 0x12, 0x00, 0x8D, 0x64, 0x00, + 0x19, 0xF0, 0x00, 0x1F, 0xD0, 0x82, 0x07, 0x80, 0xD7, 0x02, 0x00, 0xFE, 0x02, 0x00, 0x80, 0x7C, + 0x02, 0x00, 0x8D, 0xBE, 0x00, 0x40, 0xEB, 0x01, 0xC0, 0x83, 0x07, 0xE0, 0x01, 0x0F, 0xB8, 0x00, + 0x2D, 0x0F, 0x00, 0x12, 0x00, 0x99, 0x18, 0x00, 0x24, 0x3C, 0x00, 0x2C, 0xB4, 0x00, 0x1E, 0xF0, + 0x00, 0x0F, 0xD0, 0x41, 0x0B, 0xC0, 0x83, 0x03, 0x80, 0xC7, 0x02, 0x00, 0xEB, 0x01, 0x00, 0xBE, + 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x88, 0x0F, + 0x00, 0x90, 0x07, 0x00, 0xF4, 0x02, 0x00, 0x10, 0x02, 0x00, 0x12, 0x00, 0x8D, 0xA4, 0xAA, 0x0A, + 0xF4, 0xFF, 0x1F, 0x00, 0x80, 0x0B, 0x00, 0xD0, 0x02, 0x00, 0xF4, 0x02, 0x00, 0x80, 0x7C, 0x02, + 0x00, 0x8D, 0x1E, 0x00, 0x80, 0x0B, 0x00, 0xD0, 0x02, 0x00, 0xF4, 0x56, 0x15, 0xF4, 0xFF, 0x2F, + 0x0F, 0x00, 0x05, 0x00, 0x85, 0x05, 0x00, 0xC0, 0x07, 0x00, 0xE0, 0x02, 0x00, 0x80, 0xB0, 0x02, + 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB4, 0x02, + 0x00, 0x86, 0x78, 0x00, 0x80, 0x1F, 0x00, 0x80, 0x1F, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, + 0xB4, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, + 0xF0, 0x02, 0x00, 0x84, 0xE0, 0x01, 0x00, 0x80, 0x07, 0x02, 0x00, 0x80, 0x05, 0x03, 0x00, 0x0A, + 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, + 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, + 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, + 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, + 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x04, 0x00, 0x03, 0x00, 0x84, 0x40, 0x01, 0x00, 0x40, + 0x0B, 0x02, 0x00, 0x80, 0x2D, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, + 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x86, + 0xD0, 0x0B, 0x00, 0xD0, 0x0B, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, + 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x86, 0x1D, 0x00, + 0x40, 0x0B, 0x00, 0x40, 0x01, 0x04, 0x00, 0x1B, 0x00, 0x8B, 0xA0, 0x06, 0x10, 0xBC, 0x1F, 0x70, + 0x0D, 0xB8, 0x3E, 0x05, 0xD0, 0x1F, 0x1B, 0x00, +}; +// clang-format on diff --git a/keyboards/dasky/reverb/graphics/robotomono20.qff.h b/keyboards/dasky/reverb/graphics/robotomono20.qff.h new file mode 100644 index 000000000000..63b828340426 --- /dev/null +++ b/keyboards/dasky/reverb/graphics/robotomono20.qff.h @@ -0,0 +1,11 @@ +// Copyright 2023 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image -i robotomono20.png -f mono4` + +#pragma once + +#include + +extern const uint32_t font_robotomono20_length; +extern const uint8_t font_robotomono20[4904]; diff --git a/keyboards/dasky/reverb/graphics/splash.qgf.c b/keyboards/dasky/reverb/graphics/splash.qgf.c new file mode 100644 index 000000000000..dd239e40fa6e --- /dev/null +++ b/keyboards/dasky/reverb/graphics/splash.qgf.c @@ -0,0 +1,2265 @@ +// Copyright 2023 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics -i splash.png -f pal256` + +#include + +const uint32_t gfx_splash_length = 36030; + +// clang-format off +const uint8_t gfx_splash[36030] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xBE, 0x8C, 0x00, 0x00, 0x41, 0x73, 0xFF, + 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x07, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x03, 0xFC, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xFF, 0x2A, 0xEB, 0xFF, 0x37, 0x25, 0xFF, 0x2A, 0xFF, 0xFF, 0x2C, 0xFF, 0xFF, 0x2D, + 0xFF, 0xFF, 0x2E, 0xFF, 0xFF, 0x2F, 0xFF, 0xFF, 0x30, 0xFF, 0xFF, 0x31, 0xFF, 0xFF, 0x32, 0xFF, + 0xFF, 0x38, 0xEE, 0xFF, 0x33, 0xFF, 0xFF, 0x34, 0xFF, 0xFF, 0x35, 0xFF, 0xFF, 0x36, 0xFF, 0xFF, + 0x37, 0xFF, 0xFF, 0x38, 0xFF, 0xFF, 0x3A, 0xFF, 0xFF, 0x3A, 0xFF, 0xFF, 0x00, 0x02, 0xFD, 0x94, + 0x02, 0xF7, 0xD9, 0x09, 0xF7, 0x00, 0x00, 0xE7, 0x29, 0xFF, 0xFF, 0x28, 0xFF, 0xFF, 0x27, 0xFF, + 0xFF, 0x26, 0xFF, 0xFF, 0x00, 0x00, 0xD9, 0x23, 0x1E, 0xCB, 0x24, 0xFF, 0xFF, 0x23, 0xFF, 0xFF, + 0x21, 0xFF, 0xFF, 0x20, 0xFF, 0xFF, 0x43, 0xEA, 0xFF, 0x3C, 0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0x3E, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x41, 0xFF, 0xFF, 0x42, 0xFF, 0xFF, 0x43, 0xFF, 0xFF, 0x44, 0xFF, + 0xFF, 0x45, 0xFF, 0xFF, 0x46, 0xFF, 0xFF, 0x47, 0xFF, 0xFF, 0x48, 0xFF, 0xFF, 0x49, 0xFF, 0xFF, + 0x4A, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0x4B, 0xFF, 0xFF, 0x90, 0x8B, 0xFF, 0x63, 0xF8, 0xFF, 0x4C, + 0xFF, 0xFF, 0x4D, 0xFF, 0xFF, 0x4D, 0xFF, 0xFF, 0x4E, 0xFF, 0xFF, 0x4E, 0xFF, 0xFF, 0x4F, 0xFF, + 0xFF, 0x4F, 0xFF, 0xFF, 0x50, 0xFF, 0xFF, 0x50, 0xFF, 0xFF, 0x51, 0xFF, 0xFF, 0x51, 0xFF, 0xFF, + 0x52, 0xFF, 0xFF, 0x53, 0xFF, 0xFF, 0x53, 0xFF, 0xFF, 0x54, 0xFF, 0xFF, 0x85, 0xFE, 0xFF, 0x7D, + 0xFF, 0xFF, 0x7A, 0xFF, 0xFF, 0x78, 0xFF, 0xFF, 0x76, 0xFF, 0xFF, 0x75, 0xFF, 0xFF, 0x73, 0xFF, + 0xFF, 0x72, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x6F, 0xFF, 0xFF, 0x6E, 0xFF, 0xFF, 0x6C, 0xFF, 0xFF, + 0x6B, 0xFF, 0xFF, 0x6A, 0xFF, 0xFF, 0x68, 0xFF, 0xFF, 0x67, 0xFF, 0xFF, 0x66, 0xFF, 0xFF, 0x65, + 0xFF, 0xFF, 0x63, 0xFF, 0xFF, 0x62, 0xFF, 0xFF, 0x61, 0xFF, 0xFF, 0x60, 0xFF, 0xFF, 0x5F, 0xFF, + 0xFF, 0x5E, 0xFF, 0xFF, 0x5D, 0xFF, 0xFF, 0x5C, 0xFF, 0xFF, 0x5A, 0xFF, 0xFF, 0x5A, 0xFF, 0xFF, + 0x59, 0xFF, 0xFF, 0x57, 0xFF, 0xFF, 0x56, 0xFF, 0xFF, 0x56, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x85, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x88, 0xFF, 0xFF, 0x89, 0xFF, + 0xFF, 0x8A, 0xFF, 0xFF, 0x1E, 0xFF, 0xFF, 0x1D, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, 0x1C, 0xFF, 0xFF, + 0x18, 0xE9, 0xFF, 0x1B, 0xFF, 0xFF, 0x1A, 0xFF, 0xFF, 0x19, 0xFF, 0xFF, 0x18, 0xFF, 0xFF, 0x00, + 0x00, 0xB4, 0x00, 0x00, 0x9E, 0x17, 0xFF, 0xFF, 0x16, 0xFF, 0xFF, 0x13, 0xF4, 0xFF, 0x15, 0xFF, + 0xFF, 0x14, 0xFF, 0xFF, 0x10, 0xF2, 0xFF, 0x13, 0xFF, 0xFF, 0x12, 0xFF, 0xFF, 0x11, 0xFF, 0xFF, + 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x8C, 0x8B, 0xFF, 0xFF, 0x8C, 0xFF, 0xFF, 0x8D, 0xFF, 0xFF, 0x8E, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x90, 0xFF, 0xFF, 0x91, 0xFF, 0xFF, 0x92, 0xFF, 0xFF, 0x95, 0x44, + 0x89, 0x93, 0xFF, 0xFF, 0x94, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0x95, 0xFF, 0xFF, 0x96, 0xFF, 0xFF, + 0x97, 0xFF, 0xFF, 0x98, 0xFF, 0xFF, 0x99, 0xFF, 0xFF, 0x0D, 0xF4, 0xFF, 0x0F, 0xFF, 0xFF, 0x0E, + 0xFF, 0xFF, 0x0D, 0xFF, 0xFF, 0x0C, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0x0A, 0xFF, 0xFF, 0x0A, 0xFF, + 0xFF, 0x09, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE5, 0xFD, 0xFF, 0x05, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xC6, 0xCD, 0xB8, 0xB1, 0x27, 0x47, 0x00, 0x00, 0x33, 0x9A, 0xFF, 0xFF, 0x9B, 0xFF, 0xFF, 0x9C, + 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0x9E, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xA1, 0xFF, + 0xFF, 0x00, 0x00, 0x32, 0xA2, 0xFF, 0xFF, 0xA3, 0xFF, 0xFF, 0xA4, 0xFF, 0xFF, 0xA5, 0xFF, 0xFF, + 0xAC, 0xFC, 0xFF, 0xA6, 0xFF, 0xFF, 0xA7, 0xFF, 0xFF, 0xA8, 0xFF, 0xFF, 0xA9, 0xFF, 0xFF, 0xD4, + 0xFF, 0xFF, 0xD5, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xD6, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xD8, 0xFF, + 0xFF, 0xD8, 0xFF, 0xFF, 0xD9, 0xFF, 0xFF, 0xDA, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 0xDC, 0xFF, 0xFF, + 0xDC, 0xFF, 0xFF, 0xDD, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xD4, 0xFF, 0xFF, 0xD3, 0xFF, 0xFF, 0xD2, + 0xFF, 0xFF, 0xD1, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xD0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xCE, 0xFF, + 0xFF, 0xDF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xE2, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xE4, 0xFF, 0xFF, + 0xE6, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0xEA, 0xFF, 0xFF, 0xEC, 0xFF, 0xFF, 0xED, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFD, 0xFF, + 0xFF, 0xCE, 0xFF, 0xFF, 0xCD, 0xFF, 0xFF, 0xCD, 0xFF, 0xFF, 0xCC, 0xFF, 0xFF, 0xCB, 0xFF, 0xFF, + 0xCB, 0xFF, 0xFF, 0xCA, 0xFF, 0xFF, 0xC9, 0xFF, 0xFF, 0xC9, 0xFF, 0xFF, 0xC8, 0xFF, 0xFF, 0xC7, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xC6, 0xFF, 0xFF, 0xC6, 0xFF, 0xFF, 0xC5, 0xFF, 0xFF, 0xC4, 0xFF, + 0xFF, 0xC4, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC2, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xBF, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0xBD, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB8, + 0xFF, 0xFF, 0xB7, 0xFF, 0xFF, 0xB6, 0xFF, 0xFF, 0xB4, 0xFF, 0xFF, 0xB3, 0xFF, 0xFF, 0xB1, 0xFF, + 0xFF, 0xB0, 0xFF, 0xFF, 0xAE, 0xFF, 0xFF, 0xAD, 0xFF, 0xFF, 0xAB, 0xFF, 0xFF, 0xAA, 0xFF, 0xFF, + 0x05, 0xFA, 0x89, 0x89, 0x00, 0x02, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, + 0x96, 0x03, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x03, + 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x03, + 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x04, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x04, 0x1E, 0x03, 0x1B, 0x03, + 0x1A, 0x03, 0x19, 0x02, 0x18, 0x03, 0x03, 0x03, 0x04, 0x02, 0x05, 0x02, 0x06, 0x03, 0x07, 0x02, + 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x03, 0x0F, 0x02, 0x10, 0x04, + 0x11, 0x03, 0x12, 0x03, 0x13, 0x04, 0x23, 0x03, 0x24, 0x03, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, + 0x28, 0x04, 0x29, 0x05, 0x2A, 0x05, 0x2B, 0x05, 0x2C, 0x05, 0x2D, 0x05, 0x2E, 0x08, 0x2F, 0x06, + 0x30, 0x0A, 0x31, 0x0C, 0x32, 0x02, 0x35, 0x02, 0x32, 0x81, 0x35, 0x32, 0x02, 0x35, 0x0F, 0x32, + 0x09, 0x31, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, + 0x03, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, + 0x03, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, + 0x03, 0x6C, 0x03, 0x21, 0x04, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x04, 0x1B, 0x02, 0x1A, 0x03, 0x19, + 0x03, 0x18, 0x02, 0x03, 0x03, 0x04, 0x03, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, + 0x03, 0x0A, 0x03, 0x0C, 0x03, 0x0D, 0x02, 0x0E, 0x03, 0x0F, 0x03, 0x10, 0x03, 0x11, 0x03, 0x12, + 0x03, 0x13, 0x03, 0x23, 0x04, 0x24, 0x03, 0x25, 0x04, 0x26, 0x04, 0x27, 0x04, 0x28, 0x04, 0x29, + 0x04, 0x2A, 0x05, 0x2B, 0x05, 0x2C, 0x05, 0x2D, 0x05, 0x2E, 0x05, 0x2F, 0x08, 0x30, 0x06, 0x31, + 0x07, 0x32, 0x21, 0x35, 0x08, 0x32, 0x03, 0x31, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, + 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x03, 0x94, 0x80, 0x80, 0x03, 0x7F, 0x02, 0x7E, 0x02, 0x7D, + 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, + 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x04, 0x21, 0x03, 0x20, 0x04, 0x1F, 0x03, 0x1E, + 0x03, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x04, 0x18, 0x02, 0x03, 0x02, 0x04, 0x03, 0x05, 0x02, 0x06, + 0x03, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x02, 0x0F, + 0x03, 0x10, 0x03, 0x11, 0x03, 0x12, 0x03, 0x13, 0x04, 0x23, 0x03, 0x24, 0x03, 0x25, 0x04, 0x26, + 0x04, 0x27, 0x03, 0x28, 0x04, 0x29, 0x05, 0x2A, 0x05, 0x2B, 0x04, 0x2C, 0x04, 0x2D, 0x05, 0x2E, + 0x05, 0x2F, 0x06, 0x30, 0x07, 0x31, 0x05, 0x32, 0x0A, 0x35, 0x02, 0x36, 0x80, 0x35, 0x16, 0x36, + 0x0C, 0x35, 0x03, 0x32, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, + 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x03, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x03, 0x7A, + 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, + 0x02, 0x6D, 0x02, 0x6C, 0x04, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x04, 0x1E, 0x03, 0x1B, 0x02, 0x1A, + 0x03, 0x19, 0x03, 0x18, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, + 0x02, 0x09, 0x03, 0x0A, 0x02, 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x03, 0x0F, 0x02, 0x10, 0x03, 0x11, + 0x03, 0x12, 0x03, 0x13, 0x04, 0x23, 0x03, 0x24, 0x03, 0x25, 0x04, 0x26, 0x03, 0x27, 0x04, 0x28, + 0x04, 0x29, 0x04, 0x2A, 0x05, 0x2B, 0x04, 0x2C, 0x05, 0x2D, 0x03, 0x2E, 0x06, 0x2F, 0x06, 0x30, + 0x05, 0x31, 0x04, 0x32, 0x06, 0x35, 0x80, 0x36, 0x02, 0x35, 0x06, 0x36, 0x81, 0x37, 0x36, 0x14, + 0x37, 0x81, 0x36, 0x37, 0x0A, 0x36, 0x06, 0x35, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, + 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, + 0x02, 0x7B, 0x03, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, + 0x02, 0x6F, 0x03, 0x6E, 0x80, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x04, 0x20, 0x03, 0x1F, 0x04, 0x1E, + 0x02, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x04, 0x18, 0x02, 0x03, 0x02, 0x04, 0x03, 0x05, 0x03, 0x06, + 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x03, 0x0D, 0x02, 0x0E, 0x03, 0x0F, + 0x03, 0x10, 0x03, 0x11, 0x02, 0x12, 0x03, 0x13, 0x04, 0x23, 0x03, 0x24, 0x03, 0x25, 0x03, 0x26, + 0x04, 0x27, 0x04, 0x28, 0x03, 0x29, 0x05, 0x2A, 0x04, 0x2B, 0x04, 0x2C, 0x04, 0x2D, 0x04, 0x2E, + 0x05, 0x2F, 0x05, 0x30, 0x05, 0x31, 0x04, 0x32, 0x06, 0x35, 0x07, 0x36, 0x0C, 0x37, 0x80, 0x38, + 0x02, 0x37, 0x80, 0x38, 0x15, 0x37, 0x08, 0x36, 0x80, 0x35, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, + 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, + 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x03, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x04, 0x1F, + 0x03, 0x1E, 0x03, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, + 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x03, 0x0A, 0x02, 0x0C, 0x03, 0x0D, 0x03, 0x0E, + 0x02, 0x0F, 0x03, 0x10, 0x03, 0x11, 0x03, 0x12, 0x02, 0x13, 0x04, 0x23, 0x03, 0x24, 0x03, 0x25, + 0x03, 0x26, 0x04, 0x27, 0x03, 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, 0x2C, 0x05, 0x2D, + 0x03, 0x2E, 0x06, 0x2F, 0x03, 0x30, 0x05, 0x31, 0x03, 0x32, 0x06, 0x35, 0x05, 0x36, 0x09, 0x37, + 0x09, 0x38, 0x83, 0x39, 0x38, 0x39, 0x38, 0x03, 0x39, 0x02, 0x38, 0x02, 0x39, 0x02, 0x38, 0x80, + 0x39, 0x05, 0x38, 0x83, 0x37, 0x38, 0x37, 0x38, 0x09, 0x37, 0x02, 0x36, 0x80, 0x9B, 0x02, 0x9A, + 0x03, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, + 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x03, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, + 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, + 0x04, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, 0x03, 0x03, 0x04, + 0x02, 0x05, 0x02, 0x06, 0x03, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x02, 0x0D, + 0x03, 0x0E, 0x02, 0x0F, 0x03, 0x10, 0x03, 0x11, 0x03, 0x12, 0x02, 0x13, 0x04, 0x23, 0x03, 0x24, + 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x04, 0x28, 0x04, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x03, 0x2C, + 0x05, 0x2D, 0x03, 0x2E, 0x05, 0x2F, 0x04, 0x30, 0x04, 0x31, 0x03, 0x32, 0x04, 0x35, 0x05, 0x36, + 0x07, 0x37, 0x05, 0x38, 0x22, 0x39, 0x05, 0x38, 0x06, 0x37, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, + 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x03, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, + 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, + 0x03, 0x1E, 0x03, 0x1B, 0x03, 0x1A, 0x03, 0x19, 0x03, 0x18, 0x02, 0x03, 0x02, 0x04, 0x03, 0x05, + 0x80, 0x06, 0x03, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x03, 0x0D, 0x02, 0x0E, + 0x03, 0x0F, 0x03, 0x10, 0x02, 0x11, 0x03, 0x12, 0x02, 0x13, 0x04, 0x23, 0x03, 0x24, 0x03, 0x25, + 0x03, 0x26, 0x04, 0x27, 0x03, 0x28, 0x03, 0x29, 0x04, 0x2A, 0x04, 0x2B, 0x04, 0x2C, 0x03, 0x2D, + 0x04, 0x2E, 0x04, 0x2F, 0x05, 0x30, 0x04, 0x31, 0x03, 0x32, 0x04, 0x35, 0x03, 0x36, 0x05, 0x37, + 0x06, 0x38, 0x09, 0x39, 0x19, 0x3A, 0x0A, 0x39, 0x06, 0x38, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, + 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x02, 0x94, 0x03, 0x80, 0x02, 0x7F, 0x02, 0x7E, + 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x80, 0x73, 0x03, 0x72, + 0x02, 0x71, 0x80, 0x6F, 0x03, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x04, 0x20, 0x03, 0x1F, + 0x03, 0x1E, 0x03, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x03, 0x03, 0x02, 0x04, 0x02, 0x05, + 0x02, 0x06, 0x03, 0x07, 0x02, 0x08, 0x80, 0x09, 0x03, 0x0A, 0x03, 0x0C, 0x02, 0x0D, 0x03, 0x0E, + 0x02, 0x0F, 0x03, 0x10, 0x03, 0x11, 0x02, 0x12, 0x03, 0x13, 0x03, 0x23, 0x03, 0x24, 0x03, 0x25, + 0x03, 0x26, 0x04, 0x27, 0x03, 0x28, 0x04, 0x29, 0x03, 0x2A, 0x04, 0x2B, 0x04, 0x2C, 0x03, 0x2D, + 0x03, 0x2E, 0x04, 0x2F, 0x04, 0x30, 0x04, 0x31, 0x02, 0x32, 0x04, 0x35, 0x04, 0x36, 0x05, 0x37, + 0x03, 0x38, 0x07, 0x39, 0x09, 0x3A, 0x81, 0x3B, 0x3A, 0x15, 0x3B, 0x09, 0x3A, 0x08, 0x39, 0x80, + 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x03, 0x94, 0x80, + 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, + 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x03, 0x6E, 0x80, 0x6D, 0x03, 0x6C, 0x03, + 0x21, 0x04, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x03, 0x18, 0x02, + 0x03, 0x02, 0x04, 0x03, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, + 0x0C, 0x02, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x03, 0x10, 0x03, 0x11, 0x02, 0x12, 0x03, 0x13, 0x03, + 0x23, 0x03, 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x04, 0x28, 0x03, 0x29, 0x04, 0x2A, 0x04, + 0x2B, 0x03, 0x2C, 0x04, 0x2D, 0x02, 0x2E, 0x04, 0x2F, 0x05, 0x30, 0x03, 0x31, 0x02, 0x32, 0x04, + 0x35, 0x02, 0x36, 0x06, 0x37, 0x02, 0x38, 0x05, 0x39, 0x07, 0x3A, 0x0E, 0x3B, 0x80, 0x3C, 0x17, + 0x3B, 0x81, 0x3A, 0x3B, 0x06, 0x3A, 0x02, 0x39, 0x80, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x02, 0x98, + 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x03, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, + 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, + 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, + 0x03, 0x1B, 0x03, 0x1A, 0x03, 0x19, 0x02, 0x18, 0x03, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, + 0x03, 0x07, 0x80, 0x08, 0x03, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x02, 0x0F, + 0x02, 0x10, 0x03, 0x11, 0x03, 0x12, 0x03, 0x13, 0x03, 0x23, 0x02, 0x24, 0x03, 0x25, 0x04, 0x26, + 0x02, 0x27, 0x04, 0x28, 0x03, 0x29, 0x04, 0x2A, 0x03, 0x2B, 0x03, 0x2C, 0x04, 0x2D, 0x03, 0x2E, + 0x04, 0x2F, 0x03, 0x30, 0x04, 0x31, 0x02, 0x32, 0x04, 0x35, 0x02, 0x36, 0x05, 0x37, 0x80, 0x38, + 0x06, 0x39, 0x03, 0x3A, 0x0A, 0x3B, 0x10, 0x3C, 0x80, 0x3D, 0x0E, 0x3C, 0x0A, 0x3B, 0x04, 0x3A, + 0x80, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x02, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x03, 0x94, + 0x80, 0x80, 0x03, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x03, 0x7A, 0x02, 0x78, 0x02, 0x77, + 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, + 0x04, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x03, 0x18, + 0x02, 0x03, 0x03, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, + 0x03, 0x0C, 0x02, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x03, 0x10, 0x02, 0x11, 0x03, 0x12, 0x03, 0x13, + 0x03, 0x23, 0x03, 0x24, 0x02, 0x25, 0x03, 0x26, 0x03, 0x27, 0x04, 0x28, 0x03, 0x29, 0x03, 0x2A, + 0x04, 0x2B, 0x03, 0x2C, 0x04, 0x2D, 0x02, 0x2E, 0x04, 0x2F, 0x03, 0x30, 0x03, 0x31, 0x03, 0x32, + 0x02, 0x35, 0x03, 0x36, 0x04, 0x37, 0x02, 0x38, 0x05, 0x39, 0x04, 0x3A, 0x06, 0x3B, 0x07, 0x3C, + 0x1E, 0x3D, 0x08, 0x3C, 0x07, 0x3B, 0x80, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, + 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, + 0x03, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, + 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x04, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, + 0x02, 0x1A, 0x03, 0x19, 0x03, 0x18, 0x02, 0x03, 0x02, 0x04, 0x03, 0x05, 0x80, 0x06, 0x03, 0x07, + 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x02, 0x10, + 0x03, 0x11, 0x03, 0x12, 0x02, 0x13, 0x03, 0x23, 0x03, 0x24, 0x03, 0x25, 0x03, 0x26, 0x02, 0x27, + 0x04, 0x28, 0x03, 0x29, 0x03, 0x2A, 0x04, 0x2B, 0x02, 0x2C, 0x04, 0x2D, 0x03, 0x2E, 0x03, 0x2F, + 0x04, 0x30, 0x03, 0x31, 0x80, 0x32, 0x03, 0x35, 0x03, 0x36, 0x04, 0x37, 0x80, 0x38, 0x04, 0x39, + 0x04, 0x3A, 0x05, 0x3B, 0x06, 0x3C, 0x08, 0x3D, 0x1B, 0x3E, 0x09, 0x3D, 0x05, 0x3C, 0x02, 0x3B, + 0x80, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x02, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, + 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x03, 0x7A, 0x02, 0x78, 0x02, 0x77, + 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, + 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x04, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x03, 0x19, 0x02, 0x18, + 0x03, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x03, 0x0A, + 0x02, 0x0C, 0x02, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x03, 0x10, 0x02, 0x11, 0x03, 0x12, 0x02, 0x13, + 0x03, 0x23, 0x03, 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x02, 0x28, 0x04, 0x29, 0x03, 0x2A, + 0x04, 0x2B, 0x02, 0x2C, 0x04, 0x2D, 0x02, 0x2E, 0x04, 0x2F, 0x03, 0x30, 0x02, 0x31, 0x03, 0x32, + 0x03, 0x35, 0x80, 0x36, 0x04, 0x37, 0x02, 0x38, 0x03, 0x39, 0x04, 0x3A, 0x04, 0x3B, 0x05, 0x3C, + 0x06, 0x3D, 0x08, 0x3E, 0x18, 0x3F, 0x09, 0x3E, 0x06, 0x3D, 0x03, 0x3C, 0x80, 0x9B, 0x02, 0x9A, + 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x03, 0x7F, + 0x80, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x02, 0x73, + 0x80, 0x72, 0x03, 0x71, 0x80, 0x6F, 0x03, 0x6E, 0x80, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, + 0x04, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, 0x03, 0x03, 0x04, + 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x02, 0x0D, + 0x03, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x03, 0x11, 0x02, 0x12, 0x03, 0x13, 0x03, 0x23, 0x02, 0x24, + 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x03, 0x2C, + 0x03, 0x2D, 0x03, 0x2E, 0x03, 0x2F, 0x03, 0x30, 0x03, 0x31, 0x02, 0x32, 0x02, 0x35, 0x03, 0x36, + 0x02, 0x37, 0x02, 0x38, 0x04, 0x39, 0x02, 0x3A, 0x05, 0x3B, 0x04, 0x3C, 0x05, 0x3D, 0x04, 0x3E, + 0x0E, 0x3F, 0x0B, 0x40, 0x83, 0x3F, 0x40, 0x3F, 0x40, 0x0C, 0x3F, 0x06, 0x3E, 0x04, 0x3D, 0x80, + 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, + 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, + 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x03, + 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, + 0x03, 0x02, 0x04, 0x03, 0x05, 0x80, 0x06, 0x03, 0x07, 0x02, 0x08, 0x80, 0x09, 0x03, 0x0A, 0x02, + 0x0C, 0x02, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x03, 0x10, 0x02, 0x11, 0x03, 0x12, 0x02, 0x13, 0x03, + 0x23, 0x02, 0x24, 0x03, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, + 0x2B, 0x03, 0x2C, 0x03, 0x2D, 0x02, 0x2E, 0x04, 0x2F, 0x03, 0x30, 0x02, 0x31, 0x02, 0x32, 0x03, + 0x35, 0x02, 0x36, 0x03, 0x37, 0x02, 0x38, 0x02, 0x39, 0x04, 0x3A, 0x04, 0x3B, 0x02, 0x3C, 0x04, + 0x3D, 0x05, 0x3E, 0x08, 0x3F, 0x0A, 0x40, 0x80, 0x41, 0x03, 0x40, 0x81, 0x41, 0x40, 0x05, 0x41, + 0x0C, 0x40, 0x0A, 0x3F, 0x04, 0x3E, 0x80, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x03, 0x98, 0x80, 0x97, + 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, + 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, + 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, + 0x02, 0x1A, 0x03, 0x19, 0x03, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, + 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x03, 0x0F, 0x02, 0x10, + 0x03, 0x11, 0x02, 0x12, 0x02, 0x13, 0x03, 0x23, 0x03, 0x24, 0x03, 0x25, 0x02, 0x26, 0x03, 0x27, + 0x03, 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x03, 0x2C, 0x02, 0x2D, 0x03, 0x2E, 0x03, 0x2F, + 0x03, 0x30, 0x03, 0x31, 0x02, 0x32, 0x02, 0x35, 0x02, 0x36, 0x03, 0x37, 0x80, 0x38, 0x03, 0x39, + 0x03, 0x3A, 0x03, 0x3B, 0x03, 0x3C, 0x04, 0x3D, 0x03, 0x3E, 0x07, 0x3F, 0x05, 0x40, 0x81, 0x41, + 0x40, 0x1F, 0x41, 0x08, 0x40, 0x06, 0x3F, 0x81, 0x3E, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, + 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, + 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, + 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x04, 0x20, 0x03, 0x1F, 0x03, 0x1E, + 0x03, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, 0x03, 0x03, 0x04, 0x02, 0x05, 0x02, 0x06, + 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x03, 0x0D, 0x02, 0x0E, 0x02, 0x0F, + 0x02, 0x10, 0x03, 0x11, 0x02, 0x12, 0x03, 0x13, 0x03, 0x23, 0x02, 0x24, 0x03, 0x25, 0x02, 0x26, + 0x03, 0x27, 0x03, 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x04, 0x2D, 0x02, 0x2E, + 0x03, 0x2F, 0x03, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x35, 0x02, 0x36, 0x03, 0x37, 0x80, 0x38, + 0x03, 0x39, 0x02, 0x3A, 0x04, 0x3B, 0x03, 0x3C, 0x03, 0x3D, 0x02, 0x3E, 0x06, 0x3F, 0x05, 0x40, + 0x0A, 0x41, 0x19, 0x42, 0x0A, 0x41, 0x05, 0x40, 0x03, 0x3F, 0x80, 0x9B, 0x02, 0x9A, 0x02, 0x99, + 0x03, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, + 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x04, 0x20, 0x03, 0x1F, + 0x03, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, + 0x02, 0x06, 0x03, 0x07, 0x80, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x02, 0x0D, 0x03, 0x0E, + 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x03, 0x12, 0x02, 0x13, 0x03, 0x23, 0x02, 0x24, 0x03, 0x25, + 0x03, 0x26, 0x02, 0x27, 0x03, 0x28, 0x03, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x03, 0x2C, 0x02, 0x2D, + 0x03, 0x2E, 0x03, 0x2F, 0x03, 0x30, 0x80, 0x31, 0x02, 0x32, 0x02, 0x35, 0x03, 0x36, 0x02, 0x37, + 0x80, 0x38, 0x03, 0x39, 0x02, 0x3A, 0x03, 0x3B, 0x03, 0x3C, 0x03, 0x3D, 0x02, 0x3E, 0x05, 0x3F, + 0x05, 0x40, 0x07, 0x41, 0x06, 0x42, 0x81, 0x43, 0x42, 0x16, 0x43, 0x08, 0x42, 0x08, 0x41, 0x04, + 0x40, 0x80, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x03, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, + 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, + 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, + 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x04, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x03, + 0x18, 0x02, 0x03, 0x02, 0x04, 0x03, 0x05, 0x80, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, + 0x0A, 0x02, 0x0C, 0x03, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x03, 0x11, 0x02, 0x12, 0x02, + 0x13, 0x03, 0x23, 0x03, 0x24, 0x02, 0x25, 0x03, 0x26, 0x03, 0x27, 0x03, 0x28, 0x02, 0x29, 0x03, + 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x03, 0x2D, 0x03, 0x2E, 0x02, 0x2F, 0x03, 0x30, 0x02, 0x31, 0x02, + 0x32, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x03, 0x3B, 0x03, + 0x3C, 0x02, 0x3D, 0x02, 0x3E, 0x05, 0x3F, 0x03, 0x40, 0x06, 0x41, 0x06, 0x42, 0x25, 0x43, 0x07, + 0x42, 0x06, 0x41, 0x80, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, + 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, + 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, + 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x04, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, + 0x19, 0x02, 0x18, 0x03, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, + 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x03, + 0x12, 0x02, 0x13, 0x03, 0x23, 0x02, 0x24, 0x03, 0x25, 0x02, 0x26, 0x03, 0x27, 0x03, 0x28, 0x02, + 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x03, 0x2D, 0x02, 0x2E, 0x03, 0x2F, 0x03, 0x30, 0x02, + 0x31, 0x80, 0x32, 0x03, 0x35, 0x80, 0x36, 0x03, 0x37, 0x80, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x03, + 0x3B, 0x02, 0x3C, 0x02, 0x3D, 0x03, 0x3E, 0x04, 0x3F, 0x03, 0x40, 0x05, 0x41, 0x03, 0x42, 0x81, + 0x43, 0x42, 0x08, 0x43, 0x1B, 0x64, 0x0D, 0x43, 0x06, 0x42, 0x81, 0x41, 0x9B, 0x02, 0x9A, 0x02, + 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, + 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, + 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, + 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x03, 0x03, 0x80, 0x04, 0x03, + 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x02, 0x0D, 0x02, + 0x0E, 0x02, 0x0F, 0x03, 0x10, 0x02, 0x11, 0x02, 0x12, 0x03, 0x13, 0x02, 0x23, 0x03, 0x24, 0x02, + 0x25, 0x03, 0x26, 0x02, 0x27, 0x03, 0x28, 0x02, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x03, + 0x2D, 0x02, 0x2E, 0x03, 0x2F, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x35, 0x80, 0x36, 0x03, + 0x37, 0x80, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x03, 0x3B, 0x02, 0x3C, 0x02, 0x3D, 0x03, 0x3E, 0x03, + 0x3F, 0x03, 0x40, 0x04, 0x41, 0x04, 0x42, 0x08, 0x43, 0x28, 0x64, 0x09, 0x43, 0x03, 0x42, 0x80, + 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, + 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, + 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x03, 0x6D, 0x02, 0x6C, 0x03, + 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, + 0x03, 0x02, 0x04, 0x03, 0x05, 0x80, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, + 0x0C, 0x02, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x03, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, + 0x23, 0x03, 0x24, 0x02, 0x25, 0x03, 0x26, 0x02, 0x27, 0x03, 0x28, 0x03, 0x29, 0x02, 0x2A, 0x03, + 0x2B, 0x03, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x03, 0x2F, 0x02, 0x30, 0x02, 0x31, 0x80, 0x32, 0x03, + 0x35, 0x80, 0x36, 0x03, 0x37, 0x03, 0x39, 0x02, 0x3A, 0x02, 0x3B, 0x02, 0x3C, 0x02, 0x3D, 0x02, + 0x3E, 0x03, 0x3F, 0x03, 0x40, 0x04, 0x41, 0x03, 0x42, 0x07, 0x43, 0x0C, 0x64, 0x1A, 0x63, 0x0C, + 0x64, 0x07, 0x43, 0x80, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, + 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, + 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x03, 0x6E, 0x80, + 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x02, + 0x19, 0x03, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, + 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x03, 0x10, 0x02, 0x11, 0x02, + 0x12, 0x02, 0x13, 0x03, 0x23, 0x02, 0x24, 0x03, 0x25, 0x02, 0x26, 0x03, 0x27, 0x02, 0x28, 0x03, + 0x29, 0x03, 0x2A, 0x02, 0x2B, 0x03, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x03, 0x2F, 0x02, 0x30, 0x02, + 0x31, 0x80, 0x32, 0x02, 0x35, 0x80, 0x36, 0x03, 0x37, 0x80, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x02, + 0x3B, 0x02, 0x3C, 0x02, 0x3D, 0x02, 0x3E, 0x03, 0x3F, 0x02, 0x40, 0x04, 0x41, 0x03, 0x42, 0x06, + 0x43, 0x08, 0x64, 0x28, 0x63, 0x0A, 0x64, 0x83, 0x43, 0x64, 0x43, 0x9B, 0x02, 0x9A, 0x02, 0x99, + 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, + 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x03, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, + 0x03, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x03, 0x03, 0x02, 0x04, 0x02, 0x05, + 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x80, 0x09, 0x02, 0x0A, 0x03, 0x0C, 0x02, 0x0D, 0x02, 0x0E, + 0x02, 0x0F, 0x02, 0x10, 0x03, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x23, 0x03, 0x24, 0x02, 0x25, + 0x03, 0x26, 0x02, 0x27, 0x03, 0x28, 0x02, 0x29, 0x03, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x03, 0x2D, + 0x02, 0x2E, 0x03, 0x2F, 0x02, 0x30, 0x02, 0x31, 0x80, 0x32, 0x02, 0x35, 0x02, 0x36, 0x81, 0x37, + 0x38, 0x03, 0x39, 0x80, 0x3A, 0x02, 0x3B, 0x02, 0x3C, 0x02, 0x3D, 0x03, 0x3E, 0x02, 0x3F, 0x02, + 0x40, 0x04, 0x41, 0x02, 0x42, 0x06, 0x43, 0x07, 0x64, 0x09, 0x63, 0x1D, 0x62, 0x0B, 0x63, 0x08, + 0x64, 0x80, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, + 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, + 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, + 0x6C, 0x04, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x02, + 0x18, 0x03, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x03, 0x07, 0x80, 0x08, 0x02, 0x09, 0x02, + 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x03, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x03, 0x12, 0x80, + 0x13, 0x03, 0x23, 0x02, 0x24, 0x03, 0x25, 0x02, 0x26, 0x03, 0x27, 0x02, 0x28, 0x02, 0x29, 0x03, + 0x2A, 0x02, 0x2B, 0x03, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x03, 0x30, 0x80, 0x31, 0x02, + 0x32, 0x02, 0x35, 0x80, 0x36, 0x02, 0x37, 0x80, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x02, 0x3B, 0x02, + 0x3C, 0x80, 0x3D, 0x03, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x03, 0x41, 0x02, 0x42, 0x05, 0x43, 0x06, + 0x64, 0x08, 0x63, 0x0E, 0x62, 0x82, 0x61, 0x62, 0x61, 0x02, 0x62, 0x82, 0x61, 0x62, 0x61, 0x02, + 0x62, 0x80, 0x61, 0x10, 0x62, 0x09, 0x63, 0x04, 0x64, 0x02, 0x9B, 0x80, 0x9A, 0x02, 0x99, 0x03, + 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, + 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, + 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x04, 0x20, 0x02, 0x1F, 0x04, + 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x03, 0x05, 0x80, + 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, + 0x0F, 0x02, 0x10, 0x03, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x23, 0x03, 0x24, 0x02, 0x25, 0x02, + 0x26, 0x03, 0x27, 0x02, 0x28, 0x02, 0x29, 0x03, 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x02, + 0x2E, 0x03, 0x2F, 0x02, 0x30, 0x80, 0x31, 0x02, 0x32, 0x80, 0x35, 0x02, 0x36, 0x02, 0x37, 0x80, + 0x38, 0x02, 0x39, 0x02, 0x3A, 0x80, 0x3B, 0x02, 0x3C, 0x02, 0x3D, 0x02, 0x3E, 0x02, 0x3F, 0x02, + 0x40, 0x03, 0x41, 0x02, 0x42, 0x04, 0x43, 0x07, 0x64, 0x05, 0x63, 0x0A, 0x62, 0x1D, 0x61, 0x02, + 0x62, 0x80, 0x61, 0x09, 0x62, 0x08, 0x63, 0x80, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, + 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, + 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, + 0x6F, 0x03, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x04, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, + 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x03, 0x05, 0x80, 0x06, 0x02, + 0x07, 0x02, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x03, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, + 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x03, 0x23, 0x02, 0x24, 0x03, 0x25, 0x02, 0x26, 0x02, + 0x27, 0x02, 0x28, 0x03, 0x29, 0x02, 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x03, + 0x2F, 0x02, 0x30, 0x80, 0x31, 0x02, 0x32, 0x80, 0x35, 0x02, 0x36, 0x81, 0x37, 0x38, 0x03, 0x39, + 0x80, 0x3A, 0x02, 0x3B, 0x80, 0x3C, 0x02, 0x3D, 0x02, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x03, 0x41, + 0x02, 0x42, 0x04, 0x43, 0x06, 0x64, 0x05, 0x63, 0x07, 0x62, 0x29, 0x61, 0x80, 0x62, 0x02, 0x61, + 0x08, 0x62, 0x03, 0x63, 0x80, 0x9B, 0x03, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, + 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, + 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x03, 0x71, 0x80, 0x6F, 0x02, 0x6E, + 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x02, 0x1A, + 0x02, 0x19, 0x03, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, + 0x80, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x03, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x03, 0x10, 0x02, 0x11, + 0x02, 0x12, 0x02, 0x13, 0x02, 0x23, 0x03, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x03, 0x28, + 0x02, 0x29, 0x03, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x03, 0x2D, 0x80, 0x2E, 0x03, 0x2F, 0x02, 0x30, + 0x80, 0x31, 0x02, 0x32, 0x81, 0x35, 0x36, 0x02, 0x37, 0x80, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x02, + 0x3B, 0x80, 0x3C, 0x02, 0x3D, 0x80, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x03, 0x41, 0x02, 0x42, 0x03, + 0x43, 0x05, 0x64, 0x05, 0x63, 0x06, 0x62, 0x0D, 0x61, 0x17, 0x60, 0x10, 0x61, 0x08, 0x62, 0x80, + 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x03, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, + 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x80, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, + 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, + 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, + 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x03, 0x07, 0x80, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, + 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x03, 0x12, 0x80, 0x13, 0x03, + 0x23, 0x02, 0x24, 0x03, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x03, 0x2A, 0x02, + 0x2B, 0x03, 0x2C, 0x80, 0x2D, 0x03, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x80, 0x31, 0x02, 0x32, 0x81, + 0x35, 0x36, 0x02, 0x37, 0x80, 0x38, 0x02, 0x39, 0x80, 0x3A, 0x02, 0x3B, 0x02, 0x3C, 0x80, 0x3D, + 0x02, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x04, 0x43, 0x04, 0x64, 0x04, 0x63, + 0x05, 0x62, 0x0A, 0x61, 0x26, 0x60, 0x0D, 0x61, 0x03, 0x62, 0x02, 0x9B, 0x80, 0x9A, 0x03, 0x99, + 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, + 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x03, 0x1F, + 0x03, 0x1E, 0x03, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, 0x03, 0x80, 0x04, 0x03, 0x05, + 0x80, 0x06, 0x03, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x03, 0x0C, 0x02, 0x0D, 0x02, 0x0E, + 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x03, 0x23, 0x02, 0x24, 0x02, 0x25, + 0x02, 0x26, 0x02, 0x27, 0x03, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x02, 0x2D, + 0x02, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x80, 0x31, 0x02, 0x32, 0x81, 0x35, 0x36, 0x02, 0x37, 0x81, + 0x38, 0x39, 0x02, 0x3A, 0x02, 0x3B, 0x80, 0x3C, 0x02, 0x3D, 0x80, 0x3E, 0x02, 0x3F, 0x02, 0x40, + 0x02, 0x41, 0x02, 0x42, 0x04, 0x43, 0x03, 0x64, 0x05, 0x63, 0x04, 0x62, 0x08, 0x61, 0x0B, 0x60, + 0x1B, 0x5F, 0x0B, 0x60, 0x0A, 0x61, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, + 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, + 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, + 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, + 0x02, 0x1A, 0x02, 0x19, 0x03, 0x18, 0x02, 0x03, 0x80, 0x04, 0x03, 0x05, 0x80, 0x06, 0x02, 0x07, + 0x02, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x03, 0x10, + 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x03, 0x26, 0x02, 0x27, + 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x03, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, + 0x02, 0x30, 0x80, 0x31, 0x02, 0x32, 0x81, 0x35, 0x36, 0x02, 0x37, 0x80, 0x38, 0x02, 0x39, 0x81, + 0x3A, 0x3B, 0x02, 0x3C, 0x80, 0x3D, 0x02, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x02, 0x41, 0x80, 0x42, + 0x03, 0x43, 0x04, 0x64, 0x04, 0x63, 0x04, 0x62, 0x07, 0x61, 0x07, 0x60, 0x29, 0x5F, 0x09, 0x60, + 0x06, 0x61, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, + 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, + 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, + 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x02, 0x1A, 0x02, 0x19, + 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, + 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, + 0x02, 0x13, 0x03, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x03, 0x29, + 0x02, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x02, 0x31, + 0x82, 0x32, 0x35, 0x36, 0x02, 0x37, 0x81, 0x38, 0x39, 0x02, 0x3A, 0x02, 0x3B, 0x81, 0x3C, 0x3D, + 0x02, 0x3E, 0x80, 0x3F, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x04, 0x64, 0x04, 0x63, + 0x04, 0x62, 0x05, 0x61, 0x07, 0x60, 0x0B, 0x5F, 0x1A, 0x5E, 0x0D, 0x5F, 0x08, 0x60, 0x02, 0x61, + 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, + 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, + 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x03, 0x6C, + 0x02, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x02, 0x18, + 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x02, 0x0A, + 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, + 0x02, 0x23, 0x02, 0x24, 0x03, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, + 0x03, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x80, 0x31, 0x02, 0x32, + 0x81, 0x35, 0x36, 0x02, 0x37, 0x82, 0x38, 0x39, 0x3A, 0x02, 0x3B, 0x80, 0x3C, 0x02, 0x3D, 0x80, + 0x3E, 0x02, 0x3F, 0x80, 0x40, 0x02, 0x41, 0x02, 0x42, 0x03, 0x43, 0x03, 0x64, 0x04, 0x63, 0x03, + 0x62, 0x07, 0x61, 0x04, 0x60, 0x08, 0x5F, 0x27, 0x5E, 0x0B, 0x5F, 0x06, 0x60, 0x02, 0x9B, 0x02, + 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x03, 0x94, 0x80, 0x80, 0x02, + 0x7F, 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, + 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x03, + 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, + 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x02, + 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x80, 0x13, 0x03, 0x23, 0x02, + 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x03, 0x2A, 0x02, 0x2B, 0x02, + 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x02, 0x31, 0x82, 0x32, 0x35, 0x36, 0x02, + 0x37, 0x81, 0x38, 0x39, 0x02, 0x3A, 0x82, 0x3B, 0x3C, 0x3D, 0x02, 0x3E, 0x02, 0x3F, 0x80, 0x40, + 0x02, 0x41, 0x80, 0x42, 0x03, 0x43, 0x04, 0x64, 0x03, 0x63, 0x03, 0x62, 0x05, 0x61, 0x05, 0x60, + 0x07, 0x5F, 0x0B, 0x5E, 0x19, 0x5D, 0x0D, 0x5E, 0x09, 0x5F, 0x02, 0x60, 0x02, 0x9B, 0x02, 0x9A, + 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x03, 0x94, 0x02, 0x80, 0x02, 0x7F, + 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, + 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x03, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, + 0x03, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x80, 0x1A, 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, + 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, + 0x02, 0x0E, 0x80, 0x0F, 0x03, 0x10, 0x80, 0x11, 0x03, 0x12, 0x80, 0x13, 0x03, 0x23, 0x80, 0x24, + 0x03, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x02, 0x2C, + 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x80, 0x30, 0x02, 0x31, 0x82, 0x32, 0x35, 0x36, 0x02, 0x37, + 0x02, 0x39, 0x80, 0x3A, 0x02, 0x3B, 0x80, 0x3C, 0x02, 0x3D, 0x81, 0x3E, 0x3F, 0x02, 0x40, 0x80, + 0x41, 0x02, 0x42, 0x03, 0x43, 0x03, 0x64, 0x02, 0x63, 0x04, 0x62, 0x05, 0x61, 0x04, 0x60, 0x05, + 0x5F, 0x09, 0x5E, 0x27, 0x5D, 0x0A, 0x5E, 0x07, 0x5F, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, + 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, + 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, + 0x71, 0x80, 0x6F, 0x03, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, + 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, + 0x06, 0x03, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, + 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, + 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x03, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x80, + 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x82, 0x31, 0x32, 0x35, 0x02, 0x36, 0x83, 0x37, 0x38, 0x39, 0x3A, + 0x02, 0x3B, 0x81, 0x3C, 0x3D, 0x02, 0x3E, 0x80, 0x3F, 0x02, 0x40, 0x80, 0x41, 0x02, 0x42, 0x02, + 0x43, 0x03, 0x64, 0x03, 0x63, 0x03, 0x62, 0x05, 0x61, 0x03, 0x60, 0x05, 0x5F, 0x07, 0x5E, 0x0D, + 0x5D, 0x81, 0x5C, 0x5D, 0x0E, 0x5C, 0x80, 0x5D, 0x03, 0x5C, 0x0F, 0x5D, 0x0A, 0x5E, 0x03, 0x5F, + 0x02, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, + 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, + 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, + 0x04, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x02, 0x18, + 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x02, 0x08, 0x80, 0x09, 0x02, 0x0A, + 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x80, 0x13, + 0x03, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, + 0x02, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x81, 0x31, 0x32, 0x02, + 0x35, 0x84, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x02, 0x3B, 0x82, 0x3C, 0x3D, 0x3E, 0x02, 0x3F, 0x80, + 0x40, 0x02, 0x41, 0x80, 0x42, 0x02, 0x43, 0x04, 0x64, 0x02, 0x63, 0x03, 0x62, 0x04, 0x61, 0x04, + 0x60, 0x04, 0x5F, 0x06, 0x5E, 0x0B, 0x5D, 0x21, 0x5C, 0x0D, 0x5D, 0x08, 0x5E, 0x03, 0x9B, 0x02, + 0x9A, 0x02, 0x99, 0x02, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, + 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x03, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, + 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x03, + 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, + 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x02, 0x08, 0x80, 0x09, 0x02, 0x0A, 0x02, 0x0C, 0x02, + 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x80, 0x11, 0x03, 0x12, 0x80, 0x13, 0x03, 0x23, 0x02, + 0x24, 0x02, 0x25, 0x80, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x03, 0x2A, 0x80, 0x2B, 0x02, + 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x80, 0x30, 0x02, 0x31, 0x85, 0x32, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x02, 0x3A, 0x83, 0x3B, 0x3C, 0x3D, 0x3E, 0x02, 0x3F, 0x80, 0x40, 0x02, 0x41, 0x80, + 0x42, 0x02, 0x43, 0x03, 0x64, 0x02, 0x63, 0x03, 0x62, 0x04, 0x61, 0x04, 0x60, 0x04, 0x5F, 0x06, + 0x5E, 0x07, 0x5D, 0x0A, 0x5C, 0x17, 0x5B, 0x81, 0x5C, 0x5B, 0x0A, 0x5C, 0x0B, 0x5D, 0x04, 0x5E, + 0x80, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, + 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x80, 0x7A, 0x03, 0x78, + 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, + 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, + 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x02, 0x08, 0x80, 0x09, + 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, + 0x02, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, + 0x02, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x87, 0x31, + 0x32, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x02, 0x3B, 0x82, 0x3C, 0x3D, 0x3E, 0x02, 0x3F, 0x81, + 0x40, 0x41, 0x02, 0x42, 0x02, 0x43, 0x03, 0x64, 0x02, 0x63, 0x03, 0x62, 0x04, 0x61, 0x03, 0x60, + 0x03, 0x5F, 0x06, 0x5E, 0x07, 0x5D, 0x05, 0x5C, 0x27, 0x5B, 0x08, 0x5C, 0x0A, 0x5D, 0x81, 0x5E, + 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, + 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, + 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, + 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x02, 0x19, 0x02, + 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x02, 0x08, 0x80, 0x09, 0x02, + 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, + 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, + 0x2A, 0x80, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x85, 0x31, 0x32, + 0x35, 0x36, 0x37, 0x38, 0x02, 0x39, 0x02, 0x3B, 0x82, 0x3C, 0x3D, 0x3E, 0x02, 0x3F, 0x82, 0x40, + 0x41, 0x42, 0x02, 0x43, 0x03, 0x64, 0x03, 0x63, 0x02, 0x62, 0x03, 0x61, 0x04, 0x60, 0x04, 0x5F, + 0x04, 0x5E, 0x06, 0x5D, 0x05, 0x5C, 0x0E, 0x5B, 0x12, 0x5A, 0x10, 0x5B, 0x07, 0x5C, 0x07, 0x5D, + 0x80, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, + 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, + 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, + 0x03, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, + 0x03, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, + 0x02, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x80, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, + 0x80, 0x13, 0x03, 0x23, 0x02, 0x24, 0x80, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, + 0x02, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x80, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x84, 0x30, 0x31, 0x32, + 0x35, 0x36, 0x02, 0x37, 0x02, 0x39, 0x85, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x02, 0x40, 0x81, + 0x41, 0x42, 0x03, 0x43, 0x02, 0x64, 0x02, 0x63, 0x03, 0x62, 0x03, 0x61, 0x03, 0x60, 0x03, 0x5F, + 0x04, 0x5E, 0x06, 0x5D, 0x05, 0x5C, 0x09, 0x5B, 0x22, 0x5A, 0x0B, 0x5B, 0x08, 0x5C, 0x03, 0x5D, + 0x80, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, + 0x03, 0x94, 0x80, 0x80, 0x03, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, + 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, + 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x03, 0x19, + 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, + 0x02, 0x0A, 0x80, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, + 0x80, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, + 0x02, 0x2A, 0x80, 0x2B, 0x02, 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x80, 0x31, + 0x02, 0x35, 0x89, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x02, 0x40, 0x81, + 0x41, 0x42, 0x02, 0x43, 0x03, 0x64, 0x02, 0x63, 0x02, 0x62, 0x03, 0x61, 0x03, 0x60, 0x03, 0x5F, + 0x04, 0x5E, 0x05, 0x5D, 0x04, 0x5C, 0x09, 0x5B, 0x0C, 0x5A, 0x10, 0x59, 0x0F, 0x5A, 0x0B, 0x5B, + 0x06, 0x5C, 0x80, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, + 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, + 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, + 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, + 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, + 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x80, 0x11, + 0x02, 0x12, 0x02, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x80, 0x27, 0x02, 0x28, + 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x80, 0x2D, 0x02, 0x2E, 0x80, 0x2F, 0x02, 0x30, + 0x8B, 0x31, 0x32, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x02, 0x3F, 0x81, + 0x40, 0x41, 0x02, 0x42, 0x80, 0x43, 0x02, 0x64, 0x03, 0x63, 0x80, 0x62, 0x04, 0x61, 0x02, 0x60, + 0x04, 0x5F, 0x03, 0x5E, 0x05, 0x5D, 0x03, 0x5C, 0x07, 0x5B, 0x08, 0x5A, 0x21, 0x59, 0x0B, 0x5A, + 0x0A, 0x5B, 0x03, 0x5C, 0x02, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x80, 0x98, 0x02, 0x97, + 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, + 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, + 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, + 0x02, 0x1A, 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x02, 0x07, + 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, + 0x80, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x80, 0x26, 0x02, 0x27, + 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x80, 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, + 0x82, 0x30, 0x31, 0x32, 0x02, 0x35, 0x87, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x02, + 0x3F, 0x82, 0x40, 0x41, 0x42, 0x02, 0x43, 0x02, 0x64, 0x02, 0x63, 0x03, 0x62, 0x02, 0x61, 0x03, + 0x60, 0x03, 0x5F, 0x03, 0x5E, 0x04, 0x5D, 0x04, 0x5C, 0x05, 0x5B, 0x07, 0x5A, 0x2D, 0x59, 0x09, + 0x5A, 0x08, 0x5B, 0x02, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, + 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x03, + 0x7A, 0x80, 0x78, 0x03, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, + 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x03, 0x1B, 0x02, + 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, + 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, 0x02, + 0x11, 0x02, 0x12, 0x80, 0x13, 0x03, 0x23, 0x80, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x80, + 0x28, 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x80, 0x2D, 0x02, 0x2E, 0x80, 0x2F, 0x02, + 0x30, 0x84, 0x31, 0x32, 0x35, 0x36, 0x37, 0x02, 0x39, 0x02, 0x3B, 0x86, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x02, 0x43, 0x02, 0x64, 0x02, 0x63, 0x02, 0x62, 0x03, 0x61, 0x02, 0x60, 0x03, + 0x5F, 0x03, 0x5E, 0x04, 0x5D, 0x03, 0x5C, 0x06, 0x5B, 0x05, 0x5A, 0x0C, 0x59, 0x18, 0x58, 0x11, + 0x59, 0x07, 0x5A, 0x06, 0x5B, 0x02, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, + 0x97, 0x02, 0x96, 0x02, 0x95, 0x03, 0x94, 0x80, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, + 0x7B, 0x03, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, + 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x03, + 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, + 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, + 0x10, 0x02, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x80, + 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x80, 0x2C, 0x02, 0x2D, 0x80, 0x2E, 0x02, + 0x2F, 0x90, 0x30, 0x31, 0x32, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x02, 0x43, 0x02, 0x64, 0x02, 0x63, 0x02, 0x62, 0x02, 0x61, 0x03, 0x60, 0x03, + 0x5F, 0x03, 0x5E, 0x03, 0x5D, 0x04, 0x5C, 0x04, 0x5B, 0x06, 0x5A, 0x08, 0x59, 0x25, 0x58, 0x0D, + 0x59, 0x07, 0x5A, 0x03, 0x5B, 0x02, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, + 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x80, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x02, + 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, + 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x03, + 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x02, + 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, + 0x10, 0x02, 0x11, 0x80, 0x12, 0x02, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x80, 0x26, 0x02, + 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x80, 0x2B, 0x02, 0x2C, 0x80, 0x2D, 0x02, 0x2E, 0x81, + 0x2F, 0x30, 0x02, 0x31, 0x02, 0x35, 0x8B, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + 0x40, 0x41, 0x42, 0x02, 0x43, 0x02, 0x64, 0x02, 0x63, 0x02, 0x62, 0x02, 0x61, 0x02, 0x60, 0x03, + 0x5F, 0x03, 0x5E, 0x03, 0x5D, 0x03, 0x5C, 0x05, 0x5B, 0x04, 0x5A, 0x08, 0x59, 0x0D, 0x58, 0x11, + 0x57, 0x81, 0x58, 0x57, 0x0F, 0x58, 0x0A, 0x59, 0x07, 0x5A, 0x02, 0x9C, 0x03, 0x9B, 0x80, 0x9A, + 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x03, 0x94, 0x02, 0x80, 0x02, 0x7F, + 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, + 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x80, 0x6C, 0x03, 0x21, 0x03, 0x20, + 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, + 0x80, 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, + 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x80, 0x12, 0x02, 0x13, 0x02, 0x23, 0x02, 0x24, + 0x80, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x80, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x80, 0x2C, + 0x02, 0x2D, 0x80, 0x2E, 0x02, 0x2F, 0x85, 0x30, 0x31, 0x32, 0x35, 0x36, 0x37, 0x02, 0x39, 0x87, + 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x02, 0x43, 0x02, 0x64, 0x02, 0x63, 0x80, 0x62, + 0x03, 0x61, 0x02, 0x60, 0x02, 0x5F, 0x03, 0x5E, 0x04, 0x5D, 0x03, 0x5C, 0x03, 0x5B, 0x05, 0x5A, + 0x06, 0x59, 0x09, 0x58, 0x21, 0x57, 0x0D, 0x58, 0x0A, 0x59, 0x03, 0x5A, 0x02, 0x9C, 0x03, 0x9B, + 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, + 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, + 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, + 0x03, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, + 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, + 0x02, 0x0D, 0x80, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x80, 0x12, 0x02, 0x13, 0x02, 0x23, + 0x80, 0x24, 0x02, 0x25, 0x02, 0x26, 0x80, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x80, 0x2B, + 0x02, 0x2C, 0x80, 0x2D, 0x02, 0x2E, 0x80, 0x2F, 0x02, 0x30, 0x89, 0x32, 0x35, 0x36, 0x37, 0x38, + 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x02, 0x3F, 0x02, 0x41, 0x81, 0x42, 0x43, 0x02, 0x64, 0x02, 0x63, + 0x80, 0x62, 0x03, 0x61, 0x02, 0x60, 0x02, 0x5F, 0x02, 0x5E, 0x04, 0x5D, 0x02, 0x5C, 0x04, 0x5B, + 0x04, 0x5A, 0x06, 0x59, 0x06, 0x58, 0x0D, 0x57, 0x80, 0x56, 0x02, 0x57, 0x0B, 0x56, 0x13, 0x57, + 0x0A, 0x58, 0x08, 0x59, 0x80, 0x5A, 0x02, 0x9C, 0x03, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, + 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, + 0x80, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, + 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, 0x1E, + 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, + 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, + 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, 0x02, 0x13, 0x80, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, + 0x80, 0x27, 0x02, 0x28, 0x02, 0x29, 0x80, 0x2A, 0x02, 0x2B, 0x02, 0x2C, 0x81, 0x2D, 0x2E, 0x02, + 0x2F, 0x90, 0x30, 0x31, 0x32, 0x35, 0x36, 0x37, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, + 0x41, 0x42, 0x43, 0x02, 0x64, 0x02, 0x63, 0x80, 0x62, 0x03, 0x61, 0x02, 0x60, 0x02, 0x5F, 0x02, + 0x5E, 0x04, 0x5D, 0x80, 0x5C, 0x04, 0x5B, 0x04, 0x5A, 0x05, 0x59, 0x07, 0x58, 0x07, 0x57, 0x21, + 0x56, 0x0B, 0x57, 0x09, 0x58, 0x07, 0x59, 0x03, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, + 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x80, + 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x80, 0x78, 0x03, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, + 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, + 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, + 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, + 0x0F, 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x02, + 0x26, 0x80, 0x27, 0x02, 0x28, 0x80, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x80, 0x2C, 0x02, 0x2D, 0x82, + 0x2E, 0x2F, 0x30, 0x02, 0x31, 0x84, 0x35, 0x36, 0x37, 0x38, 0x39, 0x02, 0x3B, 0x86, 0x3D, 0x3E, + 0x3F, 0x40, 0x41, 0x42, 0x43, 0x02, 0x64, 0x02, 0x63, 0x80, 0x62, 0x03, 0x61, 0x02, 0x60, 0x02, + 0x5F, 0x02, 0x5E, 0x03, 0x5D, 0x02, 0x5C, 0x04, 0x5B, 0x03, 0x5A, 0x05, 0x59, 0x05, 0x58, 0x07, + 0x57, 0x10, 0x56, 0x83, 0x55, 0x56, 0x55, 0x56, 0x02, 0x55, 0x02, 0x56, 0x80, 0x55, 0x11, 0x56, + 0x0A, 0x57, 0x09, 0x58, 0x03, 0x59, 0x03, 0x9C, 0x03, 0x9B, 0x02, 0x9A, 0x80, 0x99, 0x02, 0x98, + 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x03, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, + 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, + 0x80, 0x6F, 0x03, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, + 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, + 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x80, 0x0E, 0x02, 0x0F, + 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x02, 0x24, 0x02, 0x25, 0x80, 0x26, + 0x02, 0x27, 0x80, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x80, 0x2B, 0x02, 0x2C, 0x80, 0x2D, 0x02, 0x2E, + 0x8F, 0x2F, 0x30, 0x31, 0x32, 0x35, 0x36, 0x37, 0x39, 0x3A, 0x3B, 0x3C, 0x3E, 0x3F, 0x40, 0x41, + 0x42, 0x02, 0x43, 0x80, 0x64, 0x02, 0x63, 0x80, 0x62, 0x03, 0x61, 0x80, 0x60, 0x02, 0x5F, 0x03, + 0x5E, 0x02, 0x5D, 0x03, 0x5C, 0x03, 0x5B, 0x03, 0x5A, 0x04, 0x59, 0x05, 0x58, 0x06, 0x57, 0x0A, + 0x56, 0x18, 0x55, 0x80, 0x56, 0x04, 0x55, 0x0C, 0x56, 0x08, 0x57, 0x08, 0x58, 0x80, 0x59, 0x03, + 0x9C, 0x03, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, + 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, + 0x77, 0x80, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x03, + 0x6C, 0x02, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x03, 0x1A, 0x80, 0x19, 0x03, + 0x18, 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, + 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x80, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, 0x80, + 0x13, 0x02, 0x23, 0x02, 0x24, 0x80, 0x25, 0x02, 0x26, 0x02, 0x27, 0x80, 0x28, 0x02, 0x29, 0x80, + 0x2A, 0x02, 0x2B, 0x80, 0x2C, 0x02, 0x2D, 0x81, 0x2E, 0x2F, 0x02, 0x30, 0x83, 0x31, 0x35, 0x36, + 0x37, 0x02, 0x39, 0x86, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x02, 0x43, 0x02, 0x64, 0x81, + 0x63, 0x62, 0x03, 0x61, 0x80, 0x60, 0x02, 0x5F, 0x03, 0x5E, 0x02, 0x5D, 0x02, 0x5C, 0x03, 0x5B, + 0x03, 0x5A, 0x04, 0x59, 0x05, 0x58, 0x05, 0x57, 0x08, 0x56, 0x26, 0x55, 0x0B, 0x56, 0x09, 0x57, + 0x05, 0x58, 0x04, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, + 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x03, 0x7A, + 0x02, 0x78, 0x02, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x80, 0x71, 0x02, 0x6F, 0x02, 0x6E, + 0x80, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x03, 0x1B, 0x80, 0x1A, + 0x03, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, + 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x80, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x80, 0x11, + 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x02, 0x24, 0x80, 0x25, 0x02, 0x26, 0x80, 0x27, 0x02, 0x28, + 0x02, 0x29, 0x80, 0x2A, 0x02, 0x2B, 0x80, 0x2C, 0x02, 0x2D, 0x91, 0x2E, 0x2F, 0x30, 0x31, 0x32, + 0x35, 0x36, 0x38, 0x39, 0x3A, 0x3B, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x02, 0x64, 0x80, + 0x63, 0x02, 0x62, 0x02, 0x61, 0x80, 0x60, 0x02, 0x5F, 0x02, 0x5E, 0x03, 0x5D, 0x02, 0x5C, 0x03, + 0x5B, 0x02, 0x5A, 0x04, 0x59, 0x04, 0x58, 0x05, 0x57, 0x06, 0x56, 0x0C, 0x55, 0x16, 0x54, 0x0E, + 0x55, 0x0A, 0x56, 0x08, 0x57, 0x02, 0x58, 0x04, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, + 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x03, 0x94, 0x80, 0x80, 0x02, 0x7F, 0x03, 0x7E, 0x02, + 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, + 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, + 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, 0x80, + 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x80, 0x0E, 0x02, + 0x0F, 0x80, 0x10, 0x02, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, 0x25, 0x02, + 0x26, 0x80, 0x27, 0x02, 0x28, 0x80, 0x29, 0x02, 0x2A, 0x80, 0x2B, 0x02, 0x2C, 0x81, 0x2D, 0x2E, + 0x02, 0x2F, 0x8E, 0x30, 0x31, 0x32, 0x36, 0x37, 0x38, 0x3A, 0x3B, 0x3C, 0x3D, 0x3F, 0x40, 0x41, + 0x42, 0x43, 0x02, 0x64, 0x80, 0x63, 0x02, 0x62, 0x02, 0x61, 0x80, 0x60, 0x02, 0x5F, 0x02, 0x5E, + 0x03, 0x5D, 0x80, 0x5C, 0x03, 0x5B, 0x03, 0x5A, 0x03, 0x59, 0x04, 0x58, 0x04, 0x57, 0x06, 0x56, + 0x08, 0x55, 0x22, 0x54, 0x81, 0x55, 0x54, 0x0B, 0x55, 0x08, 0x56, 0x08, 0x57, 0x05, 0x9C, 0x02, + 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, + 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, + 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, + 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, + 0x03, 0x80, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, + 0x0C, 0x02, 0x0D, 0x80, 0x0E, 0x02, 0x0F, 0x80, 0x10, 0x02, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, + 0x23, 0x80, 0x24, 0x02, 0x25, 0x80, 0x26, 0x02, 0x27, 0x02, 0x28, 0x80, 0x29, 0x02, 0x2A, 0x81, + 0x2B, 0x2C, 0x02, 0x2D, 0x90, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x35, 0x36, 0x37, 0x39, 0x3A, 0x3B, + 0x3D, 0x3E, 0x3F, 0x40, 0x42, 0x43, 0x02, 0x64, 0x80, 0x63, 0x02, 0x62, 0x02, 0x61, 0x80, 0x60, + 0x02, 0x5F, 0x02, 0x5E, 0x03, 0x5D, 0x80, 0x5C, 0x03, 0x5B, 0x02, 0x5A, 0x04, 0x59, 0x03, 0x58, + 0x04, 0x57, 0x05, 0x56, 0x07, 0x55, 0x0B, 0x54, 0x12, 0x53, 0x81, 0x54, 0x53, 0x0D, 0x54, 0x0B, + 0x55, 0x07, 0x56, 0x05, 0x57, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, + 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, + 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x80, 0x71, 0x02, + 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, + 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x80, + 0x07, 0x02, 0x08, 0x81, 0x09, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x81, 0x0F, 0x10, 0x02, + 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, 0x25, 0x80, 0x26, 0x02, 0x27, 0x80, + 0x28, 0x02, 0x29, 0x80, 0x2A, 0x02, 0x2B, 0x81, 0x2C, 0x2D, 0x02, 0x2E, 0x90, 0x2F, 0x30, 0x31, + 0x32, 0x35, 0x37, 0x38, 0x3A, 0x3B, 0x3C, 0x3D, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x64, 0x02, 0x63, + 0x80, 0x62, 0x02, 0x61, 0x80, 0x60, 0x02, 0x5F, 0x02, 0x5E, 0x02, 0x5D, 0x02, 0x5C, 0x02, 0x5B, + 0x03, 0x5A, 0x03, 0x59, 0x03, 0x58, 0x04, 0x57, 0x04, 0x56, 0x07, 0x55, 0x07, 0x54, 0x81, 0x53, + 0x54, 0x20, 0x53, 0x0B, 0x54, 0x08, 0x55, 0x07, 0x56, 0x03, 0x57, 0x05, 0x9C, 0x02, 0x9B, 0x02, + 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, + 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x80, 0x74, 0x02, + 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, + 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x02, + 0x04, 0x80, 0x05, 0x02, 0x06, 0x02, 0x07, 0x82, 0x08, 0x09, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x80, + 0x0E, 0x02, 0x0F, 0x80, 0x10, 0x02, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, + 0x25, 0x80, 0x26, 0x02, 0x27, 0x80, 0x28, 0x02, 0x29, 0x80, 0x2A, 0x02, 0x2B, 0x82, 0x2C, 0x2D, + 0x2E, 0x02, 0x2F, 0x8D, 0x30, 0x31, 0x35, 0x36, 0x37, 0x39, 0x3A, 0x3C, 0x3D, 0x3E, 0x3F, 0x41, + 0x42, 0x43, 0x02, 0x64, 0x81, 0x63, 0x62, 0x02, 0x61, 0x02, 0x60, 0x80, 0x5F, 0x02, 0x5E, 0x02, + 0x5D, 0x02, 0x5C, 0x02, 0x5B, 0x02, 0x5A, 0x03, 0x59, 0x04, 0x58, 0x03, 0x57, 0x04, 0x56, 0x05, + 0x55, 0x06, 0x54, 0x0C, 0x53, 0x10, 0x52, 0x0F, 0x53, 0x09, 0x54, 0x0A, 0x55, 0x06, 0x56, 0x05, + 0x9C, 0x03, 0x9B, 0x80, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, + 0x94, 0x80, 0x80, 0x03, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, + 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, + 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, + 0x18, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x81, 0x08, 0x09, 0x02, 0x0A, + 0x80, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, 0x80, 0x13, + 0x02, 0x23, 0x80, 0x24, 0x02, 0x25, 0x80, 0x26, 0x02, 0x27, 0x80, 0x28, 0x02, 0x29, 0x80, 0x2A, + 0x02, 0x2B, 0x90, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x35, 0x37, 0x38, 0x3A, 0x3B, 0x3C, + 0x3E, 0x3F, 0x40, 0x41, 0x02, 0x43, 0x81, 0x64, 0x63, 0x02, 0x62, 0x80, 0x61, 0x02, 0x60, 0x80, + 0x5F, 0x02, 0x5E, 0x02, 0x5D, 0x02, 0x5C, 0x02, 0x5B, 0x02, 0x5A, 0x03, 0x59, 0x03, 0x58, 0x03, + 0x57, 0x04, 0x56, 0x04, 0x55, 0x06, 0x54, 0x08, 0x53, 0x1F, 0x52, 0x0C, 0x53, 0x08, 0x54, 0x08, + 0x55, 0x04, 0x56, 0x80, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, + 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, + 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, + 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, + 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x80, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, + 0x07, 0x81, 0x08, 0x09, 0x02, 0x0A, 0x80, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, + 0x80, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, 0x25, 0x80, 0x26, 0x02, 0x27, + 0x81, 0x28, 0x29, 0x02, 0x2A, 0x80, 0x2B, 0x02, 0x2C, 0x91, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, + 0x36, 0x37, 0x39, 0x3A, 0x3B, 0x3D, 0x3E, 0x40, 0x41, 0x42, 0x43, 0x64, 0x02, 0x63, 0x80, 0x62, + 0x02, 0x61, 0x81, 0x60, 0x5F, 0x02, 0x5E, 0x02, 0x5D, 0x80, 0x5C, 0x03, 0x5B, 0x02, 0x5A, 0x02, + 0x59, 0x03, 0x58, 0x03, 0x57, 0x04, 0x56, 0x04, 0x55, 0x05, 0x54, 0x06, 0x53, 0x0E, 0x52, 0x0B, + 0x51, 0x03, 0x52, 0x80, 0x51, 0x0D, 0x52, 0x09, 0x53, 0x07, 0x54, 0x08, 0x55, 0x02, 0x56, 0x80, + 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, + 0x95, 0x80, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, + 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, + 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, + 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, + 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x80, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, 0x80, 0x11, 0x02, + 0x12, 0x80, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, 0x25, 0x81, 0x26, 0x27, 0x02, 0x28, 0x80, 0x29, + 0x02, 0x2A, 0x81, 0x2B, 0x2C, 0x02, 0x2D, 0x8E, 0x2E, 0x2F, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, + 0x3B, 0x3C, 0x3E, 0x3F, 0x40, 0x41, 0x43, 0x02, 0x64, 0x81, 0x63, 0x62, 0x02, 0x61, 0x80, 0x60, + 0x02, 0x5F, 0x80, 0x5E, 0x02, 0x5D, 0x02, 0x5C, 0x02, 0x5B, 0x80, 0x5A, 0x03, 0x59, 0x03, 0x58, + 0x02, 0x57, 0x04, 0x56, 0x04, 0x55, 0x04, 0x54, 0x05, 0x53, 0x08, 0x52, 0x1E, 0x51, 0x0B, 0x52, + 0x09, 0x53, 0x07, 0x54, 0x07, 0x55, 0x80, 0x9E, 0x06, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, + 0x02, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x80, 0x80, 0x03, 0x7F, 0x02, 0x7E, + 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, + 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, + 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x80, 0x0D, 0x02, 0x0E, + 0x80, 0x0F, 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x81, 0x24, 0x25, 0x02, + 0x26, 0x80, 0x27, 0x02, 0x28, 0x80, 0x29, 0x02, 0x2A, 0x84, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x02, + 0x30, 0x8E, 0x32, 0x35, 0x37, 0x38, 0x3A, 0x3B, 0x3C, 0x3E, 0x40, 0x41, 0x42, 0x43, 0x64, 0x63, + 0x62, 0x02, 0x61, 0x80, 0x60, 0x02, 0x5F, 0x80, 0x5E, 0x02, 0x5D, 0x02, 0x5C, 0x80, 0x5B, 0x02, + 0x5A, 0x03, 0x59, 0x03, 0x58, 0x02, 0x57, 0x03, 0x56, 0x04, 0x55, 0x04, 0x54, 0x04, 0x53, 0x06, + 0x52, 0x2A, 0x51, 0x08, 0x52, 0x08, 0x53, 0x07, 0x54, 0x04, 0x55, 0x02, 0x9E, 0x05, 0x9C, 0x02, + 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, + 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, + 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, + 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x80, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, + 0x03, 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x81, 0x07, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, + 0x80, 0x0D, 0x02, 0x0E, 0x80, 0x0F, 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, + 0x81, 0x24, 0x25, 0x02, 0x26, 0x80, 0x27, 0x02, 0x28, 0x81, 0x29, 0x2A, 0x02, 0x2B, 0x90, 0x2C, + 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x36, 0x37, 0x39, 0x3A, 0x3C, 0x3D, 0x3F, 0x40, 0x42, 0x43, + 0x02, 0x64, 0x02, 0x62, 0x80, 0x61, 0x02, 0x60, 0x81, 0x5F, 0x5E, 0x02, 0x5D, 0x02, 0x5C, 0x02, + 0x5B, 0x80, 0x5A, 0x03, 0x59, 0x02, 0x58, 0x03, 0x57, 0x02, 0x56, 0x04, 0x55, 0x03, 0x54, 0x05, + 0x53, 0x05, 0x52, 0x0A, 0x51, 0x17, 0x50, 0x0F, 0x51, 0x08, 0x52, 0x08, 0x53, 0x06, 0x54, 0x02, + 0x55, 0x02, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, + 0x96, 0x02, 0x95, 0x02, 0x94, 0x80, 0x80, 0x03, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, + 0x7A, 0x80, 0x78, 0x03, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, + 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, + 0x1A, 0x02, 0x19, 0x02, 0x18, 0x80, 0x03, 0x02, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x82, + 0x08, 0x09, 0x0A, 0x02, 0x0C, 0x02, 0x0D, 0x81, 0x0E, 0x0F, 0x02, 0x10, 0x80, 0x11, 0x02, 0x12, + 0x80, 0x13, 0x02, 0x23, 0x81, 0x24, 0x25, 0x02, 0x26, 0x81, 0x27, 0x28, 0x02, 0x29, 0x80, 0x2A, + 0x02, 0x2B, 0x93, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x35, 0x36, 0x38, 0x39, 0x3B, 0x3C, 0x3E, + 0x3F, 0x41, 0x42, 0x43, 0x64, 0x63, 0x62, 0x02, 0x61, 0x81, 0x60, 0x5F, 0x02, 0x5E, 0x80, 0x5D, + 0x02, 0x5C, 0x02, 0x5B, 0x80, 0x5A, 0x03, 0x59, 0x02, 0x58, 0x02, 0x57, 0x03, 0x56, 0x03, 0x55, + 0x03, 0x54, 0x04, 0x53, 0x05, 0x52, 0x08, 0x51, 0x23, 0x50, 0x0D, 0x51, 0x07, 0x52, 0x06, 0x53, + 0x06, 0x54, 0x02, 0x9E, 0x06, 0x9C, 0x02, 0x9B, 0x80, 0x9A, 0x03, 0x99, 0x02, 0x98, 0x80, 0x97, + 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, + 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, + 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, + 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, + 0x81, 0x08, 0x09, 0x02, 0x0A, 0x80, 0x0C, 0x02, 0x0D, 0x81, 0x0E, 0x0F, 0x02, 0x10, 0x80, 0x11, + 0x02, 0x12, 0x80, 0x13, 0x02, 0x23, 0x81, 0x24, 0x25, 0x02, 0x26, 0x80, 0x27, 0x02, 0x28, 0x82, + 0x29, 0x2A, 0x2B, 0x02, 0x2C, 0x91, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x35, 0x37, 0x38, 0x3A, 0x3B, + 0x3D, 0x3F, 0x40, 0x41, 0x43, 0x64, 0x63, 0x62, 0x02, 0x61, 0x81, 0x60, 0x5F, 0x02, 0x5E, 0x02, + 0x5D, 0x80, 0x5C, 0x02, 0x5B, 0x80, 0x5A, 0x02, 0x59, 0x02, 0x58, 0x03, 0x57, 0x02, 0x56, 0x03, + 0x55, 0x03, 0x54, 0x04, 0x53, 0x04, 0x52, 0x07, 0x51, 0x0A, 0x50, 0x81, 0x4F, 0x50, 0x10, 0x4F, + 0x0F, 0x50, 0x0B, 0x51, 0x07, 0x52, 0x07, 0x53, 0x03, 0x54, 0x03, 0x9E, 0x05, 0x9C, 0x02, 0x9B, + 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x03, 0x94, 0x80, 0x80, + 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x80, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, + 0x02, 0x73, 0x02, 0x72, 0x80, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, + 0x03, 0x20, 0x02, 0x1F, 0x02, 0x1E, 0x03, 0x1B, 0x80, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, + 0x80, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x80, 0x08, 0x02, 0x09, 0x81, 0x0A, 0x0C, 0x02, + 0x0D, 0x80, 0x0E, 0x02, 0x0F, 0x80, 0x10, 0x02, 0x11, 0x81, 0x12, 0x13, 0x02, 0x23, 0x80, 0x24, + 0x02, 0x25, 0x82, 0x26, 0x27, 0x28, 0x02, 0x29, 0x82, 0x2A, 0x2B, 0x2C, 0x02, 0x2D, 0x02, 0x2F, + 0x8E, 0x30, 0x32, 0x36, 0x37, 0x39, 0x3A, 0x3C, 0x3E, 0x3F, 0x41, 0x42, 0x43, 0x64, 0x63, 0x62, + 0x02, 0x61, 0x02, 0x5F, 0x80, 0x5E, 0x02, 0x5D, 0x80, 0x5C, 0x02, 0x5B, 0x80, 0x5A, 0x02, 0x59, + 0x02, 0x58, 0x02, 0x57, 0x03, 0x56, 0x03, 0x55, 0x03, 0x54, 0x03, 0x53, 0x03, 0x52, 0x07, 0x51, + 0x08, 0x50, 0x1D, 0x4F, 0x81, 0x50, 0x4F, 0x0A, 0x50, 0x0B, 0x51, 0x07, 0x52, 0x05, 0x53, 0x02, + 0x54, 0x03, 0x9E, 0x06, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x80, 0x97, 0x03, + 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, + 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, + 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, + 0x1A, 0x02, 0x19, 0x02, 0x18, 0x80, 0x03, 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x81, 0x07, 0x08, + 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x80, 0x0D, 0x02, 0x0E, 0x81, 0x0F, 0x10, 0x02, 0x11, 0x81, + 0x12, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, 0x25, 0x82, 0x26, 0x27, 0x28, 0x02, 0x29, 0x94, 0x2A, + 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x36, 0x38, 0x39, 0x3B, 0x3C, 0x3E, 0x40, 0x41, + 0x43, 0x64, 0x63, 0x62, 0x02, 0x61, 0x82, 0x60, 0x5F, 0x5E, 0x02, 0x5D, 0x80, 0x5C, 0x02, 0x5B, + 0x80, 0x5A, 0x02, 0x59, 0x02, 0x58, 0x02, 0x57, 0x02, 0x56, 0x03, 0x55, 0x03, 0x54, 0x03, 0x53, + 0x03, 0x52, 0x05, 0x51, 0x07, 0x50, 0x0E, 0x4F, 0x05, 0x4E, 0x80, 0x4F, 0x03, 0x4E, 0x12, 0x4F, + 0x09, 0x50, 0x0A, 0x51, 0x05, 0x52, 0x06, 0x53, 0x04, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, + 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, + 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, + 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, + 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, + 0x02, 0x05, 0x81, 0x06, 0x07, 0x02, 0x08, 0x81, 0x09, 0x0A, 0x02, 0x0C, 0x80, 0x0D, 0x02, 0x0E, + 0x81, 0x0F, 0x10, 0x02, 0x11, 0x81, 0x12, 0x13, 0x02, 0x23, 0x81, 0x24, 0x25, 0x02, 0x26, 0x81, + 0x27, 0x28, 0x02, 0x29, 0x97, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x35, 0x36, 0x38, + 0x3A, 0x3B, 0x3D, 0x3F, 0x41, 0x42, 0x43, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5F, 0x02, 0x5E, 0x81, + 0x5D, 0x5C, 0x02, 0x5B, 0x80, 0x5A, 0x02, 0x59, 0x02, 0x58, 0x02, 0x57, 0x02, 0x56, 0x03, 0x55, + 0x02, 0x54, 0x03, 0x53, 0x03, 0x52, 0x05, 0x51, 0x05, 0x50, 0x08, 0x4F, 0x1C, 0x4E, 0x0D, 0x4F, + 0x09, 0x50, 0x08, 0x51, 0x06, 0x52, 0x03, 0x53, 0x04, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, + 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x80, 0x7F, + 0x03, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, + 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x03, 0x6C, 0x02, 0x21, 0x03, 0x20, + 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x80, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, + 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x82, 0x08, 0x09, 0x0A, 0x02, 0x0C, 0x80, 0x0D, 0x02, 0x0E, + 0x80, 0x0F, 0x02, 0x10, 0x82, 0x11, 0x12, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, 0x25, 0x82, 0x26, + 0x27, 0x28, 0x02, 0x29, 0x93, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x35, 0x37, 0x39, + 0x3A, 0x3C, 0x3E, 0x3F, 0x41, 0x43, 0x64, 0x63, 0x62, 0x02, 0x61, 0x82, 0x60, 0x5F, 0x5E, 0x02, + 0x5D, 0x81, 0x5C, 0x5B, 0x02, 0x5A, 0x80, 0x59, 0x02, 0x58, 0x02, 0x57, 0x02, 0x56, 0x02, 0x55, + 0x03, 0x54, 0x02, 0x53, 0x03, 0x52, 0x04, 0x51, 0x05, 0x50, 0x06, 0x4F, 0x13, 0x4E, 0x80, 0x4D, + 0x13, 0x4E, 0x0A, 0x4F, 0x08, 0x50, 0x08, 0x51, 0x06, 0x52, 0x80, 0x53, 0x05, 0x9E, 0x05, 0x9C, + 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, + 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, + 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, + 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, + 0x80, 0x03, 0x02, 0x04, 0x80, 0x05, 0x02, 0x06, 0x81, 0x07, 0x08, 0x02, 0x09, 0x81, 0x0A, 0x0C, + 0x02, 0x0D, 0x81, 0x0E, 0x0F, 0x02, 0x10, 0x82, 0x11, 0x12, 0x13, 0x02, 0x23, 0x80, 0x24, 0x02, + 0x25, 0x82, 0x26, 0x27, 0x28, 0x02, 0x29, 0x97, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x32, + 0x35, 0x37, 0x39, 0x3B, 0x3C, 0x3E, 0x40, 0x42, 0x43, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5F, 0x5E, + 0x02, 0x5D, 0x81, 0x5C, 0x5B, 0x02, 0x5A, 0x02, 0x59, 0x80, 0x58, 0x02, 0x57, 0x02, 0x56, 0x02, + 0x55, 0x02, 0x54, 0x03, 0x53, 0x02, 0x52, 0x04, 0x51, 0x04, 0x50, 0x06, 0x4F, 0x09, 0x4E, 0x19, + 0x4D, 0x0C, 0x4E, 0x09, 0x4F, 0x08, 0x50, 0x07, 0x51, 0x05, 0x52, 0x05, 0x9E, 0x05, 0x9C, 0x02, + 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x80, 0x94, 0x03, + 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, + 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, + 0x21, 0x02, 0x20, 0x03, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x80, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x02, + 0x03, 0x80, 0x04, 0x02, 0x05, 0x82, 0x06, 0x07, 0x08, 0x02, 0x09, 0x80, 0x0A, 0x02, 0x0C, 0x81, + 0x0D, 0x0E, 0x02, 0x0F, 0x81, 0x10, 0x11, 0x02, 0x12, 0x82, 0x13, 0x23, 0x24, 0x02, 0x25, 0x82, + 0x26, 0x27, 0x28, 0x02, 0x29, 0x8F, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x32, 0x36, 0x37, + 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x42, 0x02, 0x64, 0x80, 0x63, 0x02, 0x61, 0x02, 0x5F, 0x82, 0x5E, + 0x5D, 0x5C, 0x02, 0x5B, 0x80, 0x5A, 0x02, 0x59, 0x80, 0x58, 0x02, 0x57, 0x02, 0x56, 0x02, 0x55, + 0x02, 0x54, 0x02, 0x53, 0x03, 0x52, 0x03, 0x51, 0x04, 0x50, 0x04, 0x4F, 0x07, 0x4E, 0x25, 0x4D, + 0x09, 0x4E, 0x09, 0x4F, 0x07, 0x50, 0x07, 0x51, 0x03, 0x52, 0x05, 0x9E, 0x06, 0x9C, 0x02, 0x9B, + 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, + 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, + 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, + 0x03, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x02, 0x03, + 0x80, 0x04, 0x02, 0x05, 0x80, 0x06, 0x02, 0x07, 0x82, 0x08, 0x09, 0x0A, 0x02, 0x0C, 0x80, 0x0D, + 0x02, 0x0E, 0x82, 0x0F, 0x10, 0x11, 0x02, 0x12, 0x81, 0x13, 0x23, 0x02, 0x24, 0x83, 0x25, 0x26, + 0x27, 0x28, 0x02, 0x29, 0x98, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x31, 0x32, 0x36, 0x38, 0x3A, + 0x3C, 0x3D, 0x3F, 0x41, 0x43, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x02, 0x5B, + 0x80, 0x5A, 0x02, 0x59, 0x80, 0x58, 0x02, 0x57, 0x80, 0x56, 0x03, 0x55, 0x02, 0x54, 0x02, 0x53, + 0x02, 0x52, 0x04, 0x51, 0x03, 0x50, 0x04, 0x4F, 0x05, 0x4E, 0x0C, 0x4D, 0x11, 0x4C, 0x02, 0x4D, + 0x80, 0x4C, 0x0C, 0x4D, 0x0A, 0x4E, 0x08, 0x4F, 0x06, 0x50, 0x06, 0x51, 0x02, 0x52, 0x06, 0x9E, + 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, + 0x03, 0x94, 0x80, 0x80, 0x03, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, + 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x80, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, + 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, + 0x02, 0x18, 0x80, 0x03, 0x02, 0x04, 0x02, 0x05, 0x83, 0x06, 0x07, 0x08, 0x09, 0x02, 0x0A, 0x80, + 0x0C, 0x02, 0x0D, 0x82, 0x0E, 0x0F, 0x10, 0x02, 0x11, 0x82, 0x12, 0x13, 0x23, 0x02, 0x24, 0x83, + 0x25, 0x26, 0x27, 0x28, 0x02, 0x29, 0x91, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x31, 0x32, 0x37, + 0x39, 0x3A, 0x3C, 0x3E, 0x40, 0x42, 0x43, 0x64, 0x63, 0x02, 0x61, 0x86, 0x60, 0x5F, 0x5E, 0x5D, + 0x5C, 0x5B, 0x5A, 0x02, 0x59, 0x80, 0x58, 0x02, 0x57, 0x02, 0x56, 0x80, 0x55, 0x02, 0x54, 0x02, + 0x53, 0x03, 0x52, 0x03, 0x51, 0x03, 0x50, 0x03, 0x4F, 0x05, 0x4E, 0x08, 0x4D, 0x21, 0x4C, 0x0B, + 0x4D, 0x08, 0x4E, 0x07, 0x4F, 0x06, 0x50, 0x06, 0x51, 0x06, 0x9E, 0x06, 0x9C, 0x02, 0x9B, 0x02, + 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, + 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, + 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, + 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, + 0x04, 0x02, 0x05, 0x81, 0x06, 0x07, 0x02, 0x08, 0x82, 0x09, 0x0A, 0x0C, 0x02, 0x0D, 0x81, 0x0E, + 0x0F, 0x02, 0x10, 0x82, 0x11, 0x12, 0x13, 0x02, 0x23, 0x83, 0x24, 0x25, 0x26, 0x27, 0x02, 0x28, + 0x99, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x31, 0x35, 0x37, 0x39, 0x3B, 0x3C, 0x3E, 0x41, + 0x42, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x02, 0x5A, 0x80, 0x59, 0x02, + 0x58, 0x81, 0x57, 0x56, 0x03, 0x55, 0x80, 0x54, 0x02, 0x53, 0x02, 0x52, 0x03, 0x51, 0x03, 0x50, + 0x03, 0x4F, 0x04, 0x4E, 0x06, 0x4D, 0x09, 0x4C, 0x15, 0x4B, 0x0C, 0x4C, 0x0A, 0x4D, 0x07, 0x4E, + 0x07, 0x4F, 0x06, 0x50, 0x04, 0x51, 0x07, 0x9E, 0x05, 0x9C, 0x03, 0x9B, 0x80, 0x9A, 0x03, 0x99, + 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x80, 0x7F, 0x03, 0x7E, + 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, + 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x80, 0x18, 0x02, 0x03, 0x02, 0x04, 0x81, 0x05, + 0x06, 0x02, 0x07, 0x82, 0x08, 0x09, 0x0A, 0x02, 0x0C, 0x81, 0x0D, 0x0E, 0x02, 0x0F, 0x83, 0x10, + 0x11, 0x12, 0x13, 0x02, 0x23, 0x83, 0x24, 0x25, 0x26, 0x27, 0x02, 0x28, 0x93, 0x29, 0x2A, 0x2B, + 0x2C, 0x2D, 0x2F, 0x30, 0x31, 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x64, 0x63, 0x62, + 0x61, 0x02, 0x5F, 0x02, 0x5D, 0x83, 0x5C, 0x5B, 0x5A, 0x59, 0x02, 0x58, 0x80, 0x57, 0x02, 0x56, + 0x80, 0x55, 0x02, 0x54, 0x02, 0x53, 0x02, 0x52, 0x02, 0x51, 0x03, 0x50, 0x03, 0x4F, 0x04, 0x4E, + 0x05, 0x4D, 0x05, 0x4C, 0x22, 0x4B, 0x09, 0x4C, 0x0A, 0x4D, 0x07, 0x4E, 0x06, 0x4F, 0x06, 0x50, + 0x02, 0x51, 0x08, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, + 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, + 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x80, 0x71, 0x02, 0x6F, + 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, + 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, 0x82, 0x06, 0x07, 0x08, + 0x02, 0x09, 0x82, 0x0A, 0x0C, 0x0D, 0x02, 0x0E, 0x82, 0x0F, 0x10, 0x11, 0x02, 0x12, 0x84, 0x13, + 0x23, 0x24, 0x25, 0x26, 0x02, 0x27, 0x9A, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2F, 0x30, 0x31, + 0x35, 0x37, 0x39, 0x3B, 0x3D, 0x3F, 0x41, 0x43, 0x64, 0x62, 0x61, 0x60, 0x5F, 0x5E, 0x5D, 0x5C, + 0x5B, 0x5A, 0x02, 0x59, 0x81, 0x58, 0x57, 0x02, 0x56, 0x80, 0x55, 0x02, 0x54, 0x02, 0x53, 0x80, + 0x52, 0x03, 0x51, 0x02, 0x50, 0x03, 0x4F, 0x03, 0x4E, 0x05, 0x4D, 0x04, 0x4C, 0x0C, 0x4B, 0x11, + 0x4A, 0x0E, 0x4B, 0x08, 0x4C, 0x08, 0x4D, 0x07, 0x4E, 0x06, 0x4F, 0x06, 0x50, 0x80, 0x9F, 0x07, + 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, + 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, + 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, + 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, + 0x19, 0x02, 0x18, 0x80, 0x03, 0x02, 0x04, 0x81, 0x05, 0x06, 0x02, 0x07, 0x82, 0x08, 0x09, 0x0A, + 0x02, 0x0C, 0x83, 0x0D, 0x0E, 0x0F, 0x10, 0x02, 0x11, 0x83, 0x12, 0x13, 0x23, 0x24, 0x02, 0x25, + 0x97, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2F, 0x30, 0x31, 0x35, 0x37, 0x3A, 0x3B, + 0x3E, 0x40, 0x42, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5F, 0x02, 0x5D, 0x80, 0x5B, 0x02, 0x5A, 0x81, + 0x59, 0x58, 0x02, 0x57, 0x81, 0x56, 0x55, 0x02, 0x54, 0x02, 0x53, 0x80, 0x52, 0x03, 0x51, 0x02, + 0x50, 0x03, 0x4F, 0x02, 0x4E, 0x05, 0x4D, 0x04, 0x4C, 0x07, 0x4B, 0x1E, 0x4A, 0x0C, 0x4B, 0x06, + 0x4C, 0x08, 0x4D, 0x07, 0x4E, 0x06, 0x4F, 0x04, 0x50, 0x80, 0x9F, 0x08, 0x9E, 0x05, 0x9C, 0x02, + 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x02, 0x94, 0x02, + 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x03, 0x7D, 0x80, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x03, 0x77, 0x80, + 0x74, 0x02, 0x73, 0x02, 0x72, 0x80, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, + 0x21, 0x02, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x02, + 0x03, 0x80, 0x04, 0x02, 0x05, 0x84, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x02, 0x0C, 0x81, 0x0D, 0x0E, + 0x02, 0x0F, 0x84, 0x10, 0x11, 0x12, 0x13, 0x23, 0x02, 0x24, 0x9E, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2A, 0x2B, 0x2C, 0x2D, 0x2F, 0x30, 0x31, 0x35, 0x37, 0x3A, 0x3C, 0x3E, 0x40, 0x42, 0x64, 0x63, + 0x61, 0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x02, 0x57, 0x80, 0x56, 0x02, 0x55, + 0x80, 0x54, 0x02, 0x53, 0x80, 0x52, 0x02, 0x51, 0x03, 0x50, 0x02, 0x4F, 0x03, 0x4E, 0x03, 0x4D, + 0x04, 0x4C, 0x06, 0x4B, 0x0C, 0x4A, 0x06, 0x49, 0x80, 0x4A, 0x04, 0x49, 0x10, 0x4A, 0x0A, 0x4B, + 0x06, 0x4C, 0x08, 0x4D, 0x06, 0x4E, 0x06, 0x4F, 0x02, 0x50, 0x02, 0x9F, 0x07, 0x9E, 0x05, 0x9C, + 0x02, 0x9B, 0x03, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x80, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, + 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, + 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, + 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x02, 0x18, + 0x80, 0x03, 0x02, 0x04, 0x83, 0x05, 0x06, 0x07, 0x08, 0x02, 0x09, 0x81, 0x0A, 0x0C, 0x02, 0x0D, + 0x85, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x02, 0x23, 0x9C, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, + 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x30, 0x32, 0x35, 0x38, 0x3A, 0x3C, 0x3F, 0x41, 0x43, 0x64, 0x62, + 0x61, 0x60, 0x5F, 0x5E, 0x5D, 0x5B, 0x5A, 0x02, 0x59, 0x82, 0x58, 0x57, 0x56, 0x02, 0x55, 0x80, + 0x54, 0x02, 0x53, 0x80, 0x52, 0x02, 0x51, 0x02, 0x50, 0x02, 0x4F, 0x03, 0x4E, 0x03, 0x4D, 0x03, + 0x4C, 0x05, 0x4B, 0x08, 0x4A, 0x1A, 0x49, 0x0C, 0x4A, 0x09, 0x4B, 0x06, 0x4C, 0x07, 0x4D, 0x07, + 0x4E, 0x05, 0x4F, 0x80, 0x50, 0x03, 0x9F, 0x07, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, + 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x03, 0x94, 0x80, 0x80, 0x03, 0x7F, 0x02, + 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, + 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, + 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x02, 0x03, 0x81, 0x04, 0x05, + 0x02, 0x06, 0x83, 0x07, 0x08, 0x09, 0x0A, 0x02, 0x0C, 0x83, 0x0D, 0x0E, 0x0F, 0x10, 0x02, 0x11, + 0xA3, 0x12, 0x13, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x30, + 0x32, 0x36, 0x38, 0x3A, 0x3D, 0x3F, 0x41, 0x43, 0x64, 0x62, 0x61, 0x60, 0x5E, 0x5D, 0x5C, 0x5B, + 0x5A, 0x59, 0x58, 0x57, 0x56, 0x02, 0x55, 0x81, 0x54, 0x53, 0x02, 0x52, 0x02, 0x51, 0x02, 0x50, + 0x02, 0x4F, 0x02, 0x4E, 0x03, 0x4D, 0x03, 0x4C, 0x04, 0x4B, 0x06, 0x4A, 0x0D, 0x49, 0x80, 0x48, + 0x05, 0x49, 0x80, 0x48, 0x11, 0x49, 0x0A, 0x4A, 0x08, 0x4B, 0x06, 0x4C, 0x07, 0x4D, 0x05, 0x4E, + 0x05, 0x4F, 0x03, 0x9F, 0x07, 0x9E, 0x05, 0x9C, 0x03, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, + 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, + 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, + 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x03, 0x1E, + 0x80, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x80, 0x18, 0x02, 0x03, 0x02, 0x04, 0x83, 0x05, 0x06, 0x07, + 0x08, 0x02, 0x09, 0x83, 0x0A, 0x0C, 0x0D, 0x0E, 0x02, 0x0F, 0xA1, 0x10, 0x11, 0x12, 0x13, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x30, 0x32, 0x36, 0x38, 0x3B, + 0x3D, 0x3F, 0x42, 0x43, 0x63, 0x62, 0x61, 0x5F, 0x5E, 0x5D, 0x5B, 0x5A, 0x59, 0x02, 0x58, 0x83, + 0x57, 0x56, 0x55, 0x54, 0x02, 0x53, 0x80, 0x52, 0x02, 0x51, 0x80, 0x50, 0x02, 0x4F, 0x03, 0x4E, + 0x02, 0x4D, 0x03, 0x4C, 0x04, 0x4B, 0x04, 0x4A, 0x09, 0x49, 0x17, 0x48, 0x0D, 0x49, 0x09, 0x4A, + 0x07, 0x4B, 0x06, 0x4C, 0x07, 0x4D, 0x05, 0x4E, 0x03, 0x4F, 0x04, 0x9F, 0x07, 0x9E, 0x05, 0x9C, + 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, + 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, + 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x02, 0x6D, 0x02, 0x6C, + 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, + 0x02, 0x03, 0x80, 0x04, 0x02, 0x05, 0x02, 0x07, 0x83, 0x08, 0x09, 0x0A, 0x0C, 0x02, 0x0D, 0x85, + 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x02, 0x23, 0xA0, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2B, + 0x2C, 0x2D, 0x2E, 0x30, 0x32, 0x36, 0x39, 0x3B, 0x3D, 0x40, 0x42, 0x64, 0x63, 0x61, 0x60, 0x5F, + 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x02, 0x53, 0x80, 0x52, 0x02, 0x51, + 0x80, 0x50, 0x02, 0x4F, 0x02, 0x4E, 0x03, 0x4D, 0x02, 0x4C, 0x03, 0x4B, 0x04, 0x4A, 0x07, 0x49, + 0x22, 0x48, 0x0A, 0x49, 0x08, 0x4A, 0x08, 0x4B, 0x05, 0x4C, 0x07, 0x4D, 0x05, 0x4E, 0x80, 0x4F, + 0x04, 0x9F, 0x08, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, + 0x03, 0x96, 0x80, 0x95, 0x02, 0x94, 0x02, 0x80, 0x03, 0x7F, 0x80, 0x7E, 0x03, 0x7D, 0x02, 0x7B, + 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x80, 0x74, 0x02, 0x73, 0x02, 0x72, 0x02, 0x71, 0x80, 0x6F, + 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x02, 0x1F, 0x03, 0x1E, 0x02, 0x1B, + 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x81, 0x03, 0x04, 0x02, 0x05, 0x82, 0x06, 0x07, 0x08, 0x02, + 0x09, 0x85, 0x0A, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x02, 0x11, 0xA0, 0x12, 0x13, 0x23, 0x24, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2D, 0x2E, 0x30, 0x32, 0x36, 0x38, 0x3B, 0x3D, 0x40, 0x42, + 0x64, 0x62, 0x61, 0x5F, 0x5E, 0x5D, 0x5C, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x02, 0x55, 0x82, 0x54, + 0x53, 0x52, 0x02, 0x51, 0x80, 0x50, 0x02, 0x4F, 0x02, 0x4E, 0x02, 0x4D, 0x02, 0x4C, 0x03, 0x4B, + 0x04, 0x4A, 0x04, 0x49, 0x08, 0x48, 0x17, 0x47, 0x0C, 0x48, 0x09, 0x49, 0x08, 0x4A, 0x07, 0x4B, + 0x05, 0x4C, 0x06, 0x4D, 0x05, 0x4E, 0x05, 0x9F, 0x07, 0x9E, 0x05, 0x9C, 0x03, 0x9B, 0x02, 0x9A, + 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, + 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x03, 0x78, 0x02, 0x77, 0x80, 0x74, 0x02, 0x73, + 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, + 0x02, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x80, 0x18, 0x02, 0x03, 0x80, 0x04, + 0x02, 0x05, 0x85, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x02, 0x0D, 0xA8, 0x0E, 0x0F, 0x10, 0x11, + 0x12, 0x13, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2D, 0x2E, 0x30, 0x31, 0x36, + 0x39, 0x3B, 0x3E, 0x40, 0x43, 0x64, 0x62, 0x61, 0x5F, 0x5E, 0x5D, 0x5B, 0x5A, 0x59, 0x58, 0x57, + 0x56, 0x55, 0x54, 0x53, 0x52, 0x02, 0x51, 0x80, 0x50, 0x02, 0x4F, 0x80, 0x4E, 0x03, 0x4D, 0x80, + 0x4C, 0x03, 0x4B, 0x03, 0x4A, 0x05, 0x49, 0x06, 0x48, 0x21, 0x47, 0x0A, 0x48, 0x07, 0x49, 0x08, + 0x4A, 0x07, 0x4B, 0x05, 0x4C, 0x06, 0x4D, 0x03, 0x4E, 0x05, 0x9F, 0x08, 0x9E, 0x05, 0x9C, 0x02, + 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x80, 0x98, 0x02, 0x97, 0x03, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, + 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, + 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, 0x02, 0x6D, 0x02, 0x6C, 0x02, + 0x21, 0x02, 0x20, 0x03, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x02, + 0x03, 0x82, 0x04, 0x05, 0x06, 0x02, 0x07, 0x87, 0x08, 0x09, 0x0A, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, + 0x02, 0x11, 0xA2, 0x13, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2E, 0x2F, + 0x31, 0x36, 0x39, 0x3B, 0x3E, 0x41, 0x43, 0x64, 0x62, 0x60, 0x5F, 0x5D, 0x5C, 0x5B, 0x59, 0x58, + 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x02, 0x51, 0x80, 0x50, 0x02, 0x4F, 0x80, 0x4E, 0x02, 0x4D, + 0x02, 0x4C, 0x02, 0x4B, 0x03, 0x4A, 0x04, 0x49, 0x04, 0x48, 0x0E, 0x47, 0x81, 0x46, 0x47, 0x06, + 0x46, 0x81, 0x47, 0x46, 0x12, 0x47, 0x09, 0x48, 0x07, 0x49, 0x07, 0x4A, 0x07, 0x4B, 0x04, 0x4C, + 0x06, 0x4D, 0x02, 0x4E, 0x06, 0x9F, 0x07, 0x9E, 0x06, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, + 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, 0x80, 0x95, 0x03, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, + 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, 0x02, 0x72, + 0x02, 0x71, 0x80, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, 0x03, 0x1F, + 0x02, 0x1E, 0x02, 0x1B, 0x80, 0x1A, 0x02, 0x19, 0x02, 0x18, 0x81, 0x03, 0x04, 0x02, 0x05, 0x85, + 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, 0x02, 0x0D, 0xA1, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x29, 0x2A, 0x2B, 0x2C, 0x2E, 0x2F, 0x31, 0x36, 0x39, 0x3B, 0x3E, 0x41, + 0x43, 0x63, 0x61, 0x60, 0x5E, 0x5D, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x02, 0x55, 0x80, 0x53, 0x02, + 0x52, 0x81, 0x51, 0x50, 0x02, 0x4F, 0x80, 0x4E, 0x02, 0x4D, 0x02, 0x4C, 0x02, 0x4B, 0x02, 0x4A, + 0x03, 0x49, 0x04, 0x48, 0x08, 0x47, 0x19, 0x46, 0x0F, 0x47, 0x08, 0x48, 0x08, 0x49, 0x06, 0x4A, + 0x06, 0x4B, 0x05, 0x4C, 0x06, 0x4D, 0x07, 0x9F, 0x07, 0x9E, 0x05, 0x9C, 0x03, 0x9B, 0x02, 0x9A, + 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x03, 0x94, 0x80, 0x80, 0x02, 0x7F, + 0x02, 0x7E, 0x02, 0x7D, 0x03, 0x7B, 0x02, 0x7A, 0x02, 0x78, 0x02, 0x77, 0x02, 0x74, 0x80, 0x73, + 0x02, 0x72, 0x80, 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x03, 0x21, 0x02, 0x20, + 0x02, 0x1F, 0x03, 0x1E, 0x80, 0x1B, 0x02, 0x1A, 0x02, 0x19, 0x80, 0x18, 0x02, 0x03, 0x80, 0x04, + 0x02, 0x05, 0x02, 0x07, 0xAD, 0x08, 0x09, 0x0A, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2B, 0x2C, 0x2D, 0x2F, 0x31, 0x35, 0x39, 0x3B, 0x3E, + 0x41, 0x43, 0x63, 0x61, 0x5F, 0x5E, 0x5D, 0x5B, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, + 0x51, 0x50, 0x4F, 0x02, 0x4E, 0x02, 0x4D, 0x80, 0x4C, 0x02, 0x4B, 0x02, 0x4A, 0x03, 0x49, 0x04, + 0x48, 0x06, 0x47, 0x23, 0x46, 0x0C, 0x47, 0x08, 0x48, 0x06, 0x49, 0x07, 0x4A, 0x07, 0x4B, 0x04, + 0x4C, 0x04, 0x4D, 0x08, 0x9F, 0x07, 0x9E, 0x05, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x03, 0x99, 0x02, + 0x98, 0x02, 0x97, 0x02, 0x96, 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, + 0x7D, 0x02, 0x7B, 0x03, 0x7A, 0x80, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, + 0x71, 0x02, 0x6F, 0x02, 0x6E, 0x80, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x02, + 0x1E, 0x02, 0x1B, 0x02, 0x1A, 0x80, 0x19, 0x02, 0x18, 0x02, 0x03, 0x86, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x02, 0x0C, 0xA7, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x23, 0x24, 0x25, + 0x27, 0x28, 0x29, 0x2A, 0x2C, 0x2D, 0x2F, 0x31, 0x35, 0x38, 0x3B, 0x3E, 0x41, 0x64, 0x63, 0x61, + 0x5F, 0x5D, 0x5C, 0x5A, 0x59, 0x58, 0x57, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4F, 0x02, 0x4E, + 0x80, 0x4D, 0x02, 0x4C, 0x02, 0x4B, 0x02, 0x4A, 0x02, 0x49, 0x03, 0x48, 0x06, 0x47, 0x2B, 0x46, + 0x0A, 0x47, 0x07, 0x48, 0x06, 0x49, 0x07, 0x4A, 0x06, 0x4B, 0x04, 0x4C, 0x03, 0x4D, 0x08, 0x9F, + 0x07, 0x9E, 0x06, 0x9C, 0x02, 0x9B, 0x02, 0x9A, 0x02, 0x99, 0x02, 0x98, 0x02, 0x97, 0x03, 0x96, + 0x02, 0x95, 0x02, 0x94, 0x02, 0x80, 0x02, 0x7F, 0x02, 0x7E, 0x02, 0x7D, 0x02, 0x7B, 0x02, 0x7A, + 0x02, 0x78, 0x03, 0x77, 0x80, 0x74, 0x02, 0x73, 0x80, 0x72, 0x02, 0x71, 0x02, 0x6F, 0x80, 0x6E, + 0x02, 0x6D, 0x02, 0x6C, 0x02, 0x21, 0x03, 0x20, 0x02, 0x1F, 0x02, 0x1E, 0x02, 0x1B, 0x02, 0x1A, + 0x80, 0x19, 0x02, 0x18, 0x80, 0x03, 0x02, 0x04, 0xAC, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0C, + 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x23, 0x24, 0x25, 0x26, 0x27, 0x29, 0x2A, 0x2B, 0x2D, + 0x2F, 0x30, 0x35, 0x38, 0x3B, 0x3F, 0x41, 0x64, 0x62, 0x61, 0x5F, 0x5D, 0x5B, 0x5A, 0x59, 0x57, + 0x56, 0x55, 0x54, 0x52, 0x51, 0x50, 0x02, 0x4F, 0x81, 0x4E, 0x4D, 0x02, 0x4C, 0x80, 0x4B, 0x02, + 0x4A, 0x02, 0x49, 0x03, 0x48, 0x05, 0x47, 0x09, 0x46, 0x16, 0x45, 0x11, 0x46, 0x0B, 0x47, 0x06, + 0x48, 0x07, 0x49, 0x06, 0x4A, 0x05, 0x4B, 0x05, 0x4C, 0x81, 0x4D, 0xDA, 0x08, 0x9F, 0x07, 0x9E, + 0x05, 0x9C, 0x83, 0x9B, 0x70, 0x1C, 0x16, 0x52, 0x14, 0x1B, 0x15, 0x51, 0x14, 0x82, 0x15, 0x17, + 0x33, 0x07, 0x49, 0x05, 0x4A, 0x06, 0x4B, 0x04, 0x4C, 0x80, 0xDA, 0x08, 0x9F, 0x08, 0x9E, 0x04, + 0x9C, 0x81, 0x1D, 0x14, 0x7F, 0x00, 0x44, 0x00, 0x81, 0x1C, 0x48, 0x06, 0x49, 0x06, 0x4A, 0x05, + 0x4B, 0x03, 0x4C, 0x02, 0xDA, 0x08, 0x9F, 0x08, 0x9E, 0x02, 0x9C, 0x81, 0x70, 0x14, 0x7F, 0x00, + 0x46, 0x00, 0x80, 0x33, 0x02, 0x48, 0x06, 0x49, 0x06, 0x4A, 0x05, 0x4B, 0x80, 0x4C, 0x03, 0xDA, + 0x08, 0x9F, 0x07, 0x9E, 0x02, 0x9C, 0x80, 0x17, 0x7F, 0x00, 0x47, 0x00, 0x80, 0x17, 0x04, 0x48, + 0x06, 0x49, 0x05, 0x4A, 0x05, 0x4B, 0x03, 0xDA, 0x09, 0x9F, 0x07, 0x9E, 0x81, 0x9C, 0x14, 0x7F, + 0x00, 0x47, 0x00, 0x80, 0x14, 0x05, 0x48, 0x06, 0x49, 0x06, 0x4A, 0x03, 0x4B, 0x04, 0xDA, 0x09, + 0x9F, 0x07, 0x9E, 0x7F, 0x00, 0x49, 0x00, 0x80, 0x47, 0x06, 0x48, 0x06, 0x49, 0x05, 0x4A, 0x02, + 0x4B, 0x05, 0xDA, 0x08, 0x9F, 0x07, 0x9E, 0x7F, 0x00, 0x49, 0x00, 0x03, 0x47, 0x06, 0x48, 0x05, + 0x49, 0x05, 0x4A, 0x80, 0x4B, 0x06, 0xDA, 0x08, 0x9F, 0x06, 0x9E, 0x7F, 0x00, 0x49, 0x00, 0x05, + 0x47, 0x05, 0x48, 0x05, 0x49, 0x05, 0x4A, 0x07, 0xDA, 0x08, 0x9F, 0x05, 0x9E, 0x7F, 0x00, 0x49, + 0x00, 0x06, 0x47, 0x05, 0x48, 0x06, 0x49, 0x03, 0x4A, 0x07, 0xDA, 0x09, 0x9F, 0x04, 0x9E, 0x7F, + 0x00, 0x49, 0x00, 0x80, 0x46, 0x07, 0x47, 0x05, 0x48, 0x05, 0x49, 0x02, 0x4A, 0x08, 0xDA, 0x09, + 0x9F, 0x03, 0x9E, 0x7F, 0x00, 0x49, 0x00, 0x02, 0x46, 0x07, 0x47, 0x05, 0x48, 0x05, 0x49, 0x80, + 0x4A, 0x09, 0xDA, 0x09, 0x9F, 0x02, 0x9E, 0x11, 0x00, 0x8E, 0x75, 0x76, 0x15, 0x00, 0x1C, 0x76, + 0x17, 0x00, 0x17, 0x76, 0x1C, 0x00, 0x14, 0x76, 0x75, 0x02, 0x00, 0x82, 0x1D, 0x76, 0x15, 0x7F, + 0x00, 0x24, 0x00, 0x03, 0x46, 0x07, 0x47, 0x05, 0x48, 0x05, 0x49, 0x0A, 0xDA, 0x09, 0x9F, 0x80, + 0x9E, 0x11, 0x00, 0x93, 0x76, 0x81, 0x16, 0x00, 0x1D, 0x81, 0x1C, 0x00, 0x1C, 0x81, 0x75, 0x00, + 0x15, 0x81, 0x76, 0x14, 0x00, 0x76, 0x81, 0x17, 0x4B, 0x00, 0x82, 0x15, 0x75, 0x16, 0x05, 0x00, + 0x82, 0x16, 0x76, 0x15, 0x4D, 0x00, 0x05, 0x46, 0x07, 0x47, 0x05, 0x48, 0x03, 0x49, 0x0B, 0xDA, + 0x09, 0x9F, 0x11, 0x00, 0x93, 0x76, 0x81, 0x16, 0x00, 0x1D, 0x81, 0x1C, 0x00, 0x1C, 0x81, 0x75, + 0x00, 0x15, 0x81, 0x76, 0x14, 0x00, 0x76, 0x81, 0x17, 0x11, 0x00, 0x80, 0x1C, 0x02, 0x8A, 0x02, + 0x81, 0x81, 0x1D, 0x14, 0x33, 0x00, 0x82, 0x17, 0xA2, 0x17, 0x05, 0x00, 0x82, 0x17, 0xAB, 0x17, + 0x4D, 0x00, 0x07, 0x46, 0x06, 0x47, 0x05, 0x48, 0x02, 0x49, 0x0C, 0xDA, 0x08, 0x9F, 0x0F, 0x00, + 0x8E, 0x14, 0x15, 0x76, 0x81, 0x17, 0x15, 0x75, 0x81, 0x1C, 0x15, 0x1C, 0x81, 0x75, 0x15, 0x17, + 0x02, 0x81, 0x02, 0x15, 0x83, 0x76, 0x81, 0x17, 0x14, 0x10, 0x00, 0x81, 0x75, 0xA1, 0x02, 0x1C, + 0x82, 0x75, 0xA1, 0x76, 0x33, 0x00, 0x82, 0x17, 0xA2, 0x17, 0x05, 0x00, 0x82, 0x17, 0xAB, 0x17, + 0x4D, 0x00, 0x08, 0x46, 0x06, 0x47, 0x05, 0x48, 0x81, 0x49, 0xD9, 0x0C, 0xDA, 0x07, 0x9F, 0x0D, + 0x00, 0x82, 0x15, 0x76, 0xA1, 0x15, 0xAB, 0x82, 0xA2, 0x81, 0x1C, 0x0E, 0x00, 0x82, 0x75, 0xA1, + 0x14, 0x02, 0x00, 0x82, 0x75, 0xA2, 0x17, 0x03, 0x00, 0x82, 0x14, 0x15, 0x14, 0x13, 0x00, 0x81, + 0x15, 0x14, 0x07, 0x00, 0x80, 0x15, 0x04, 0x00, 0x81, 0x14, 0x15, 0x06, 0x00, 0x85, 0x14, 0x15, + 0x00, 0x17, 0xA2, 0x17, 0x05, 0x00, 0x85, 0x17, 0xAB, 0x17, 0x00, 0x15, 0x14, 0x4A, 0x00, 0x80, + 0x45, 0x08, 0x46, 0x07, 0x47, 0x04, 0x48, 0x02, 0xD9, 0x0C, 0xDA, 0x06, 0x9F, 0x0C, 0x00, 0x81, + 0x15, 0x8A, 0x19, 0xA2, 0x81, 0xA1, 0x1C, 0x0D, 0x00, 0x82, 0x75, 0xA1, 0x14, 0x02, 0x00, 0x85, + 0x1C, 0xA2, 0x1C, 0x00, 0x15, 0x76, 0x03, 0xA1, 0x84, 0x75, 0x14, 0x00, 0x75, 0x81, 0x03, 0x00, + 0x81, 0x76, 0x81, 0x03, 0x00, 0x81, 0x75, 0x81, 0x02, 0x00, 0x81, 0x1C, 0x8A, 0x02, 0xA1, 0x81, + 0x75, 0x14, 0x02, 0x00, 0x87, 0x81, 0x1C, 0x76, 0xA1, 0x75, 0x00, 0x15, 0x76, 0x02, 0xA1, 0x81, + 0x8A, 0x17, 0x03, 0x00, 0x86, 0x1C, 0x8A, 0xA1, 0x8A, 0x1D, 0xA2, 0x17, 0x05, 0x00, 0x83, 0x17, + 0xAB, 0x1C, 0x81, 0x02, 0xA1, 0x84, 0x1D, 0x00, 0x15, 0xA1, 0x1C, 0x03, 0x00, 0x82, 0x1C, 0xA1, + 0x15, 0x3F, 0x00, 0x02, 0x45, 0x08, 0x46, 0x07, 0x47, 0x03, 0x48, 0x03, 0xD9, 0x0C, 0xDA, 0x05, + 0x9F, 0x0C, 0x00, 0x80, 0x75, 0x1B, 0xA2, 0x81, 0x8A, 0x14, 0x0C, 0x00, 0x82, 0x75, 0xA1, 0x14, + 0x02, 0x00, 0x93, 0x1D, 0xA2, 0x16, 0x00, 0x81, 0x8A, 0x1C, 0x17, 0x1D, 0xA1, 0x75, 0x00, 0x1C, + 0xA2, 0x15, 0x00, 0x14, 0xA1, 0xA2, 0x16, 0x02, 0x00, 0x89, 0x8A, 0x75, 0x00, 0x1C, 0xA1, 0x1C, + 0x15, 0x1C, 0xA1, 0x75, 0x02, 0x00, 0x82, 0x8A, 0xA1, 0x76, 0x02, 0x1C, 0x80, 0x14, 0x02, 0x81, + 0x8D, 0x17, 0x15, 0x75, 0xA1, 0x15, 0x00, 0x17, 0xA2, 0x75, 0x17, 0x1D, 0xA1, 0xA2, 0x17, 0x05, + 0x00, 0x88, 0x17, 0xA2, 0xA1, 0x1D, 0x17, 0x75, 0xA2, 0x1C, 0x00, 0x02, 0x81, 0x03, 0x00, 0x81, + 0x76, 0x81, 0x40, 0x00, 0x04, 0x45, 0x07, 0x46, 0x07, 0x47, 0x02, 0x48, 0x04, 0xD9, 0x0C, 0xDA, + 0x04, 0x9F, 0x0C, 0x00, 0x80, 0x8A, 0x1C, 0xA2, 0x80, 0x17, 0x0C, 0x00, 0x81, 0x75, 0xA1, 0x02, + 0x17, 0x86, 0x1D, 0xA1, 0x76, 0x00, 0x1C, 0xA2, 0x17, 0x03, 0x00, 0x87, 0x75, 0xA1, 0x00, 0x15, + 0xA1, 0x1C, 0x00, 0x1C, 0x02, 0xA1, 0x87, 0x1C, 0x00, 0x17, 0xAB, 0x17, 0x00, 0x81, 0x75, 0x03, + 0x00, 0x81, 0x75, 0x8A, 0x02, 0x00, 0x02, 0x8A, 0x80, 0x14, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x16, + 0x02, 0x00, 0x86, 0x14, 0xA1, 0x1C, 0x00, 0x75, 0x8A, 0x14, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x17, + 0x05, 0x00, 0x82, 0x17, 0xA2, 0x1C, 0x02, 0x00, 0x8A, 0x14, 0x8A, 0x76, 0x00, 0x1C, 0xA2, 0x16, + 0x00, 0x15, 0xA1, 0x1C, 0x40, 0x00, 0x05, 0x45, 0x08, 0x46, 0x06, 0x47, 0x80, 0x48, 0x05, 0xD9, + 0x0C, 0xDA, 0x03, 0x9F, 0x0B, 0x00, 0x81, 0x14, 0xA1, 0x1C, 0xA2, 0x80, 0x1C, 0x0C, 0x00, 0x80, + 0x75, 0x02, 0xA2, 0x87, 0xA1, 0x8A, 0x75, 0x14, 0x00, 0x1D, 0xA1, 0x14, 0x03, 0x00, 0x87, 0x1C, + 0xA2, 0x15, 0x00, 0x81, 0x76, 0x00, 0x75, 0x03, 0x76, 0x82, 0x00, 0x1D, 0x8A, 0x02, 0x14, 0x81, + 0xA1, 0x81, 0x03, 0x75, 0x85, 0x81, 0xA1, 0x14, 0x00, 0x8A, 0x75, 0x03, 0x00, 0x81, 0x1D, 0xA1, + 0x04, 0x75, 0x84, 0xA1, 0x75, 0x00, 0x81, 0x76, 0x03, 0x00, 0x82, 0x17, 0xA2, 0x17, 0x05, 0x00, + 0x82, 0x17, 0xAB, 0x17, 0x03, 0x00, 0x89, 0x76, 0x81, 0x00, 0x15, 0xA1, 0x1D, 0x00, 0x1C, 0xA1, + 0x15, 0x40, 0x00, 0x06, 0x45, 0x08, 0x46, 0x06, 0x47, 0x06, 0xD9, 0x0C, 0xDA, 0x02, 0x9F, 0x08, + 0x00, 0x80, 0x75, 0x03, 0x81, 0x80, 0xA1, 0x05, 0xA2, 0x82, 0x8A, 0x81, 0x8A, 0x04, 0xA2, 0x82, + 0xA1, 0x81, 0x8A, 0x04, 0xA2, 0x82, 0xA1, 0x81, 0x8A, 0x06, 0xA2, 0x80, 0x8A, 0x02, 0x81, 0x81, + 0x76, 0x14, 0x08, 0x00, 0x81, 0x75, 0xA1, 0x02, 0x14, 0x04, 0x00, 0x81, 0x75, 0xA1, 0x04, 0x00, + 0x91, 0x1C, 0xA2, 0x16, 0x00, 0x1D, 0xA1, 0x14, 0x81, 0x1D, 0x1C, 0xA1, 0x14, 0x81, 0x75, 0x00, + 0x14, 0xAB, 0x76, 0x04, 0x1D, 0x80, 0x1C, 0x02, 0x00, 0x81, 0x8A, 0x75, 0x03, 0x00, 0x81, 0x75, + 0xA1, 0x05, 0x1D, 0x83, 0x17, 0x00, 0x81, 0x76, 0x03, 0x00, 0x82, 0x17, 0xA2, 0x17, 0x05, 0x00, + 0x82, 0x17, 0xAB, 0x17, 0x03, 0x00, 0x81, 0x76, 0x81, 0x02, 0x00, 0x84, 0x76, 0x8A, 0x00, 0x81, + 0x76, 0x41, 0x00, 0x07, 0x45, 0x08, 0x46, 0x05, 0x47, 0x07, 0xD9, 0x0C, 0xDA, 0x80, 0x9F, 0x08, + 0x00, 0x80, 0x75, 0x03, 0x81, 0x06, 0xA2, 0x82, 0x1C, 0x00, 0x1C, 0x04, 0xA2, 0x83, 0x75, 0x00, + 0x16, 0xAB, 0x03, 0xA2, 0x80, 0x76, 0x02, 0x00, 0x80, 0xA1, 0x05, 0xA2, 0x80, 0x8A, 0x03, 0x81, + 0x80, 0x14, 0x08, 0x00, 0x82, 0x75, 0xA1, 0x14, 0x05, 0x00, 0x82, 0x1C, 0xA2, 0x16, 0x03, 0x00, + 0x8D, 0x75, 0xA1, 0x14, 0x00, 0x17, 0xA2, 0x1C, 0xA1, 0x17, 0x15, 0xA1, 0x1C, 0xA1, 0x1C, 0x02, + 0x00, 0x81, 0xA1, 0x75, 0x07, 0x00, 0x81, 0x8A, 0x75, 0x03, 0x00, 0x82, 0x1C, 0xA2, 0x15, 0x06, + 0x00, 0x02, 0x81, 0x03, 0x00, 0x82, 0x17, 0xA2, 0x17, 0x05, 0x00, 0x82, 0x17, 0xAB, 0x17, 0x03, + 0x00, 0x81, 0x8A, 0x76, 0x02, 0x00, 0x84, 0x1C, 0xA2, 0x1C, 0xA1, 0x1C, 0x41, 0x00, 0x09, 0x45, + 0x07, 0x46, 0x04, 0x47, 0x08, 0xD9, 0x0C, 0xDA, 0x08, 0x00, 0x80, 0x14, 0x03, 0x15, 0x80, 0xA1, + 0x05, 0xA2, 0x82, 0x1C, 0x00, 0x1C, 0x04, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x03, 0xA2, 0x80, + 0x76, 0x02, 0x00, 0x80, 0xA1, 0x05, 0xA2, 0x80, 0x1C, 0x02, 0x15, 0x80, 0x14, 0x09, 0x00, 0x82, + 0x75, 0xA1, 0x14, 0x05, 0x00, 0x87, 0x15, 0xA1, 0x76, 0x14, 0x00, 0x17, 0xA1, 0x75, 0x03, 0x00, + 0x03, 0x8A, 0x02, 0x00, 0x83, 0x81, 0x8A, 0xA1, 0x14, 0x02, 0x00, 0x82, 0x75, 0x8A, 0x16, 0x02, + 0x00, 0x81, 0x15, 0x17, 0x02, 0x00, 0x81, 0x8A, 0x75, 0x03, 0x00, 0x83, 0x15, 0xA1, 0x75, 0x14, + 0x02, 0x00, 0x8A, 0x17, 0x14, 0x00, 0x1D, 0xA2, 0x1C, 0x00, 0x17, 0x8A, 0xA2, 0x17, 0x05, 0x00, + 0x87, 0x17, 0xA2, 0x8A, 0x16, 0x00, 0x1C, 0xA2, 0x1C, 0x02, 0x00, 0x80, 0x14, 0x02, 0x8A, 0x81, + 0xA1, 0x14, 0x41, 0x00, 0x80, 0x65, 0x09, 0x45, 0x07, 0x46, 0x03, 0x47, 0x09, 0xD9, 0x0B, 0xDA, + 0x0B, 0x00, 0x81, 0x14, 0xA1, 0x05, 0xA2, 0x82, 0x1C, 0x00, 0x1C, 0x04, 0xA2, 0x83, 0x75, 0x00, + 0x15, 0xAB, 0x03, 0xA2, 0x80, 0x76, 0x02, 0x00, 0x80, 0xA1, 0x05, 0xA2, 0x80, 0x1C, 0x0C, 0x00, + 0x82, 0x75, 0xA1, 0x14, 0x06, 0x00, 0x80, 0x1C, 0x02, 0xA1, 0x83, 0x8A, 0xA1, 0x76, 0x14, 0x03, + 0x00, 0x82, 0x75, 0xA2, 0x76, 0x02, 0x00, 0x82, 0x75, 0xA2, 0x76, 0x03, 0x00, 0x86, 0x15, 0x81, + 0xA1, 0x81, 0x8A, 0xA1, 0x75, 0x02, 0x00, 0x81, 0x8A, 0x75, 0x04, 0x00, 0x8F, 0x1C, 0xA1, 0x8A, + 0x81, 0x8A, 0xA1, 0x16, 0x00, 0x14, 0x81, 0xA1, 0x8A, 0xA1, 0x1D, 0xA2, 0x17, 0x05, 0x00, 0x86, + 0x17, 0xA1, 0x75, 0xA1, 0x8A, 0xA2, 0x76, 0x04, 0x00, 0x82, 0x75, 0xA2, 0x75, 0x42, 0x00, 0x02, + 0x65, 0x09, 0x45, 0x07, 0x46, 0x02, 0x47, 0x0A, 0xD9, 0x0A, 0xDA, 0x08, 0x00, 0x80, 0x1C, 0x03, + 0x75, 0x80, 0xA1, 0x05, 0xA2, 0x82, 0x1C, 0x00, 0x1C, 0x04, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, + 0x03, 0xA2, 0x80, 0x76, 0x02, 0x00, 0x80, 0xA1, 0x05, 0xA2, 0x80, 0x76, 0x03, 0x75, 0x80, 0x14, + 0x08, 0x00, 0x81, 0x15, 0x17, 0x08, 0x00, 0x80, 0x15, 0x02, 0x1C, 0x80, 0x17, 0x05, 0x00, 0x82, + 0x15, 0x1C, 0x15, 0x02, 0x00, 0x82, 0x15, 0x1C, 0x15, 0x05, 0x00, 0x80, 0x17, 0x02, 0x1C, 0x80, + 0x16, 0x03, 0x00, 0x81, 0x17, 0x16, 0x05, 0x00, 0x80, 0x15, 0x03, 0x1C, 0x80, 0x14, 0x03, 0x00, + 0x80, 0x14, 0x02, 0x1C, 0x83, 0x16, 0x00, 0x17, 0x14, 0x05, 0x00, 0x85, 0x14, 0x17, 0x00, 0x17, + 0x1C, 0x17, 0x05, 0x00, 0x82, 0x1C, 0xA2, 0x17, 0x42, 0x00, 0x03, 0x65, 0x09, 0x45, 0x07, 0x46, + 0x80, 0x47, 0x0B, 0xD9, 0x09, 0xDA, 0x08, 0x00, 0x80, 0x75, 0x03, 0x81, 0x06, 0xA2, 0x82, 0x1C, + 0x00, 0x1C, 0x04, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x03, 0xA2, 0x80, 0x76, 0x02, 0x00, 0x80, + 0xA1, 0x05, 0xA2, 0x80, 0x8A, 0x03, 0x81, 0x80, 0x15, 0x55, 0x00, 0x81, 0x76, 0x8A, 0x43, 0x00, + 0x04, 0x65, 0x09, 0x45, 0x07, 0x46, 0x0C, 0xD9, 0x08, 0xDA, 0x08, 0x00, 0x80, 0x16, 0x03, 0x1C, + 0x80, 0xA1, 0x05, 0xA2, 0x82, 0x1C, 0x00, 0x1C, 0x04, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x03, + 0xA2, 0x80, 0x76, 0x02, 0x00, 0x80, 0xA1, 0x05, 0xA2, 0x80, 0x75, 0x02, 0x1C, 0x80, 0x17, 0x55, + 0x00, 0x82, 0x15, 0xA1, 0x75, 0x43, 0x00, 0x05, 0x65, 0x09, 0x45, 0x06, 0x46, 0x0E, 0xD9, 0x06, + 0xDA, 0x0B, 0x00, 0x81, 0x14, 0xA1, 0x05, 0xA2, 0x82, 0x1C, 0x00, 0x1C, 0x04, 0xA2, 0x83, 0x75, + 0x00, 0x15, 0xAB, 0x03, 0xA2, 0x80, 0x76, 0x02, 0x00, 0x80, 0xA1, 0x05, 0xA2, 0x80, 0x1C, 0x58, + 0x00, 0x82, 0x14, 0x1C, 0x14, 0x43, 0x00, 0x06, 0x65, 0x09, 0x45, 0x05, 0x46, 0x80, 0xD8, 0x0E, + 0xD9, 0x05, 0xDA, 0x08, 0x00, 0x80, 0x17, 0x03, 0x1C, 0x80, 0xA1, 0x05, 0xA2, 0x82, 0x1C, 0x00, + 0x1C, 0x04, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x03, 0xA2, 0x83, 0x76, 0x00, 0x14, 0xA1, 0x05, + 0xA2, 0x80, 0x75, 0x03, 0x1C, 0x7F, 0x00, 0x1C, 0x00, 0x07, 0x65, 0x09, 0x45, 0x04, 0x46, 0x80, + 0xD8, 0x0F, 0xD9, 0x04, 0xDA, 0x08, 0x00, 0x80, 0x75, 0x03, 0x81, 0x06, 0xA2, 0x83, 0x1D, 0x00, + 0x16, 0xAB, 0x03, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x03, 0xA2, 0x82, 0x75, 0x00, 0x15, 0x06, + 0xA2, 0x80, 0x8A, 0x03, 0x81, 0x80, 0x15, 0x0C, 0x00, 0x80, 0x15, 0x02, 0x17, 0x80, 0x15, 0x08, + 0x00, 0x02, 0x14, 0x0B, 0x00, 0x80, 0x14, 0x05, 0x00, 0x02, 0x14, 0x05, 0x00, 0x02, 0x14, 0x09, + 0x00, 0x06, 0x14, 0x03, 0x00, 0x82, 0x16, 0x1C, 0x14, 0x51, 0x00, 0x08, 0x65, 0x08, 0x45, 0x04, + 0x46, 0x02, 0xD8, 0x10, 0xD9, 0x02, 0xDA, 0x08, 0x00, 0x80, 0x1C, 0x03, 0x1D, 0x80, 0xA1, 0x05, + 0xA2, 0x80, 0x76, 0x02, 0x00, 0x80, 0x81, 0x03, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x02, 0xA2, + 0x83, 0xA1, 0x17, 0x00, 0x1C, 0x06, 0xA2, 0x80, 0x76, 0x03, 0x1D, 0x80, 0x14, 0x0A, 0x00, 0x82, + 0x1C, 0x81, 0xA1, 0x02, 0xAB, 0x82, 0xA1, 0x81, 0x1C, 0x05, 0x00, 0x80, 0x1C, 0x02, 0xA1, 0x81, + 0x81, 0x14, 0x07, 0x00, 0x81, 0x14, 0x81, 0x02, 0xA1, 0x80, 0x16, 0x03, 0x00, 0x82, 0x8A, 0xA1, + 0x14, 0x03, 0x00, 0x83, 0x16, 0x8A, 0xA1, 0x16, 0x07, 0x00, 0x80, 0x81, 0x06, 0xA1, 0x80, 0x76, + 0x02, 0x00, 0x82, 0x81, 0xA2, 0x1D, 0x51, 0x00, 0x09, 0x65, 0x09, 0x45, 0x02, 0x46, 0x04, 0xD8, + 0x0F, 0xD9, 0x80, 0xDA, 0x0B, 0x00, 0x81, 0x14, 0xA1, 0x05, 0xA2, 0x84, 0xA1, 0x15, 0x00, 0x17, + 0x8A, 0x02, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x02, 0xA2, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x81, + 0x06, 0xA2, 0x80, 0x1C, 0x0D, 0x00, 0x83, 0x75, 0xA2, 0xA1, 0x76, 0x02, 0x75, 0x80, 0x81, 0x02, + 0xA2, 0x80, 0x1D, 0x04, 0x00, 0x84, 0x1D, 0xA2, 0xA1, 0xA2, 0x1C, 0x07, 0x00, 0x84, 0x1C, 0xA2, + 0xA1, 0xA2, 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x80, 0x14, 0x02, 0x00, 0x83, 0x14, 0x81, 0xA2, 0x1D, + 0x08, 0x00, 0x81, 0x8A, 0xA2, 0x05, 0x76, 0x80, 0x1C, 0x02, 0x00, 0x82, 0x75, 0x8A, 0x17, 0x51, + 0x00, 0x80, 0x66, 0x09, 0x65, 0x08, 0x45, 0x02, 0x46, 0x05, 0xD8, 0x0F, 0xD9, 0x08, 0x00, 0x80, + 0x15, 0x02, 0x16, 0x81, 0x17, 0xA1, 0x06, 0xA2, 0x80, 0x76, 0x02, 0x00, 0x88, 0x15, 0x75, 0x81, + 0x1D, 0x00, 0x15, 0x81, 0x75, 0x17, 0x02, 0x00, 0x80, 0x1D, 0x07, 0xA2, 0x80, 0x1D, 0x02, 0x16, + 0x80, 0x15, 0x09, 0x00, 0x83, 0x1C, 0xA2, 0x8A, 0x17, 0x04, 0x00, 0x83, 0x1C, 0xA1, 0xA2, 0x17, + 0x03, 0x00, 0x84, 0x1D, 0xA2, 0x76, 0xA2, 0x81, 0x07, 0x00, 0x84, 0x81, 0xA1, 0x76, 0xA2, 0x1C, + 0x03, 0x00, 0x02, 0xA1, 0x80, 0x14, 0x02, 0x00, 0x82, 0x76, 0xA2, 0x76, 0x09, 0x00, 0x82, 0x8A, + 0xA2, 0x15, 0x5B, 0x00, 0x02, 0x66, 0x09, 0x65, 0x08, 0x45, 0x80, 0x46, 0x06, 0xD8, 0x0E, 0xD9, + 0x08, 0x00, 0x80, 0x75, 0x03, 0x81, 0x08, 0xA2, 0x81, 0x76, 0x15, 0x09, 0x00, 0x81, 0x14, 0x75, + 0x08, 0xA2, 0x80, 0x8A, 0x03, 0x81, 0x80, 0x14, 0x07, 0x00, 0x83, 0x14, 0x8A, 0xA2, 0x17, 0x06, + 0x00, 0x82, 0x1D, 0xA2, 0x76, 0x03, 0x00, 0x85, 0x1D, 0xA2, 0x75, 0x81, 0xA2, 0x17, 0x05, 0x00, + 0x85, 0x17, 0xA2, 0x75, 0x76, 0xA2, 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x85, 0x14, 0x00, 0x1D, 0xA2, + 0x81, 0x14, 0x09, 0x00, 0x82, 0x8A, 0xA2, 0x15, 0x07, 0x00, 0x82, 0x15, 0x17, 0x14, 0x02, 0x00, + 0x83, 0x14, 0x17, 0x14, 0x00, 0x02, 0x1C, 0x88, 0x15, 0x00, 0x14, 0x17, 0x14, 0x00, 0x17, 0x1C, + 0x17, 0x03, 0x00, 0x80, 0x14, 0x02, 0x1C, 0x80, 0x15, 0x03, 0x00, 0x82, 0x14, 0x17, 0x15, 0x04, + 0x00, 0x81, 0x16, 0x17, 0x05, 0x00, 0x81, 0x17, 0x16, 0x03, 0x00, 0x80, 0x15, 0x03, 0x1C, 0x80, + 0x14, 0x04, 0x00, 0x86, 0x14, 0x17, 0x14, 0x00, 0x17, 0x1C, 0x15, 0x03, 0x00, 0x81, 0x14, 0x17, + 0x02, 0x1C, 0x80, 0x14, 0x0B, 0x00, 0x03, 0x66, 0x09, 0x65, 0x08, 0x45, 0x08, 0xD8, 0x0C, 0xD9, + 0x08, 0x00, 0x80, 0x1D, 0x03, 0x76, 0x80, 0xA1, 0x08, 0xA2, 0x84, 0xA1, 0x75, 0x1C, 0x17, 0x15, + 0x02, 0x00, 0x83, 0x17, 0x1C, 0x75, 0x8A, 0x09, 0xA2, 0x80, 0x81, 0x03, 0x76, 0x80, 0x14, 0x07, + 0x00, 0x82, 0x1C, 0xA2, 0x81, 0x07, 0x00, 0x80, 0x15, 0x02, 0xA1, 0x80, 0x14, 0x02, 0x00, 0x85, + 0x1D, 0xA2, 0x75, 0x1C, 0xA2, 0x75, 0x05, 0x00, 0x85, 0x76, 0xA2, 0x17, 0x76, 0xA2, 0x1C, 0x03, + 0x00, 0x02, 0xA1, 0x84, 0x14, 0x17, 0xA1, 0x8A, 0x15, 0x0A, 0x00, 0x82, 0x8A, 0xA2, 0x15, 0x07, + 0x00, 0x82, 0x75, 0xA2, 0x17, 0x02, 0x00, 0x83, 0x1C, 0xA2, 0x1C, 0x81, 0x02, 0xA2, 0x85, 0x75, + 0x00, 0x1C, 0xA2, 0x1C, 0x76, 0x03, 0xA2, 0x83, 0x81, 0x15, 0x17, 0x8A, 0x02, 0xA2, 0x81, 0xA1, + 0x1C, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x76, 0x04, 0x00, 0x82, 0x8A, 0xA2, 0x17, 0x03, 0x00, 0x86, + 0x17, 0xA2, 0x76, 0x00, 0x15, 0x76, 0xA1, 0x03, 0xA2, 0x81, 0xA1, 0x1C, 0x03, 0x00, 0x83, 0x1C, + 0xA2, 0x1C, 0x76, 0x02, 0xA2, 0x80, 0x75, 0x02, 0x00, 0x81, 0x1C, 0x8A, 0x03, 0xA2, 0x81, 0xA1, + 0x1C, 0x0A, 0x00, 0x04, 0x66, 0x09, 0x65, 0x07, 0x45, 0x09, 0xD8, 0x0B, 0xD9, 0x0B, 0x00, 0x81, + 0x14, 0xA1, 0x0C, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x0C, 0xA2, 0x80, 0x1C, 0x0B, 0x00, 0x82, + 0x1D, 0xA2, 0x75, 0x08, 0x00, 0x82, 0x8A, 0xA2, 0x17, 0x02, 0x00, 0x86, 0x1D, 0xA2, 0x75, 0x14, + 0xA1, 0x8A, 0x14, 0x03, 0x00, 0x86, 0x15, 0xA1, 0x81, 0x00, 0x76, 0xA2, 0x1C, 0x03, 0x00, 0x02, + 0xA1, 0x83, 0x17, 0x8A, 0xA1, 0x17, 0x0B, 0x00, 0x82, 0x8A, 0xA2, 0x15, 0x07, 0x00, 0x82, 0x75, + 0xA2, 0x17, 0x02, 0x00, 0x94, 0x1C, 0xA2, 0x8A, 0xA1, 0x75, 0x1D, 0x1C, 0x00, 0x1C, 0xA2, 0x8A, + 0xA1, 0x1D, 0x1C, 0x81, 0xA2, 0x81, 0xA1, 0x76, 0x1C, 0x1D, 0x02, 0xA1, 0x84, 0x15, 0x00, 0x15, + 0xA1, 0x8A, 0x03, 0x00, 0x80, 0x17, 0x02, 0xA2, 0x80, 0x1D, 0x03, 0x00, 0x86, 0x75, 0xA2, 0x1C, + 0x00, 0x1C, 0x8A, 0x1D, 0x02, 0x17, 0x80, 0x1D, 0x02, 0xA1, 0x80, 0x14, 0x02, 0x00, 0x90, 0x1C, + 0xA2, 0x8A, 0xA1, 0x75, 0x1D, 0x1C, 0x00, 0x1C, 0xA2, 0x8A, 0x1C, 0x16, 0x1C, 0x8A, 0xA1, 0x17, + 0x09, 0x00, 0x05, 0x66, 0x09, 0x65, 0x06, 0x45, 0x0A, 0xD8, 0x0A, 0xD9, 0x0B, 0x00, 0x81, 0x14, + 0xA1, 0x0C, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x0C, 0xA2, 0x80, 0x1C, 0x0B, 0x00, 0x82, 0x75, + 0xA2, 0x1D, 0x08, 0x00, 0x82, 0x81, 0xA2, 0x1C, 0x02, 0x00, 0x86, 0x1D, 0xA2, 0x75, 0x00, 0x75, + 0xA2, 0x1C, 0x03, 0x00, 0x86, 0x1D, 0xA2, 0x1C, 0x00, 0x76, 0xA2, 0x1C, 0x03, 0x00, 0x02, 0xA1, + 0x82, 0x81, 0xA2, 0x1C, 0x0C, 0x00, 0x81, 0x8A, 0xA2, 0x05, 0x1D, 0x80, 0x16, 0x02, 0x00, 0x82, + 0x75, 0xA2, 0x17, 0x02, 0x00, 0x80, 0x1C, 0x02, 0xA2, 0x80, 0x1C, 0x04, 0x00, 0x83, 0x1C, 0xA2, + 0x8A, 0x17, 0x02, 0x00, 0x80, 0x17, 0x02, 0xA2, 0x80, 0x75, 0x03, 0x00, 0x82, 0x75, 0xA2, 0x1C, + 0x02, 0x00, 0x82, 0x81, 0xAB, 0x17, 0x02, 0x00, 0x80, 0x1D, 0x02, 0xA2, 0x80, 0x81, 0x03, 0x00, + 0x83, 0x81, 0xA1, 0x15, 0x00, 0x02, 0x14, 0x04, 0x00, 0x82, 0x76, 0xA2, 0x17, 0x02, 0x00, 0x80, + 0x1C, 0x02, 0xA2, 0x80, 0x1C, 0x04, 0x00, 0x82, 0x81, 0xA1, 0x15, 0x03, 0x00, 0x82, 0x17, 0xA2, + 0x76, 0x09, 0x00, 0x06, 0x66, 0x08, 0x65, 0x06, 0x45, 0x0C, 0xD8, 0x08, 0xD9, 0x08, 0x00, 0x80, + 0x1D, 0x03, 0x76, 0x80, 0xA1, 0x0C, 0xA2, 0x83, 0x75, 0x00, 0x15, 0xAB, 0x0C, 0xA2, 0x80, 0x81, + 0x03, 0x76, 0x80, 0x14, 0x07, 0x00, 0x82, 0x75, 0xA2, 0x1D, 0x08, 0x00, 0x82, 0x81, 0xA2, 0x1C, + 0x02, 0x00, 0x86, 0x1D, 0xA2, 0x75, 0x00, 0x17, 0xA2, 0x81, 0x03, 0x00, 0x86, 0x8A, 0xA1, 0x14, + 0x00, 0x76, 0xA2, 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x82, 0x76, 0xA2, 0x76, 0x0C, 0x00, 0x80, 0x8A, + 0x06, 0xA2, 0x80, 0x1C, 0x02, 0x00, 0x82, 0x75, 0xA2, 0x17, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x75, + 0x05, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x04, 0x00, 0x02, 0xA1, 0x80, 0x14, 0x03, 0x00, 0x82, 0x1D, + 0xA2, 0x1D, 0x02, 0x00, 0x82, 0x1D, 0xA2, 0x75, 0x02, 0x00, 0x88, 0x76, 0x8A, 0x81, 0xA1, 0x15, + 0x00, 0x15, 0xA1, 0x81, 0x08, 0x00, 0x82, 0x75, 0xA2, 0x1C, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x76, + 0x04, 0x00, 0x82, 0x16, 0xA2, 0x76, 0x04, 0x00, 0x82, 0x14, 0xA1, 0x8A, 0x09, 0x00, 0x80, 0x44, + 0x06, 0x66, 0x08, 0x65, 0x05, 0x45, 0x0D, 0xD8, 0x07, 0xD9, 0x08, 0x00, 0x80, 0x75, 0x03, 0x81, + 0x0D, 0xA2, 0x83, 0x81, 0x1D, 0x75, 0xAB, 0x0C, 0xA2, 0x80, 0x8A, 0x03, 0x81, 0x80, 0x14, 0x07, + 0x00, 0x82, 0x75, 0xA2, 0x75, 0x08, 0x00, 0x82, 0x81, 0xA2, 0x17, 0x02, 0x00, 0x82, 0x1D, 0xA2, + 0x75, 0x02, 0x00, 0x86, 0x8A, 0xA2, 0x16, 0x00, 0x1C, 0xA2, 0x75, 0x02, 0x00, 0x82, 0x76, 0xA2, + 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x83, 0x15, 0x8A, 0xA2, 0x1D, 0x0B, 0x00, 0x81, 0x8A, 0xA2, 0x05, + 0x17, 0x80, 0x14, 0x02, 0x00, 0x82, 0x75, 0xA2, 0x17, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x05, + 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x04, 0x00, 0x82, 0x8A, 0xA1, 0x14, 0x03, 0x00, 0x82, 0x1C, 0xA2, + 0x75, 0x02, 0x00, 0x8D, 0x16, 0xA2, 0x81, 0x00, 0x14, 0xA1, 0x75, 0x1D, 0xA2, 0x1C, 0x00, 0x1C, + 0xA2, 0x1D, 0x03, 0x00, 0x82, 0x14, 0x1C, 0x75, 0x02, 0x76, 0x82, 0x8A, 0xA2, 0x1C, 0x02, 0x00, + 0x82, 0x1C, 0xA2, 0x75, 0x04, 0x00, 0x82, 0x17, 0xA2, 0xA1, 0x05, 0x81, 0x02, 0xA1, 0x09, 0x00, + 0x02, 0x44, 0x05, 0x66, 0x09, 0x65, 0x04, 0x45, 0x80, 0xD7, 0x0E, 0xD8, 0x05, 0xD9, 0x08, 0x00, + 0x80, 0x14, 0x02, 0x15, 0x81, 0x16, 0xA1, 0x1C, 0xA2, 0x80, 0x1C, 0x03, 0x15, 0x08, 0x00, 0x82, + 0x1D, 0xA2, 0x76, 0x07, 0x00, 0x80, 0x14, 0x02, 0xA1, 0x80, 0x15, 0x02, 0x00, 0x82, 0x1D, 0xA2, + 0x75, 0x02, 0x00, 0x86, 0x1D, 0xA2, 0x75, 0x00, 0x76, 0xA2, 0x17, 0x02, 0x00, 0x82, 0x76, 0xA2, + 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x81, 0x14, 0x17, 0x02, 0xA1, 0x80, 0x17, 0x0A, 0x00, 0x82, 0x8A, + 0xA2, 0x15, 0x07, 0x00, 0x82, 0x75, 0xA2, 0x17, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x05, 0x00, + 0x82, 0x1C, 0xA2, 0x1D, 0x04, 0x00, 0x82, 0x8A, 0xA1, 0x14, 0x03, 0x00, 0x82, 0x1C, 0xA2, 0x75, + 0x03, 0x00, 0x8C, 0x81, 0xA2, 0x15, 0x17, 0xA2, 0x1C, 0x16, 0xA2, 0x76, 0x00, 0x76, 0xA2, 0x16, + 0x02, 0x00, 0x83, 0x16, 0x8A, 0xA2, 0x81, 0x02, 0x76, 0x82, 0x81, 0xA2, 0x1C, 0x02, 0x00, 0x82, + 0x1C, 0xA2, 0x75, 0x04, 0x00, 0x82, 0x1C, 0xA2, 0x8A, 0x06, 0x75, 0x80, 0x1C, 0x09, 0x00, 0x80, + 0x67, 0x02, 0x44, 0x05, 0x66, 0x09, 0x65, 0x03, 0x45, 0x02, 0xD7, 0x0E, 0xD8, 0x04, 0xD9, 0x0C, + 0x00, 0x80, 0x8A, 0x1C, 0xA2, 0x80, 0x1C, 0x0B, 0x00, 0x83, 0x17, 0xA2, 0x8A, 0x14, 0x06, 0x00, + 0x82, 0x1C, 0xA2, 0x81, 0x03, 0x00, 0x82, 0x1D, 0xA2, 0x75, 0x02, 0x00, 0x85, 0x15, 0xA1, 0x8A, + 0x16, 0xA1, 0x81, 0x03, 0x00, 0x82, 0x76, 0xA2, 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x85, 0x14, 0x00, + 0x1C, 0xA2, 0x8A, 0x15, 0x09, 0x00, 0x82, 0x8A, 0xA2, 0x15, 0x07, 0x00, 0x82, 0x75, 0xA2, 0x17, + 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x05, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x04, 0x00, 0x82, 0x8A, + 0xA1, 0x14, 0x03, 0x00, 0x82, 0x1C, 0xA2, 0x75, 0x03, 0x00, 0x86, 0x75, 0xA2, 0x1C, 0x75, 0xA2, + 0x15, 0x00, 0x02, 0x8A, 0x82, 0x14, 0xA1, 0x81, 0x03, 0x00, 0x82, 0x76, 0xA2, 0x1C, 0x03, 0x00, + 0x82, 0x75, 0xA2, 0x1C, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x75, 0x04, 0x00, 0x82, 0x17, 0xA2, 0x76, + 0x10, 0x00, 0x80, 0x67, 0x03, 0x44, 0x05, 0x66, 0x08, 0x65, 0x03, 0x45, 0x03, 0xD7, 0x0F, 0xD8, + 0x02, 0xD9, 0x0C, 0x00, 0x80, 0x76, 0x1B, 0xA2, 0x81, 0xA1, 0x14, 0x0C, 0x00, 0x82, 0x8A, 0xA2, + 0x1D, 0x05, 0x00, 0x83, 0x15, 0x8A, 0xA2, 0x1C, 0x03, 0x00, 0x82, 0x1D, 0xA2, 0x75, 0x03, 0x00, + 0x84, 0x76, 0xA2, 0x81, 0xA2, 0x1C, 0x03, 0x00, 0x82, 0x76, 0xA2, 0x1C, 0x03, 0x00, 0x02, 0xA1, + 0x80, 0x14, 0x02, 0x00, 0x82, 0x76, 0xA2, 0x76, 0x09, 0x00, 0x82, 0x8A, 0xA2, 0x15, 0x07, 0x00, + 0x82, 0x75, 0xA2, 0x17, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x05, 0x00, 0x82, 0x1C, 0xA2, 0x1D, + 0x04, 0x00, 0x82, 0x8A, 0xA1, 0x14, 0x03, 0x00, 0x82, 0x1C, 0xA2, 0x75, 0x03, 0x00, 0x82, 0x17, + 0xA2, 0x76, 0x02, 0x81, 0x02, 0x00, 0x84, 0x75, 0xA2, 0x1D, 0xAB, 0x75, 0x03, 0x00, 0x82, 0x8A, + 0xA1, 0x14, 0x03, 0x00, 0x82, 0x75, 0xA2, 0x1C, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x75, 0x04, 0x00, + 0x80, 0x14, 0x02, 0xA1, 0x80, 0x14, 0x0F, 0x00, 0x02, 0x67, 0x02, 0x44, 0x06, 0x66, 0x08, 0x65, + 0x02, 0x45, 0x04, 0xD7, 0x10, 0xD8, 0x0C, 0x00, 0x81, 0x16, 0xA1, 0x1A, 0xA2, 0x80, 0x1D, 0x0D, + 0x00, 0x80, 0x1C, 0x02, 0xA2, 0x81, 0x75, 0x16, 0x02, 0x14, 0x84, 0x1C, 0x8A, 0xA2, 0x81, 0x14, + 0x03, 0x00, 0x82, 0x1D, 0xA2, 0x75, 0x03, 0x00, 0x80, 0x1C, 0x02, 0xA2, 0x81, 0x8A, 0x14, 0x03, + 0x00, 0x82, 0x76, 0xA2, 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x80, 0x14, 0x02, 0x00, 0x83, 0x15, 0x8A, + 0xA2, 0x1D, 0x08, 0x00, 0x82, 0x8A, 0xA2, 0x15, 0x07, 0x00, 0x82, 0x75, 0xA2, 0x17, 0x02, 0x00, + 0x82, 0x1C, 0xA2, 0x1D, 0x05, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x04, 0x00, 0x82, 0x8A, 0xA1, 0x14, + 0x03, 0x00, 0x82, 0x1C, 0xA2, 0x75, 0x04, 0x00, 0x80, 0x8A, 0x02, 0xA1, 0x80, 0x75, 0x02, 0x00, + 0x84, 0x1C, 0xA2, 0xA1, 0xAB, 0x17, 0x03, 0x00, 0x82, 0x81, 0xA2, 0x1C, 0x02, 0x00, 0x83, 0x1C, + 0xA1, 0xA2, 0x1C, 0x02, 0x00, 0x82, 0x1C, 0xA2, 0x75, 0x05, 0x00, 0x83, 0x75, 0xA2, 0x76, 0x15, + 0x02, 0x00, 0x82, 0x14, 0x1C, 0x17, 0x09, 0x00, 0x03, 0x67, 0x02, 0x44, 0x05, 0x66, 0x09, 0x65, + 0x80, 0x45, 0x06, 0xD7, 0x0E, 0xD8, 0x0D, 0x00, 0x81, 0x17, 0x81, 0x17, 0xA2, 0x81, 0xA1, 0x1C, + 0x0F, 0x00, 0x84, 0x1C, 0xA1, 0xA2, 0xAB, 0xA1, 0x02, 0xA2, 0x03, 0xA1, 0x80, 0x1C, 0x03, 0x00, + 0x82, 0x1D, 0xA2, 0x75, 0x03, 0x00, 0x83, 0x14, 0x8A, 0xA2, 0x75, 0x04, 0x00, 0x82, 0x76, 0xA2, + 0x1C, 0x03, 0x00, 0x02, 0xA1, 0x80, 0x14, 0x03, 0x00, 0x80, 0x17, 0x02, 0xA1, 0x80, 0x17, 0x07, + 0x00, 0x82, 0x8A, 0xA2, 0x15, 0x07, 0x00, 0x82, 0x75, 0xA2, 0x17, 0x02, 0x00, 0x82, 0x1C, 0xA2, + 0x1D, 0x05, 0x00, 0x82, 0x1C, 0xA2, 0x1D, 0x04, 0x00, 0x82, 0x8A, 0xA1, 0x14, 0x03, 0x00, 0x82, + 0x1C, 0xA2, 0x75, 0x04, 0x00, 0x80, 0x75, 0x02, 0xA2, 0x80, 0x1C, 0x02, 0x00, 0x83, 0x14, 0xA1, + 0xA2, 0x8A, 0x04, 0x00, 0x88, 0x1C, 0xA1, 0xA2, 0x81, 0x8A, 0xA1, 0x76, 0xA2, 0x1C, 0x02, 0x00, + 0x82, 0x1C, 0xA2, 0x75, 0x05, 0x00, 0x83, 0x14, 0x81, 0xA2, 0xA1, 0x02, 0x8A, 0x82, 0xA1, 0xAB, + 0x1D, 0x09, 0x00, 0x80, 0x68, 0x03, 0x67, 0x02, 0x44, 0x05, 0x66, 0x09, 0x65, 0x07, 0xD7, 0x0D, + 0xD8, 0x0F, 0x00, 0x83, 0x16, 0x1C, 0x81, 0x8A, 0x02, 0x1C, 0x86, 0x75, 0x81, 0x75, 0x1C, 0x1D, + 0x81, 0x76, 0x02, 0x1C, 0x02, 0x81, 0x02, 0x1C, 0x02, 0x81, 0x82, 0x1C, 0x17, 0x14, 0x11, 0x00, + 0x82, 0x15, 0x1C, 0x75, 0x02, 0x76, 0x8A, 0x1D, 0x16, 0x1C, 0xA1, 0xA2, 0x81, 0x1C, 0x00, 0x17, + 0x75, 0x17, 0x04, 0x00, 0x82, 0x1C, 0x75, 0x15, 0x04, 0x00, 0x82, 0x1C, 0x75, 0x15, 0x03, 0x00, + 0x02, 0x1D, 0x80, 0x14, 0x04, 0x00, 0x82, 0x1C, 0x75, 0x17, 0x07, 0x00, 0x82, 0x1D, 0x75, 0x14, + 0x07, 0x00, 0x82, 0x1C, 0x75, 0x15, 0x02, 0x00, 0x82, 0x17, 0x75, 0x17, 0x05, 0x00, 0x82, 0x17, + 0x75, 0x17, 0x04, 0x00, 0x02, 0x1D, 0x04, 0x00, 0x82, 0x17, 0x75, 0x17, 0x04, 0x00, 0x80, 0x17, + 0x02, 0x75, 0x80, 0x14, 0x03, 0x00, 0x82, 0x1C, 0x75, 0x1C, 0x05, 0x00, 0x87, 0x17, 0x75, 0x76, + 0x75, 0x17, 0x15, 0x75, 0x16, 0x02, 0x00, 0x82, 0x16, 0x75, 0x1C, 0x07, 0x00, 0x81, 0x1C, 0x75, + 0x02, 0x76, 0x81, 0x75, 0x17, 0x0A, 0x00, 0x02, 0x68, 0x03, 0x67, 0x80, 0x44, 0x06, 0x66, 0x08, + 0x65, 0x80, 0xD6, 0x08, 0xD7, 0x0B, 0xD8, 0x11, 0x00, 0x93, 0x76, 0x81, 0x16, 0x00, 0x1D, 0x81, + 0x1C, 0x00, 0x1C, 0x81, 0x75, 0x00, 0x15, 0x81, 0x76, 0x14, 0x00, 0x76, 0x81, 0x17, 0x1B, 0x00, + 0x84, 0x16, 0x76, 0xA2, 0xA1, 0x15, 0x7F, 0x00, 0x04, 0x00, 0x02, 0x68, 0x03, 0x67, 0x02, 0x44, + 0x06, 0x66, 0x07, 0x65, 0x02, 0xD6, 0x09, 0xD7, 0x09, 0xD8, 0x11, 0x00, 0x93, 0x76, 0x81, 0x16, + 0x00, 0x1D, 0x81, 0x1C, 0x00, 0x1C, 0x81, 0x75, 0x00, 0x15, 0x81, 0x76, 0x14, 0x00, 0x76, 0x81, + 0x17, 0x1D, 0x00, 0x82, 0x17, 0x75, 0x14, 0x7F, 0x00, 0x04, 0x00, 0x03, 0x68, 0x03, 0x67, 0x03, + 0x44, 0x04, 0x66, 0x07, 0x65, 0x03, 0xD6, 0x09, 0xD7, 0x08, 0xD8, 0x11, 0x00, 0x8E, 0x75, 0x81, + 0x15, 0x00, 0x1C, 0x81, 0x1C, 0x00, 0x17, 0x81, 0x1D, 0x00, 0x14, 0x81, 0x76, 0x02, 0x00, 0x82, + 0x75, 0x81, 0x16, 0x7F, 0x00, 0x24, 0x00, 0x80, 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, 0x44, 0x05, + 0x66, 0x06, 0x65, 0x05, 0xD6, 0x09, 0xD7, 0x06, 0xD8, 0x12, 0x00, 0x80, 0x14, 0x03, 0x00, 0x80, + 0x14, 0x03, 0x00, 0x80, 0x14, 0x03, 0x00, 0x80, 0x14, 0x04, 0x00, 0x80, 0x14, 0x7F, 0x00, 0x25, + 0x00, 0x80, 0x69, 0x04, 0x68, 0x02, 0x67, 0x03, 0x44, 0x05, 0x66, 0x05, 0x65, 0x07, 0xD6, 0x09, + 0xD7, 0x04, 0xD8, 0x7F, 0x00, 0x49, 0x00, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, 0x44, 0x06, + 0x66, 0x04, 0x65, 0x02, 0xD5, 0x06, 0xD6, 0x0A, 0xD7, 0x02, 0xD8, 0x7F, 0x00, 0x49, 0x00, 0x03, + 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, 0x44, 0x05, 0x66, 0x04, 0x65, 0x03, 0xD5, 0x07, 0xD6, 0x0A, + 0xD7, 0x7F, 0x00, 0x49, 0x00, 0x80, 0x6A, 0x03, 0x69, 0x03, 0x68, 0x02, 0x67, 0x02, 0x44, 0x06, + 0x66, 0x03, 0x65, 0x05, 0xD5, 0x07, 0xD6, 0x08, 0xD7, 0x7F, 0x00, 0x49, 0x00, 0x02, 0x6A, 0x02, + 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, 0x44, 0x05, 0x66, 0x03, 0x65, 0x07, 0xD5, 0x07, 0xD6, 0x06, + 0xD7, 0x7F, 0x00, 0x49, 0x00, 0x80, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x02, 0x67, 0x02, + 0x44, 0x06, 0x66, 0x02, 0x65, 0x02, 0xD4, 0x06, 0xD5, 0x08, 0xD6, 0x04, 0xD7, 0x80, 0x16, 0x7F, + 0x00, 0x47, 0x00, 0x80, 0x15, 0x02, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, + 0x44, 0x05, 0x66, 0x02, 0x65, 0x04, 0xD4, 0x06, 0xD5, 0x08, 0xD6, 0x02, 0xD7, 0x80, 0x17, 0x7F, + 0x00, 0x47, 0x00, 0x80, 0x17, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, + 0x44, 0x05, 0x66, 0x80, 0x65, 0x06, 0xD4, 0x06, 0xD5, 0x08, 0xD6, 0x81, 0xD2, 0x14, 0x7F, 0x00, + 0x45, 0x00, 0x81, 0x14, 0x33, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x04, 0x68, 0x02, 0x67, 0x02, + 0x44, 0x06, 0x66, 0x80, 0xD3, 0x06, 0xD4, 0x07, 0xD5, 0x07, 0xD6, 0x81, 0x1D, 0x14, 0x7F, 0x00, + 0x43, 0x00, 0x81, 0x14, 0x33, 0x02, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x02, + 0x67, 0x03, 0x44, 0x05, 0x66, 0x02, 0xD3, 0x08, 0xD4, 0x07, 0xD5, 0x05, 0xD6, 0x81, 0xD3, 0x1C, + 0x7F, 0x16, 0x1D, 0x16, 0x24, 0x15, 0x81, 0x17, 0x33, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, + 0x69, 0x03, 0x68, 0x02, 0x67, 0x02, 0x44, 0x05, 0x66, 0x04, 0xD3, 0x07, 0xD4, 0x08, 0xD5, 0x0A, + 0xD6, 0x12, 0xD7, 0x15, 0xD8, 0x0D, 0xD7, 0x06, 0xD6, 0x03, 0xD5, 0x03, 0xD4, 0x03, 0xD3, 0x02, + 0xD2, 0x02, 0xD1, 0x02, 0xD0, 0x82, 0x9D, 0xCF, 0xCE, 0x02, 0xCD, 0x02, 0xCC, 0xA1, 0xCB, 0xC2, + 0xC1, 0xC0, 0xBE, 0xBD, 0xBB, 0xBA, 0xB9, 0xB7, 0xB5, 0xC3, 0xC4, 0xC6, 0xC7, 0xC9, 0xDB, 0xDD, + 0xDF, 0xE1, 0xE2, 0xE4, 0xE5, 0xE8, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, + 0x02, 0xF4, 0x80, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x80, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, + 0x80, 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, + 0x80, 0xAF, 0x02, 0xAE, 0x80, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x80, 0xA7, + 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x80, 0x91, 0x02, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x02, 0x8D, 0x80, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, + 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, + 0x03, 0x67, 0x02, 0x44, 0x04, 0x66, 0x06, 0xD3, 0x08, 0xD4, 0x08, 0xD5, 0x0A, 0xD6, 0x2E, 0xD7, + 0x06, 0xD6, 0x04, 0xD5, 0x03, 0xD4, 0x04, 0xD3, 0x02, 0xD2, 0x02, 0xD1, 0x02, 0xD0, 0x81, 0x9D, + 0xCF, 0x02, 0xCE, 0x80, 0xCD, 0x02, 0xCC, 0x80, 0xCB, 0x02, 0xC2, 0x9E, 0xC0, 0xBF, 0xBD, 0xBC, + 0xBB, 0xBA, 0xB8, 0xB7, 0xB5, 0xC3, 0xC5, 0xC6, 0xC8, 0xC9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE2, 0xE3, + 0xE5, 0xE8, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0x02, 0xF3, 0x80, 0xF4, 0x02, + 0xF5, 0x80, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x80, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x81, + 0xFD, 0xB0, 0x02, 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, 0xAF, + 0x80, 0xAE, 0x02, 0xAD, 0x80, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, + 0x02, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x80, 0x8F, 0x02, 0x8E, + 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, + 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x03, 0x68, 0x03, 0x67, + 0x02, 0x44, 0x03, 0x66, 0x08, 0xD3, 0x08, 0xD4, 0x08, 0xD5, 0x0B, 0xD6, 0x27, 0xD7, 0x07, 0xD6, + 0x05, 0xD5, 0x04, 0xD4, 0x03, 0xD3, 0x03, 0xD2, 0x02, 0xD1, 0x02, 0xD0, 0x81, 0x9D, 0xCF, 0x02, + 0xCE, 0x80, 0xCD, 0x02, 0xCC, 0x02, 0xCB, 0xA0, 0xC2, 0xC1, 0xC0, 0xBE, 0xBD, 0xBC, 0xBB, 0xB9, + 0xB8, 0xB6, 0xC3, 0xC4, 0xC5, 0xC7, 0xC8, 0xCA, 0xDB, 0xDD, 0xE0, 0xE1, 0xE2, 0xE4, 0xE5, 0xE8, + 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0x02, 0xF3, 0x80, 0xF4, 0x02, 0xF5, 0x02, + 0xF6, 0x80, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x80, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, + 0xFE, 0x02, 0xFF, 0x81, 0xB4, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x80, 0xAD, + 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x80, 0xA6, 0x02, 0xA5, 0x02, 0xA4, + 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x80, 0x8C, + 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, + 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, 0x44, 0x03, 0x66, + 0x02, 0xD2, 0x08, 0xD3, 0x09, 0xD4, 0x09, 0xD5, 0x0D, 0xD6, 0x1D, 0xD7, 0x09, 0xD6, 0x05, 0xD5, + 0x04, 0xD4, 0x04, 0xD3, 0x03, 0xD2, 0x02, 0xD1, 0x02, 0xD0, 0x81, 0x9D, 0xCF, 0x02, 0xCE, 0x02, + 0xCD, 0x80, 0xCC, 0x02, 0xCB, 0xA0, 0xC2, 0xC1, 0xC0, 0xBF, 0xBD, 0xBC, 0xBB, 0xBA, 0xB9, 0xB7, + 0xB5, 0xC3, 0xC4, 0xC6, 0xC7, 0xC8, 0xCA, 0xDC, 0xDE, 0xE0, 0xE1, 0xE2, 0xE4, 0xE5, 0xE8, 0xE9, + 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0x02, 0xF2, 0x80, 0xF3, 0x02, 0xF4, 0x80, 0xF5, 0x02, + 0xF6, 0x02, 0xF7, 0x80, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x80, 0xFB, 0x03, 0xFC, 0x82, 0xFD, 0xB0, + 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, + 0xAD, 0x80, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x80, + 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x02, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, + 0x83, 0x03, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, 0x44, 0x02, + 0x66, 0x04, 0xD2, 0x09, 0xD3, 0x09, 0xD4, 0x09, 0xD5, 0x11, 0xD6, 0x0F, 0xD7, 0x0D, 0xD6, 0x05, + 0xD5, 0x05, 0xD4, 0x04, 0xD3, 0x03, 0xD2, 0x03, 0xD1, 0x02, 0xD0, 0x02, 0xCF, 0x02, 0xCE, 0x02, + 0xCD, 0x80, 0xCC, 0x02, 0xCB, 0x02, 0xC2, 0x83, 0xC0, 0xBF, 0xBE, 0xBD, 0x02, 0xBB, 0x99, 0xB9, + 0xB8, 0xB6, 0xB5, 0xC3, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xDC, 0xDE, 0xE0, 0xE1, 0xE2, 0xE4, 0xE6, + 0xE8, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0x02, 0xF2, 0x80, 0xF3, 0x02, 0xF4, 0x80, + 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x80, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, + 0xFD, 0x02, 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, 0xAF, 0x02, + 0xAE, 0x80, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x80, 0xA7, 0x02, 0xA6, 0x02, + 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, + 0x8D, 0x02, 0x8C, 0x80, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, + 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, + 0x44, 0x02, 0x66, 0x06, 0xD2, 0x0A, 0xD3, 0x08, 0xD4, 0x0B, 0xD5, 0x25, 0xD6, 0x07, 0xD5, 0x05, + 0xD4, 0x05, 0xD3, 0x02, 0xD2, 0x03, 0xD1, 0x03, 0xD0, 0x02, 0xCF, 0x02, 0xCE, 0x02, 0xCD, 0x02, + 0xCC, 0x80, 0xCB, 0x02, 0xC2, 0xA0, 0xC1, 0xC0, 0xBE, 0xBD, 0xBC, 0xBB, 0xBA, 0xB9, 0xB7, 0xB6, + 0xC3, 0xC4, 0xC5, 0xC6, 0xC8, 0xC9, 0xDB, 0xDD, 0xDF, 0xE0, 0xE1, 0xE3, 0xE4, 0xE6, 0xE8, 0xE9, + 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0x02, 0xF2, 0x80, 0xF3, 0x02, 0xF4, 0x80, 0xF5, 0x02, + 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x80, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, + 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, + 0xAD, 0x80, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x80, + 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x02, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, + 0x83, 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x03, 0x68, 0x02, 0x67, 0x02, 0x44, 0x02, + 0x66, 0x02, 0xD1, 0x07, 0xD2, 0x09, 0xD3, 0x0A, 0xD4, 0x0E, 0xD5, 0x19, 0xD6, 0x09, 0xD5, 0x06, + 0xD4, 0x05, 0xD3, 0x03, 0xD2, 0x03, 0xD1, 0x02, 0xD0, 0x80, 0x9D, 0x02, 0xCF, 0x02, 0xCE, 0x02, + 0xCD, 0x02, 0xCC, 0x02, 0xCB, 0xA1, 0xC2, 0xC1, 0xC0, 0xBF, 0xBE, 0xBD, 0xBB, 0xBA, 0xB9, 0xB8, + 0xB7, 0xB5, 0xC3, 0xC4, 0xC6, 0xC7, 0xC8, 0xC9, 0xDB, 0xDD, 0xDF, 0xE1, 0xE2, 0xE3, 0xE4, 0xE6, + 0xE8, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x81, 0xF2, 0xF3, 0x02, 0xF4, 0x02, + 0xF5, 0x80, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x81, + 0xFD, 0xB0, 0x02, 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, 0xAF, + 0x80, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x80, 0xA7, 0x02, 0xA6, + 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, + 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, + 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, + 0x02, 0x44, 0x80, 0x66, 0x04, 0xD1, 0x07, 0xD2, 0x09, 0xD3, 0x0C, 0xD4, 0x15, 0xD5, 0x80, 0xD6, + 0x12, 0xD5, 0x07, 0xD4, 0x06, 0xD3, 0x03, 0xD2, 0x03, 0xD1, 0x03, 0xD0, 0x80, 0x9D, 0x02, 0xCF, + 0x02, 0xCE, 0x02, 0xCD, 0x02, 0xCC, 0x02, 0xCB, 0xA2, 0xC2, 0xC1, 0xC0, 0xBF, 0xBE, 0xBD, 0xBC, + 0xBB, 0xBA, 0xB9, 0xB7, 0xB6, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xDC, 0xDD, 0xDF, 0xE1, + 0xE2, 0xE3, 0xE4, 0xE6, 0xE8, 0xE9, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, + 0x02, 0xF3, 0x80, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x80, 0xF8, 0x02, 0xF9, 0x02, 0xFA, + 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x81, 0xB2, + 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x80, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x02, 0xA6, 0x80, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x80, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, + 0x86, 0x80, 0x85, 0x03, 0x84, 0x02, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x04, + 0x68, 0x02, 0x67, 0x02, 0x44, 0x80, 0x66, 0x07, 0xD1, 0x06, 0xD2, 0x0B, 0xD3, 0x0D, 0xD4, 0x1F, + 0xD5, 0x08, 0xD4, 0x07, 0xD3, 0x04, 0xD2, 0x03, 0xD1, 0x02, 0xD0, 0x02, 0x9D, 0x02, 0xCF, 0x02, + 0xCE, 0x02, 0xCD, 0x02, 0xCC, 0x02, 0xCB, 0x81, 0xC2, 0xC1, 0x02, 0xC0, 0x9F, 0xBE, 0xBD, 0xBC, + 0xBB, 0xBA, 0xB9, 0xB8, 0xB7, 0xB5, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xDC, 0xDE, 0xE0, + 0xE1, 0xE2, 0xE3, 0xE5, 0xE6, 0xE8, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, + 0xF2, 0x02, 0xF3, 0x80, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x80, 0xF9, 0x02, + 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x80, + 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x80, + 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, + 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x80, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, + 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, + 0x69, 0x03, 0x68, 0x03, 0x67, 0x02, 0x44, 0x80, 0xD0, 0x08, 0xD1, 0x08, 0xD2, 0x0A, 0xD3, 0x10, + 0xD4, 0x81, 0xD5, 0xD4, 0x11, 0xD5, 0x0B, 0xD4, 0x07, 0xD3, 0x05, 0xD2, 0x03, 0xD1, 0x03, 0xD0, + 0x80, 0x9D, 0x02, 0xCF, 0x02, 0xCE, 0x03, 0xCD, 0x02, 0xCC, 0x02, 0xCB, 0x02, 0xC2, 0x84, 0xC1, + 0xC0, 0xBF, 0xBE, 0xBD, 0x02, 0xBB, 0x83, 0xBA, 0xB9, 0xB7, 0xB6, 0x02, 0xC3, 0x92, 0xC5, 0xC6, + 0xC7, 0xC8, 0xC9, 0xDB, 0xDC, 0xDE, 0xE0, 0xE1, 0xE2, 0xE3, 0xE5, 0xE6, 0xE8, 0xE9, 0xEB, 0xEC, + 0xED, 0x02, 0xEE, 0x80, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x80, 0xF5, 0x02, + 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x80, 0xFB, 0x03, 0xFC, 0x80, 0xFD, 0x03, + 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, 0xAF, 0x80, 0xAE, 0x02, + 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x80, 0xA6, 0x02, 0xA5, 0x02, + 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x80, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, + 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x02, 0x68, 0x03, 0x67, 0x02, 0x44, 0x04, + 0xD0, 0x07, 0xD1, 0x09, 0xD2, 0x0D, 0xD3, 0x24, 0xD4, 0x09, 0xD3, 0x04, 0xD2, 0x04, 0xD1, 0x04, + 0xD0, 0x80, 0x9D, 0x02, 0xCF, 0x02, 0xCE, 0x03, 0xCD, 0x02, 0xCC, 0x02, 0xCB, 0x02, 0xC2, 0xA3, + 0xC1, 0xC0, 0xBF, 0xBE, 0xBD, 0xBC, 0xBB, 0xBA, 0xB9, 0xB8, 0xB6, 0xB5, 0xC3, 0xC4, 0xC5, 0xC6, + 0xC7, 0xC9, 0xCA, 0xDB, 0xDD, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE5, 0xE7, 0xE8, 0xEA, 0xEB, 0xEC, + 0xED, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x80, 0xF5, 0x02, 0xF6, + 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, + 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x80, 0xAD, + 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, + 0x02, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x03, 0x8D, 0x80, 0x8C, + 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, + 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x80, 0x44, 0x05, 0xD0, + 0x0A, 0xD1, 0x07, 0xD2, 0x0E, 0xD3, 0x81, 0xD4, 0xD3, 0x19, 0xD4, 0x0C, 0xD3, 0x05, 0xD2, 0x05, + 0xD1, 0x03, 0xD0, 0x80, 0x9D, 0x02, 0xCF, 0x03, 0xCE, 0x02, 0xCD, 0x03, 0xCC, 0x02, 0xCB, 0x02, + 0xC2, 0x85, 0xC1, 0xC0, 0xBF, 0xBE, 0xBD, 0xBC, 0x02, 0xBB, 0x9C, 0xBA, 0xB9, 0xB7, 0xB6, 0xB5, + 0xC3, 0xC4, 0xC5, 0xC7, 0xC8, 0xC9, 0xDB, 0xDC, 0xDD, 0xDF, 0xE0, 0xE2, 0xE3, 0xE4, 0xE5, 0xE7, + 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, 0xF3, 0x02, 0xF4, + 0x80, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, + 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, + 0x80, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x80, 0xA6, + 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, + 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, + 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, + 0x81, 0x44, 0x9D, 0x07, 0xD0, 0x09, 0xD1, 0x0A, 0xD2, 0x16, 0xD3, 0x03, 0xD4, 0x13, 0xD3, 0x06, + 0xD2, 0x06, 0xD1, 0x03, 0xD0, 0x80, 0x9D, 0x03, 0xCF, 0x03, 0xCE, 0x02, 0xCD, 0x03, 0xCC, 0x02, + 0xCB, 0x02, 0xC2, 0x84, 0xC1, 0xC0, 0xBF, 0xBE, 0xBD, 0x02, 0xBC, 0x9E, 0xBB, 0xBA, 0xB9, 0xB8, + 0xB6, 0xB5, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xDB, 0xDD, 0xDE, 0xE0, 0xE1, 0xE2, 0xE3, + 0xE4, 0xE5, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, + 0xF3, 0x02, 0xF4, 0x80, 0xF5, 0x03, 0xF6, 0x80, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, + 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x80, + 0xB1, 0x02, 0xAF, 0x80, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x80, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, + 0x86, 0x80, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x02, + 0x68, 0x03, 0x67, 0x81, 0x44, 0xCF, 0x03, 0x9D, 0x06, 0xD0, 0x0A, 0xD1, 0x0B, 0xD2, 0x24, 0xD3, + 0x07, 0xD2, 0x06, 0xD1, 0x04, 0xD0, 0x02, 0x9D, 0x02, 0xCF, 0x03, 0xCE, 0x03, 0xCD, 0x02, 0xCC, + 0x03, 0xCB, 0x02, 0xC2, 0x82, 0xC1, 0xC0, 0xBF, 0x02, 0xBE, 0x82, 0xBD, 0xBC, 0xBB, 0x02, 0xBA, + 0x97, 0xB8, 0xB7, 0xB6, 0xB5, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xDB, 0xDD, 0xDE, 0xE0, + 0xE1, 0xE2, 0xE3, 0xE4, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0x02, 0xED, 0x82, 0xEE, 0xEF, 0xF0, 0x02, + 0xF1, 0x80, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x80, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x80, + 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x80, 0xFF, 0x02, + 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x80, 0xAD, 0x02, 0xAC, 0x02, + 0xAA, 0x02, 0xA9, 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x80, + 0x92, 0x03, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x80, 0x8C, 0x02, 0x8B, 0x02, + 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x03, 0x84, 0x02, 0x83, 0x02, 0x82, 0x03, + 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x03, 0xCF, 0x04, 0x9D, 0x06, 0xD0, 0x0A, + 0xD1, 0x0E, 0xD2, 0x19, 0xD3, 0x09, 0xD2, 0x07, 0xD1, 0x05, 0xD0, 0x80, 0x9D, 0x03, 0xCF, 0x03, + 0xCE, 0x02, 0xCD, 0x03, 0xCC, 0x03, 0xCB, 0x02, 0xC2, 0x80, 0xC1, 0x02, 0xC0, 0x02, 0xBE, 0x81, + 0xBD, 0xBC, 0x02, 0xBB, 0x9E, 0xBA, 0xB9, 0xB7, 0xB6, 0xB5, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, + 0xC9, 0xDB, 0xDC, 0xDD, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE5, 0xE6, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, + 0xED, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, + 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, + 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, 0xAD, + 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x80, 0xA6, 0x02, 0xA5, 0x02, 0xA4, + 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x80, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, + 0x02, 0x8B, 0x80, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, + 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0x67, 0x06, 0xCF, 0x03, 0x9D, + 0x07, 0xD0, 0x0C, 0xD1, 0x27, 0xD2, 0x08, 0xD1, 0x05, 0xD0, 0x02, 0x9D, 0x03, 0xCF, 0x03, 0xCE, + 0x03, 0xCD, 0x03, 0xCC, 0x03, 0xCB, 0x02, 0xC2, 0x80, 0xC1, 0x02, 0xC0, 0x02, 0xBE, 0x81, 0xBD, + 0xBC, 0x02, 0xBB, 0x84, 0xBA, 0xB9, 0xB8, 0xB7, 0xB5, 0x02, 0xC3, 0x93, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC8, 0xCA, 0xDB, 0xDD, 0xDE, 0xDF, 0xE0, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE8, 0xE9, 0xEA, 0xEC, + 0x02, 0xED, 0x82, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, + 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, + 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, 0xAF, 0x80, 0xAE, + 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x80, 0xA5, + 0x03, 0xA4, 0x02, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x02, 0x8D, + 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x03, 0x84, + 0x02, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x02, 0x67, 0x02, 0xCE, + 0x07, 0xCF, 0x03, 0x9D, 0x07, 0xD0, 0x0E, 0xD1, 0x1E, 0xD2, 0x0A, 0xD1, 0x04, 0xD0, 0x03, 0x9D, + 0x03, 0xCF, 0x03, 0xCE, 0x04, 0xCD, 0x03, 0xCC, 0x02, 0xCB, 0x03, 0xC2, 0x80, 0xC1, 0x02, 0xC0, + 0x02, 0xBE, 0x81, 0xBD, 0xBC, 0x02, 0xBB, 0x9B, 0xBA, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xC3, 0xC4, + 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xDC, 0xDD, 0xDE, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE6, 0xE7, + 0xE8, 0xE9, 0xEB, 0xEC, 0x02, 0xED, 0x82, 0xEE, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, 0xF3, + 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, + 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x80, 0xB1, + 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x80, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, 0xA8, 0x02, 0xA7, + 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x02, 0x8D, 0x80, 0x8C, 0x03, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, + 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, + 0x02, 0x67, 0x05, 0xCE, 0x06, 0xCF, 0x03, 0x9D, 0x09, 0xD0, 0x14, 0xD1, 0x02, 0xD2, 0x80, 0xD1, + 0x06, 0xD2, 0x02, 0xD1, 0x80, 0xD2, 0x0E, 0xD1, 0x06, 0xD0, 0x02, 0x9D, 0x04, 0xCF, 0x04, 0xCE, + 0x03, 0xCD, 0x03, 0xCC, 0x03, 0xCB, 0x03, 0xC2, 0x80, 0xC1, 0x02, 0xC0, 0x82, 0xBF, 0xBE, 0xBD, + 0x02, 0xBC, 0x87, 0xBB, 0xBA, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xC3, 0x02, 0xC4, 0x94, 0xC5, 0xC6, + 0xC7, 0xC8, 0xC9, 0xDB, 0xDC, 0xDD, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE5, 0xE6, 0xE7, 0xE8, 0xEA, + 0xEB, 0xEC, 0xED, 0x02, 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, 0x80, 0xF2, 0x02, 0xF3, 0x02, 0xF4, + 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, + 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x80, 0xAF, + 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x80, 0xA7, 0x02, 0xA6, + 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, + 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, + 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x02, 0x67, + 0x80, 0xCD, 0x06, 0xCE, 0x08, 0xCF, 0x03, 0x9D, 0x0A, 0xD0, 0x25, 0xD1, 0x07, 0xD0, 0x03, 0x9D, + 0x04, 0xCF, 0x04, 0xCE, 0x03, 0xCD, 0x04, 0xCC, 0x03, 0xCB, 0x03, 0xC2, 0x81, 0xC1, 0xC0, 0x02, + 0xBF, 0x81, 0xBE, 0xBD, 0x02, 0xBC, 0x80, 0xBB, 0x02, 0xBA, 0x80, 0xB9, 0x02, 0xB7, 0x8E, 0xB6, + 0xB5, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xDB, 0xDD, 0xDE, 0xDF, 0xE1, 0x02, 0xE2, + 0x88, 0xE3, 0xE5, 0xE6, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0x02, 0xEE, 0x82, 0xEF, 0xF0, 0xF1, + 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, + 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x02, 0xB3, + 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x80, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, + 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, + 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x80, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, + 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, + 0x03, 0x69, 0x03, 0x68, 0x80, 0x67, 0x03, 0xCD, 0x08, 0xCE, 0x06, 0xCF, 0x04, 0x9D, 0x0D, 0xD0, + 0x19, 0xD1, 0x0A, 0xD0, 0x03, 0x9D, 0x04, 0xCF, 0x04, 0xCE, 0x05, 0xCD, 0x03, 0xCC, 0x04, 0xCB, + 0x02, 0xC2, 0x02, 0xC1, 0x80, 0xC0, 0x02, 0xBF, 0x81, 0xBE, 0xBD, 0x02, 0xBC, 0x80, 0xBB, 0x02, + 0xBA, 0x85, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xC3, 0x02, 0xC4, 0x80, 0xC6, 0x02, 0xC7, 0x92, 0xC8, + 0xC9, 0xDB, 0xDC, 0xDD, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, + 0xEC, 0xED, 0x02, 0xEE, 0x82, 0xEF, 0xF0, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, + 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x03, 0xFD, + 0x02, 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, + 0x80, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, + 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x80, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, + 0x02, 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, + 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x80, 0x67, 0x06, 0xCD, + 0x07, 0xCE, 0x09, 0xCF, 0x05, 0x9D, 0x25, 0xD0, 0x04, 0x9D, 0x05, 0xCF, 0x05, 0xCE, 0x05, 0xCD, + 0x04, 0xCC, 0x03, 0xCB, 0x03, 0xC2, 0x02, 0xC1, 0x81, 0xC0, 0xBF, 0x02, 0xBE, 0x80, 0xBD, 0x02, + 0xBC, 0x02, 0xBB, 0x86, 0xBA, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xC3, 0x02, 0xC4, 0x96, 0xC5, 0xC6, + 0xC7, 0xC8, 0xC9, 0xCA, 0xDB, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE7, 0xE8, + 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0x02, 0xEE, 0x82, 0xEF, 0xF0, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, + 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x03, + 0xFC, 0x81, 0xFD, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x80, 0xB1, + 0x02, 0xAF, 0x02, 0xAE, 0x80, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x80, 0xA7, + 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x02, 0x86, + 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x03, 0x68, + 0x80, 0xCC, 0x08, 0xCD, 0x08, 0xCE, 0x08, 0xCF, 0x81, 0x9D, 0xCF, 0x06, 0x9D, 0x19, 0xD0, 0x05, + 0x9D, 0x08, 0xCF, 0x05, 0xCE, 0x05, 0xCD, 0x04, 0xCC, 0x04, 0xCB, 0x03, 0xC2, 0x80, 0xC1, 0x02, + 0xC0, 0x80, 0xBF, 0x02, 0xBE, 0x80, 0xBD, 0x02, 0xBC, 0x02, 0xBB, 0x84, 0xBA, 0xB9, 0xB8, 0xB7, + 0xB6, 0x02, 0xB5, 0x83, 0xC3, 0xC4, 0xC5, 0xC6, 0x02, 0xC7, 0x88, 0xC8, 0xCA, 0xDB, 0xDC, 0xDD, + 0xDF, 0xE0, 0xE1, 0xE2, 0x02, 0xE3, 0x86, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC, 0x02, 0xED, + 0x80, 0xEE, 0x02, 0xEF, 0x81, 0xF0, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, + 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x02, + 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, + 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x80, 0xA6, 0x02, 0xA5, 0x02, + 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x02, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x03, 0x84, 0x02, + 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x03, 0xCC, 0x08, 0xCD, 0x0A, + 0xCE, 0x0C, 0xCF, 0x0A, 0x9D, 0x04, 0xD0, 0x0A, 0x9D, 0x09, 0xCF, 0x07, 0xCE, 0x06, 0xCD, 0x04, + 0xCC, 0x04, 0xCB, 0x03, 0xC2, 0x02, 0xC1, 0x02, 0xC0, 0x80, 0xBF, 0x02, 0xBE, 0x80, 0xBD, 0x02, + 0xBC, 0x02, 0xBB, 0x80, 0xBA, 0x02, 0xB9, 0x80, 0xB7, 0x02, 0xB6, 0x82, 0xB5, 0xC3, 0xC4, 0x02, + 0xC5, 0x94, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xDB, 0xDC, 0xDD, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, + 0xE5, 0xE6, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0x02, 0xED, 0x81, 0xEE, 0xEF, 0x02, 0xF0, 0x80, 0xF1, + 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, + 0x02, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, + 0x02, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, + 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, + 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x80, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, + 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x03, 0x84, 0x02, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, + 0x02, 0x69, 0x03, 0x68, 0x06, 0xCC, 0x09, 0xCD, 0x0A, 0xCE, 0x11, 0xCF, 0x82, 0x9D, 0xCF, 0x9D, + 0x12, 0xCF, 0x07, 0xCE, 0x06, 0xCD, 0x06, 0xCC, 0x03, 0xCB, 0x04, 0xC2, 0x02, 0xC1, 0x02, 0xC0, + 0x80, 0xBF, 0x02, 0xBE, 0x80, 0xBD, 0x02, 0xBC, 0x02, 0xBB, 0x80, 0xBA, 0x02, 0xB9, 0x84, 0xB8, + 0xB7, 0xB6, 0xB5, 0xC3, 0x02, 0xC4, 0x82, 0xC5, 0xC6, 0xC7, 0x02, 0xC8, 0x85, 0xC9, 0xDB, 0xDC, + 0xDD, 0xDE, 0xE0, 0x02, 0xE1, 0x8A, 0xE2, 0xE3, 0xE4, 0xE5, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, + 0xED, 0x02, 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, + 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x02, 0xFD, + 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x80, 0xAE, + 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, + 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x80, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, + 0x02, 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, + 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x03, 0x68, 0x09, 0xCC, 0x0A, 0xCD, + 0x0C, 0xCE, 0x81, 0xCF, 0xCE, 0x17, 0xCF, 0x0B, 0xCE, 0x07, 0xCD, 0x05, 0xCC, 0x05, 0xCB, 0x03, + 0xC2, 0x02, 0xC1, 0x02, 0xC0, 0x80, 0xBF, 0x02, 0xBE, 0x02, 0xBD, 0x02, 0xBC, 0x02, 0xBB, 0x80, + 0xBA, 0x02, 0xB9, 0x83, 0xB8, 0xB7, 0xB6, 0xB5, 0x02, 0xC3, 0x80, 0xC4, 0x02, 0xC5, 0x02, 0xC7, + 0x91, 0xC8, 0xC9, 0xCA, 0xDB, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, + 0xE8, 0xE9, 0xEB, 0x02, 0xEC, 0x80, 0xED, 0x02, 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, 0x02, 0xF2, + 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x03, 0xFA, + 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x80, 0xB2, + 0x02, 0xB1, 0x02, 0xAF, 0x80, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, 0xA8, + 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, + 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, + 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, + 0x02, 0x68, 0x03, 0xCB, 0x08, 0xCC, 0x0C, 0xCD, 0x27, 0xCE, 0x09, 0xCD, 0x06, 0xCC, 0x05, 0xCB, + 0x03, 0xC2, 0x02, 0xC1, 0x03, 0xC0, 0x80, 0xBF, 0x02, 0xBE, 0x02, 0xBD, 0x02, 0xBC, 0x02, 0xBB, + 0x80, 0xBA, 0x02, 0xB9, 0x83, 0xB8, 0xB7, 0xB6, 0xB5, 0x02, 0xC3, 0x80, 0xC4, 0x02, 0xC5, 0x89, + 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0x02, 0xE1, 0x89, 0xE2, 0xE3, 0xE4, + 0xE5, 0xE6, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, + 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, + 0x03, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x80, 0xFF, 0x02, 0xB4, 0x02, 0xB3, + 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x80, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, + 0x02, 0xA8, 0x80, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, + 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, + 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x80, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, + 0x02, 0x69, 0x02, 0x68, 0x05, 0xCB, 0x0B, 0xCC, 0x0D, 0xCD, 0x1B, 0xCE, 0x0C, 0xCD, 0x06, 0xCC, + 0x06, 0xCB, 0x04, 0xC2, 0x02, 0xC1, 0x02, 0xC0, 0x02, 0xBF, 0x02, 0xBE, 0x80, 0xBD, 0x02, 0xBC, + 0x03, 0xBB, 0x80, 0xBA, 0x02, 0xB9, 0x83, 0xB8, 0xB7, 0xB6, 0xB5, 0x02, 0xC3, 0x80, 0xC4, 0x02, + 0xC5, 0x80, 0xC6, 0x02, 0xC7, 0x89, 0xC8, 0xC9, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, + 0x02, 0xE3, 0x87, 0xE4, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0x02, 0xED, 0x80, 0xEE, 0x02, + 0xEF, 0x81, 0xF0, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x02, 0xF7, + 0x02, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x02, 0xFE, 0x02, 0xFF, + 0x02, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x80, 0xAC, + 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x80, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, + 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x80, 0x8C, 0x02, 0x8B, + 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, + 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x02, 0x68, 0x08, 0xCB, 0x0C, 0xCC, 0x15, 0xCD, 0x80, 0xCE, + 0x16, 0xCD, 0x08, 0xCC, 0x06, 0xCB, 0x04, 0xC2, 0x02, 0xC1, 0x02, 0xC0, 0x02, 0xBF, 0x02, 0xBE, + 0x02, 0xBD, 0x02, 0xBC, 0x02, 0xBB, 0x02, 0xBA, 0x80, 0xB9, 0x02, 0xB8, 0x81, 0xB7, 0xB6, 0x02, + 0xB5, 0x80, 0xC3, 0x02, 0xC4, 0x81, 0xC5, 0xC6, 0x02, 0xC7, 0x87, 0xC8, 0xC9, 0xCA, 0xDB, 0xDC, + 0xDD, 0xDE, 0xE0, 0x02, 0xE1, 0x86, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0x02, 0xEA, 0x82, + 0xEB, 0xEC, 0xED, 0x02, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x80, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, + 0xF4, 0x03, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x02, + 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x80, 0xB1, 0x02, + 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, + 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, + 0x8E, 0x02, 0x8D, 0x80, 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, + 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x02, 0x68, 0x02, + 0xC2, 0x0A, 0xCB, 0x0D, 0xCC, 0x21, 0xCD, 0x0B, 0xCC, 0x06, 0xCB, 0x05, 0xC2, 0x02, 0xC1, 0x03, + 0xC0, 0x80, 0xBF, 0x03, 0xBE, 0x02, 0xBD, 0x02, 0xBC, 0x02, 0xBB, 0x02, 0xBA, 0x80, 0xB9, 0x02, + 0xB8, 0x81, 0xB7, 0xB6, 0x02, 0xB5, 0x80, 0xC3, 0x02, 0xC4, 0x81, 0xC5, 0xC6, 0x02, 0xC7, 0x89, + 0xC8, 0xC9, 0xCA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0x02, 0xE2, 0x87, 0xE3, 0xE4, 0xE5, + 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0x02, 0xEC, 0x80, 0xED, 0x02, 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, + 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x02, 0xF9, + 0x02, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, + 0x02, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, + 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, + 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, + 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, + 0x02, 0x69, 0x02, 0x68, 0x05, 0xC2, 0x0B, 0xCB, 0x11, 0xCC, 0x13, 0xCD, 0x0E, 0xCC, 0x07, 0xCB, + 0x05, 0xC2, 0x02, 0xC1, 0x03, 0xC0, 0x02, 0xBF, 0x02, 0xBE, 0x02, 0xBD, 0x02, 0xBC, 0x03, 0xBB, + 0x02, 0xBA, 0x81, 0xB9, 0xB8, 0x02, 0xB7, 0x80, 0xB6, 0x02, 0xB5, 0x80, 0xC3, 0x02, 0xC4, 0x02, + 0xC5, 0x82, 0xC6, 0xC7, 0xC8, 0x02, 0xC9, 0x02, 0xDB, 0x02, 0xDD, 0x81, 0xDF, 0xE0, 0x02, 0xE1, + 0x8A, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0x02, 0xED, 0x02, 0xEE, + 0x81, 0xEF, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x03, + 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, + 0xFE, 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, + 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, + 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x80, 0x84, 0x03, + 0x83, 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x80, 0x68, 0x08, 0xC2, 0x0C, 0xCB, 0x28, + 0xCC, 0x81, 0xCB, 0xCC, 0x08, 0xCB, 0x06, 0xC2, 0x02, 0xC1, 0x03, 0xC0, 0x02, 0xBF, 0x03, 0xBE, + 0x02, 0xBD, 0x02, 0xBC, 0x02, 0xBB, 0x02, 0xBA, 0x02, 0xB9, 0x02, 0xB8, 0x81, 0xB7, 0xB6, 0x02, + 0xB5, 0x80, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x80, 0xC6, 0x02, 0xC7, 0x89, 0xC8, 0xC9, 0xCA, 0xDB, + 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0x02, 0xE2, 0x87, 0xE3, 0xE4, 0xE5, 0xE7, 0xE8, 0xE9, 0xEA, + 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x80, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, + 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, + 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, + 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x80, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, + 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, + 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, + 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, + 0x69, 0x80, 0x68, 0x03, 0xC1, 0x09, 0xC2, 0x0E, 0xCB, 0x1E, 0xCC, 0x0B, 0xCB, 0x06, 0xC2, 0x03, + 0xC1, 0x03, 0xC0, 0x02, 0xBF, 0x03, 0xBE, 0x02, 0xBD, 0x03, 0xBC, 0x02, 0xBB, 0x02, 0xBA, 0x02, + 0xB9, 0x80, 0xB8, 0x02, 0xB7, 0x80, 0xB6, 0x02, 0xB5, 0x80, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x80, + 0xC6, 0x02, 0xC7, 0x88, 0xC8, 0xC9, 0xCA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0x02, 0xE1, 0x8A, + 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x80, + 0xEF, 0x02, 0xF0, 0x80, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x03, + 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, + 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, + 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x80, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, + 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x03, 0x8D, 0x80, + 0x8C, 0x03, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, + 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x80, 0x68, 0x02, 0xC0, 0x04, 0xC1, 0x0A, + 0xC2, 0x13, 0xCB, 0x80, 0xCC, 0x02, 0xCB, 0x04, 0xCC, 0x81, 0xCB, 0xCC, 0x13, 0xCB, 0x07, 0xC2, + 0x03, 0xC1, 0x04, 0xC0, 0x02, 0xBF, 0x03, 0xBE, 0x02, 0xBD, 0x03, 0xBC, 0x03, 0xBB, 0x02, 0xBA, + 0x02, 0xB9, 0x81, 0xB8, 0xB7, 0x02, 0xB6, 0x02, 0xB5, 0x80, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x80, + 0xC6, 0x02, 0xC7, 0x80, 0xC8, 0x02, 0xC9, 0x02, 0xDB, 0x02, 0xDD, 0x81, 0xDE, 0xDF, 0x02, 0xE1, + 0x80, 0xE2, 0x02, 0xE3, 0x83, 0xE4, 0xE5, 0xE6, 0xE7, 0x02, 0xE9, 0x82, 0xEA, 0xEB, 0xEC, 0x02, + 0xED, 0x02, 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, + 0x02, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x02, 0xFD, + 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, + 0x80, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x80, 0xA7, 0x02, 0xA6, + 0x03, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, + 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, + 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x80, 0x68, 0x04, 0xC0, + 0x06, 0xC1, 0x0B, 0xC2, 0x25, 0xCB, 0x09, 0xC2, 0x03, 0xC1, 0x05, 0xC0, 0x02, 0xBF, 0x03, 0xBE, + 0x02, 0xBD, 0x03, 0xBC, 0x03, 0xBB, 0x02, 0xBA, 0x02, 0xB9, 0x02, 0xB8, 0x80, 0xB7, 0x02, 0xB6, + 0x80, 0xB5, 0x02, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x81, 0xC7, 0xC8, 0x02, 0xC9, 0x87, + 0xCA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0xE1, 0x02, 0xE2, 0x88, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, + 0xE8, 0xE9, 0xEA, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x80, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, 0xF1, + 0x02, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, 0x03, 0xF8, 0x02, 0xF9, + 0x03, 0xFA, 0x80, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x80, 0xB4, + 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x80, 0xAD, 0x02, 0xAC, 0x02, 0xAA, + 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x02, 0x92, + 0x80, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, + 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, + 0x80, 0x6A, 0x03, 0x69, 0x02, 0xBF, 0x06, 0xC0, 0x05, 0xC1, 0x0E, 0xC2, 0x81, 0xCB, 0xC2, 0x15, + 0xCB, 0x80, 0xC2, 0x02, 0xCB, 0x0B, 0xC2, 0x04, 0xC1, 0x04, 0xC0, 0x03, 0xBF, 0x03, 0xBE, 0x02, + 0xBD, 0x03, 0xBC, 0x04, 0xBB, 0x02, 0xBA, 0x02, 0xB9, 0x80, 0xB8, 0x02, 0xB7, 0x80, 0xB6, 0x03, + 0xB5, 0x80, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x81, 0xC7, 0xC8, 0x02, 0xC9, 0x86, 0xCA, + 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, 0x02, 0xE1, 0x80, 0xE2, 0x02, 0xE3, 0x82, 0xE4, 0xE5, 0xE6, + 0x02, 0xE8, 0x83, 0xE9, 0xEA, 0xEB, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x02, + 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x02, 0xF7, 0x03, 0xF8, 0x02, + 0xF9, 0x02, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, + 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, + 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x80, + 0x92, 0x03, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, + 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, + 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x80, 0xBE, 0x04, 0xBF, 0x07, 0xC0, 0x06, 0xC1, 0x29, 0xC2, 0x06, + 0xC1, 0x04, 0xC0, 0x03, 0xBF, 0x04, 0xBE, 0x02, 0xBD, 0x04, 0xBC, 0x03, 0xBB, 0x03, 0xBA, 0x80, + 0xB9, 0x02, 0xB8, 0x02, 0xB7, 0x02, 0xB6, 0x80, 0xB5, 0x02, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x02, + 0xC6, 0x81, 0xC7, 0xC8, 0x02, 0xC9, 0x83, 0xCA, 0xDB, 0xDC, 0xDD, 0x02, 0xDE, 0x02, 0xE0, 0x80, + 0xE1, 0x02, 0xE2, 0x88, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0x02, 0xEC, 0x02, + 0xED, 0x02, 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, + 0x03, 0xF6, 0x02, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x02, 0xFD, + 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, + 0x80, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, + 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, + 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, + 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x04, 0xBE, 0x05, 0xBF, 0x07, 0xC0, + 0x0A, 0xC1, 0x1C, 0xC2, 0x06, 0xC1, 0x06, 0xC0, 0x03, 0xBF, 0x04, 0xBE, 0x03, 0xBD, 0x04, 0xBC, + 0x03, 0xBB, 0x03, 0xBA, 0x02, 0xB9, 0x02, 0xB8, 0x02, 0xB7, 0x80, 0xB6, 0x02, 0xB5, 0x02, 0xC3, + 0x02, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x80, 0xC7, 0x02, 0xC8, 0x81, 0xC9, 0xCA, 0x02, 0xDB, 0x02, + 0xDD, 0x82, 0xDE, 0xDF, 0xE0, 0x02, 0xE1, 0x80, 0xE2, 0x02, 0xE3, 0x02, 0xE5, 0x81, 0xE6, 0xE8, + 0x02, 0xE9, 0x82, 0xEA, 0xEB, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, 0xF1, + 0x02, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x02, 0xF9, + 0x03, 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, + 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, + 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, + 0x02, 0x90, 0x02, 0x8F, 0x80, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, + 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, + 0x02, 0x69, 0x80, 0xBD, 0x06, 0xBE, 0x06, 0xBF, 0x08, 0xC0, 0x11, 0xC1, 0x02, 0xC2, 0x0E, 0xC1, + 0x08, 0xC0, 0x03, 0xBF, 0x06, 0xBE, 0x03, 0xBD, 0x04, 0xBC, 0x03, 0xBB, 0x03, 0xBA, 0x03, 0xB9, + 0x80, 0xB8, 0x02, 0xB7, 0x02, 0xB6, 0x02, 0xB5, 0x02, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x80, 0xC6, + 0x02, 0xC7, 0x80, 0xC8, 0x02, 0xC9, 0x80, 0xCA, 0x02, 0xDB, 0x84, 0xDC, 0xDD, 0xDE, 0xDF, 0xE0, + 0x02, 0xE1, 0x80, 0xE2, 0x02, 0xE3, 0x87, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0x02, + 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x03, + 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x03, + 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, + 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x80, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, + 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x05, + 0xBD, 0x07, 0xBE, 0x06, 0xBF, 0x0C, 0xC0, 0x0F, 0xC1, 0x81, 0xC0, 0xC1, 0x0B, 0xC0, 0x05, 0xBF, + 0x05, 0xBE, 0x03, 0xBD, 0x04, 0xBC, 0x04, 0xBB, 0x04, 0xBA, 0x02, 0xB9, 0x80, 0xB8, 0x03, 0xB7, + 0x80, 0xB6, 0x02, 0xB5, 0x03, 0xC3, 0x02, 0xC4, 0x80, 0xC5, 0x02, 0xC6, 0x03, 0xC7, 0x82, 0xC8, + 0xC9, 0xCA, 0x02, 0xDB, 0x83, 0xDC, 0xDD, 0xDE, 0xDF, 0x02, 0xE0, 0x80, 0xE1, 0x02, 0xE2, 0x81, + 0xE3, 0xE4, 0x02, 0xE5, 0x81, 0xE7, 0xE8, 0x02, 0xE9, 0x82, 0xEA, 0xEB, 0xEC, 0x03, 0xED, 0x80, + 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x03, 0xF3, 0x02, 0xF4, 0x03, 0xF5, 0x02, + 0xF6, 0x02, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x03, + 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x80, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, + 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, + 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x80, + 0x8C, 0x03, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, + 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x03, 0xBC, 0x05, 0xBD, 0x09, 0xBE, 0x07, + 0xBF, 0x1C, 0xC0, 0x06, 0xBF, 0x06, 0xBE, 0x05, 0xBD, 0x04, 0xBC, 0x04, 0xBB, 0x04, 0xBA, 0x02, + 0xB9, 0x02, 0xB8, 0x02, 0xB7, 0x02, 0xB6, 0x02, 0xB5, 0x02, 0xC3, 0x03, 0xC4, 0x02, 0xC5, 0x80, + 0xC6, 0x02, 0xC7, 0x02, 0xC8, 0x80, 0xC9, 0x02, 0xCA, 0x81, 0xDB, 0xDC, 0x02, 0xDD, 0x80, 0xDE, + 0x02, 0xE0, 0x80, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x87, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, + 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, + 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x02, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, + 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, + 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x80, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, + 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x05, + 0xBC, 0x07, 0xBD, 0x0B, 0xBE, 0x0B, 0xBF, 0x02, 0xC0, 0x81, 0xBF, 0xC0, 0x0E, 0xBF, 0x08, 0xBE, + 0x05, 0xBD, 0x05, 0xBC, 0x05, 0xBB, 0x04, 0xBA, 0x02, 0xB9, 0x02, 0xB8, 0x02, 0xB7, 0x02, 0xB6, + 0x02, 0xB5, 0x03, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, 0xC8, 0x80, 0xC9, + 0x02, 0xCA, 0x82, 0xDB, 0xDC, 0xDD, 0x02, 0xDE, 0x81, 0xDF, 0xE0, 0x02, 0xE1, 0x80, 0xE2, 0x02, + 0xE3, 0x84, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0x02, 0xE9, 0x82, 0xEA, 0xEB, 0xEC, 0x03, 0xED, 0x02, + 0xEE, 0x81, 0xEF, 0xF0, 0x02, 0xF1, 0x03, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, + 0x02, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x03, 0xFE, + 0x02, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, + 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, + 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, + 0x02, 0x8B, 0x80, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, + 0x02, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x82, 0xBB, 0xBC, 0xBB, 0x07, 0xBC, 0x07, 0xBD, + 0x81, 0xBE, 0xBD, 0x0E, 0xBE, 0x81, 0xBF, 0xBE, 0x02, 0xBF, 0x03, 0xBE, 0x80, 0xBF, 0x0F, 0xBE, + 0x06, 0xBD, 0x06, 0xBC, 0x05, 0xBB, 0x04, 0xBA, 0x02, 0xB9, 0x02, 0xB8, 0x03, 0xB7, 0x02, 0xB6, + 0x02, 0xB5, 0x03, 0xC3, 0x02, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, 0xC8, 0x81, 0xC9, + 0xCA, 0x02, 0xDB, 0x81, 0xDC, 0xDD, 0x02, 0xDE, 0x81, 0xDF, 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x82, + 0xE3, 0xE4, 0xE5, 0x02, 0xE6, 0x02, 0xE8, 0x82, 0xE9, 0xEA, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x02, + 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x03, 0xF3, 0x02, 0xF4, 0x03, 0xF5, 0x02, + 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x03, 0xF9, 0x02, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x03, 0xFD, 0x02, + 0xFE, 0x02, 0xFF, 0x03, 0xB4, 0x80, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, + 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x03, 0xA9, 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, + 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x80, 0x85, 0x02, 0x84, 0x03, + 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x80, 0x69, 0x07, 0xBB, 0x08, 0xBC, 0x09, 0xBD, 0x02, + 0xBE, 0x80, 0xBD, 0x16, 0xBE, 0x08, 0xBD, 0x08, 0xBC, 0x05, 0xBB, 0x04, 0xBA, 0x03, 0xB9, 0x02, + 0xB8, 0x03, 0xB7, 0x02, 0xB6, 0x03, 0xB5, 0x02, 0xC3, 0x03, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x02, + 0xC7, 0x02, 0xC8, 0x80, 0xC9, 0x02, 0xCA, 0x81, 0xDB, 0xDC, 0x02, 0xDD, 0x82, 0xDE, 0xDF, 0xE0, + 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x85, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0x02, 0xEA, 0x81, + 0xEB, 0xEC, 0x03, 0xED, 0x02, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x03, 0xF3, + 0x02, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x03, 0xF9, 0x02, 0xFA, 0x03, 0xFB, + 0x02, 0xFC, 0x03, 0xFD, 0x02, 0xFE, 0x03, 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, + 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, + 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, + 0x80, 0x85, 0x03, 0x84, 0x02, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x81, 0x69, 0xBA, 0x0A, + 0xBB, 0x0A, 0xBC, 0x81, 0xBD, 0xBC, 0x1C, 0xBD, 0x81, 0xBC, 0xBD, 0x08, 0xBC, 0x06, 0xBB, 0x04, + 0xBA, 0x04, 0xB9, 0x02, 0xB8, 0x04, 0xB7, 0x80, 0xB6, 0x03, 0xB5, 0x02, 0xC3, 0x03, 0xC4, 0x02, + 0xC5, 0x02, 0xC6, 0x03, 0xC7, 0x02, 0xC8, 0x81, 0xC9, 0xCA, 0x02, 0xDB, 0x80, 0xDC, 0x02, 0xDD, + 0x82, 0xDE, 0xDF, 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x84, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, + 0x02, 0xE9, 0x81, 0xEA, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, + 0xF1, 0x03, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x02, 0xF7, 0x03, 0xF8, 0x03, + 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, + 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x80, 0xAA, 0x03, + 0xA9, 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x03, + 0x91, 0x80, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, + 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, + 0x6A, 0x80, 0x69, 0x04, 0xBA, 0x0D, 0xBB, 0x10, 0xBC, 0x02, 0xBD, 0x80, 0xBC, 0x03, 0xBD, 0x81, + 0xBC, 0xBD, 0x0E, 0xBC, 0x08, 0xBB, 0x06, 0xBA, 0x03, 0xB9, 0x03, 0xB8, 0x03, 0xB7, 0x02, 0xB6, + 0x03, 0xB5, 0x03, 0xC3, 0x02, 0xC4, 0x03, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, 0xC8, 0x02, 0xC9, + 0x80, 0xCA, 0x02, 0xDB, 0x80, 0xDC, 0x02, 0xDD, 0x82, 0xDE, 0xDF, 0xE0, 0x02, 0xE1, 0x02, 0xE2, + 0x02, 0xE3, 0x80, 0xE4, 0x02, 0xE5, 0x02, 0xE7, 0x82, 0xE8, 0xE9, 0xEA, 0x02, 0xEB, 0x80, 0xEC, + 0x03, 0xED, 0x02, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x03, 0xF3, 0x02, 0xF4, + 0x03, 0xF5, 0x02, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x03, 0xFC, + 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, + 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x02, 0xA8, 0x02, 0xA7, + 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x03, 0x91, 0x80, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, + 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x80, 0x69, 0x02, 0xB9, + 0x07, 0xBA, 0x0E, 0xBB, 0x1A, 0xBC, 0x0B, 0xBB, 0x06, 0xBA, 0x04, 0xB9, 0x03, 0xB8, 0x03, 0xB7, + 0x03, 0xB6, 0x02, 0xB5, 0x03, 0xC3, 0x03, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x03, 0xC7, 0x02, 0xC8, + 0x02, 0xC9, 0x80, 0xCA, 0x02, 0xDB, 0x80, 0xDC, 0x02, 0xDD, 0x81, 0xDE, 0xDF, 0x02, 0xE0, 0x02, + 0xE1, 0x80, 0xE2, 0x02, 0xE3, 0x80, 0xE4, 0x02, 0xE5, 0x02, 0xE7, 0x81, 0xE8, 0xE9, 0x02, 0xEA, + 0x80, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, 0xF1, 0x03, 0xF2, + 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, + 0x02, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, + 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x80, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x80, 0xAA, 0x03, 0xA9, + 0x80, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x80, 0x91, + 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, + 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, + 0x80, 0x69, 0x06, 0xB9, 0x08, 0xBA, 0x29, 0xBB, 0x08, 0xBA, 0x04, 0xB9, 0x03, 0xB8, 0x03, 0xB7, + 0x03, 0xB6, 0x03, 0xB5, 0x03, 0xC3, 0x04, 0xC4, 0x02, 0xC5, 0x02, 0xC6, 0x03, 0xC7, 0x02, 0xC8, + 0x02, 0xC9, 0x80, 0xCA, 0x02, 0xDB, 0x80, 0xDC, 0x02, 0xDD, 0x81, 0xDE, 0xDF, 0x02, 0xE0, 0x02, + 0xE1, 0x80, 0xE2, 0x02, 0xE3, 0x02, 0xE4, 0x82, 0xE5, 0xE6, 0xE7, 0x02, 0xE8, 0x81, 0xE9, 0xEA, + 0x02, 0xEB, 0x80, 0xEC, 0x02, 0xED, 0x03, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x03, 0xF2, + 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x03, 0xF9, 0x02, 0xFA, + 0x03, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, + 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x80, 0xA8, + 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, + 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, + 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x03, + 0xB8, 0x07, 0xB9, 0x0B, 0xBA, 0x1C, 0xBB, 0x09, 0xBA, 0x06, 0xB9, 0x02, 0xB8, 0x05, 0xB7, 0x03, + 0xB6, 0x03, 0xB5, 0x03, 0xC3, 0x04, 0xC4, 0x03, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, 0xC8, 0x02, + 0xC9, 0x02, 0xCA, 0x80, 0xDB, 0x02, 0xDC, 0x02, 0xDD, 0x81, 0xDE, 0xDF, 0x02, 0xE0, 0x02, 0xE1, + 0x02, 0xE2, 0x02, 0xE3, 0x83, 0xE4, 0xE5, 0xE6, 0xE7, 0x02, 0xE8, 0x81, 0xE9, 0xEA, 0x02, 0xEB, + 0x80, 0xEC, 0x03, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x03, 0xF1, 0x02, 0xF2, 0x03, 0xF3, + 0x02, 0xF4, 0x03, 0xF5, 0x02, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x03, 0xFB, + 0x03, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x80, 0xB1, + 0x02, 0xAF, 0x03, 0xAE, 0x80, 0xAD, 0x03, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, + 0x02, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x80, 0x91, 0x02, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x03, 0x8B, 0x80, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, + 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x02, 0xB7, 0x05, + 0xB8, 0x09, 0xB9, 0x0F, 0xBA, 0x80, 0xBB, 0x15, 0xBA, 0x06, 0xB9, 0x05, 0xB8, 0x04, 0xB7, 0x04, + 0xB6, 0x03, 0xB5, 0x04, 0xC3, 0x03, 0xC4, 0x03, 0xC5, 0x02, 0xC6, 0x03, 0xC7, 0x80, 0xC8, 0x03, + 0xC9, 0x02, 0xCA, 0x80, 0xDB, 0x02, 0xDC, 0x80, 0xDD, 0x02, 0xDE, 0x80, 0xDF, 0x02, 0xE0, 0x02, + 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x81, 0xE4, 0xE5, 0x02, 0xE6, 0x82, 0xE7, 0xE8, 0xE9, 0x02, 0xEA, + 0x80, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x03, 0xF2, + 0x02, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, + 0x02, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, + 0x02, 0xB1, 0x80, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, + 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, + 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, + 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x06, + 0xB7, 0x06, 0xB8, 0x0A, 0xB9, 0x17, 0xBA, 0x81, 0xB9, 0xBA, 0x09, 0xB9, 0x03, 0xB8, 0x05, 0xB7, + 0x05, 0xB6, 0x03, 0xB5, 0x04, 0xC3, 0x03, 0xC4, 0x04, 0xC5, 0x02, 0xC6, 0x03, 0xC7, 0x03, 0xC8, + 0x80, 0xC9, 0x02, 0xCA, 0x02, 0xDB, 0x80, 0xDC, 0x02, 0xDD, 0x02, 0xDE, 0x80, 0xDF, 0x02, 0xE0, + 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x81, 0xE4, 0xE5, 0x02, 0xE6, 0x02, 0xE8, 0x02, 0xE9, 0x80, + 0xEA, 0x02, 0xEB, 0x80, 0xEC, 0x02, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x02, 0xF1, 0x03, + 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, + 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x02, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x02, + 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, + 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x80, 0x91, 0x02, + 0x90, 0x03, 0x8F, 0x80, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, + 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, + 0x04, 0xB6, 0x07, 0xB7, 0x08, 0xB8, 0x1F, 0xB9, 0x06, 0xB8, 0x05, 0xB7, 0x05, 0xB6, 0x04, 0xB5, + 0x03, 0xC3, 0x04, 0xC4, 0x04, 0xC5, 0x03, 0xC6, 0x03, 0xC7, 0x02, 0xC8, 0x02, 0xC9, 0x02, 0xCA, + 0x02, 0xDB, 0x80, 0xDC, 0x02, 0xDD, 0x80, 0xDE, 0x02, 0xDF, 0x02, 0xE0, 0x02, 0xE1, 0x02, 0xE2, + 0x02, 0xE3, 0x81, 0xE4, 0xE5, 0x02, 0xE6, 0x81, 0xE7, 0xE8, 0x02, 0xE9, 0x80, 0xEA, 0x02, 0xEB, + 0x02, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x03, 0xF3, + 0x03, 0xF4, 0x03, 0xF5, 0x02, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x02, 0xFA, 0x03, 0xFB, + 0x03, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, + 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x02, 0xA8, + 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, + 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, + 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0xB5, + 0x06, 0xB6, 0x09, 0xB7, 0x0D, 0xB8, 0x86, 0xB9, 0xB8, 0xB9, 0xB8, 0xB9, 0xB8, 0xB9, 0x02, 0xB8, + 0x80, 0xB9, 0x09, 0xB8, 0x08, 0xB7, 0x06, 0xB6, 0x04, 0xB5, 0x04, 0xC3, 0x05, 0xC4, 0x04, 0xC5, + 0x02, 0xC6, 0x03, 0xC7, 0x03, 0xC8, 0x02, 0xC9, 0x80, 0xCA, 0x02, 0xDB, 0x02, 0xDC, 0x02, 0xDD, + 0x81, 0xDE, 0xDF, 0x02, 0xE0, 0x03, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x80, 0xE4, 0x02, 0xE5, 0x82, + 0xE6, 0xE7, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x80, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x03, 0xEE, 0x80, + 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x03, + 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x02, 0xFD, 0x03, 0xFE, 0x03, + 0xFF, 0x80, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, + 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, + 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, + 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, + 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x08, 0xB5, 0x06, 0xB6, 0x0E, 0xB7, 0x80, 0xB8, 0x02, 0xB7, + 0x04, 0xB8, 0x02, 0xB7, 0x80, 0xB8, 0x0D, 0xB7, 0x07, 0xB6, 0x06, 0xB5, 0x05, 0xC3, 0x05, 0xC4, + 0x03, 0xC5, 0x03, 0xC6, 0x03, 0xC7, 0x03, 0xC8, 0x02, 0xC9, 0x02, 0xCA, 0x02, 0xDB, 0x80, 0xDC, + 0x03, 0xDD, 0x81, 0xDE, 0xDF, 0x03, 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x80, 0xE4, 0x02, + 0xE5, 0x81, 0xE6, 0xE7, 0x02, 0xE8, 0x80, 0xE9, 0x02, 0xEA, 0x80, 0xEB, 0x02, 0xEC, 0x02, 0xED, + 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x03, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x03, 0xF5, + 0x03, 0xF6, 0x03, 0xF7, 0x02, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x02, 0xFD, + 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, + 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, + 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, + 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, + 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x04, 0xC3, 0x08, 0xB5, 0x0B, 0xB6, 0x14, + 0xB7, 0x81, 0xB6, 0xB7, 0x08, 0xB6, 0x07, 0xB5, 0x06, 0xC3, 0x04, 0xC4, 0x05, 0xC5, 0x03, 0xC6, + 0x04, 0xC7, 0x02, 0xC8, 0x03, 0xC9, 0x80, 0xCA, 0x02, 0xDB, 0x02, 0xDC, 0x02, 0xDD, 0x02, 0xDE, + 0x80, 0xDF, 0x02, 0xE0, 0x02, 0xE1, 0x03, 0xE2, 0x02, 0xE3, 0x80, 0xE4, 0x02, 0xE5, 0x81, 0xE6, + 0xE7, 0x02, 0xE8, 0x80, 0xE9, 0x02, 0xEA, 0x80, 0xEB, 0x03, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, + 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x03, + 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x02, + 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, + 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, + 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x03, 0x8F, 0x80, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x02, + 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, + 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x09, 0xC3, 0x0B, 0xB5, 0x1B, 0xB6, 0x08, 0xB5, 0x07, 0xC3, 0x06, + 0xC4, 0x05, 0xC5, 0x02, 0xC6, 0x04, 0xC7, 0x03, 0xC8, 0x03, 0xC9, 0x02, 0xCA, 0x02, 0xDB, 0x02, + 0xDC, 0x02, 0xDD, 0x02, 0xDE, 0x80, 0xDF, 0x02, 0xE0, 0x02, 0xE1, 0x03, 0xE2, 0x02, 0xE3, 0x80, + 0xE4, 0x02, 0xE5, 0x81, 0xE6, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x81, 0xEA, 0xEB, 0x02, 0xEC, 0x03, + 0xED, 0x03, 0xEE, 0x80, 0xEF, 0x02, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x02, 0xF3, 0x03, 0xF4, 0x03, + 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x02, + 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, + 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, + 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x03, 0x8F, 0x80, + 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, + 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x04, 0xC4, 0x09, 0xC3, 0x81, + 0xB5, 0xC3, 0x0F, 0xB5, 0x02, 0xB6, 0x80, 0xB5, 0x02, 0xB6, 0x0E, 0xB5, 0x81, 0xC3, 0xB5, 0x08, + 0xC3, 0x06, 0xC4, 0x05, 0xC5, 0x04, 0xC6, 0x03, 0xC7, 0x03, 0xC8, 0x02, 0xC9, 0x03, 0xCA, 0x02, + 0xDB, 0x02, 0xDC, 0x03, 0xDD, 0x80, 0xDE, 0x02, 0xDF, 0x02, 0xE0, 0x02, 0xE1, 0x02, 0xE2, 0x03, + 0xE3, 0x80, 0xE4, 0x02, 0xE5, 0x81, 0xE6, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x80, 0xEA, 0x02, 0xEB, + 0x02, 0xEC, 0x02, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x03, 0xF2, 0x03, 0xF3, + 0x03, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x02, 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFB, + 0x02, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, + 0x03, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x80, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, + 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x03, 0x91, 0x80, 0x90, + 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x03, 0x88, 0x80, 0x87, + 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x08, 0xC4, + 0x10, 0xC3, 0x11, 0xB5, 0x0D, 0xC3, 0x08, 0xC4, 0x05, 0xC5, 0x04, 0xC6, 0x04, 0xC7, 0x03, 0xC8, + 0x03, 0xC9, 0x02, 0xCA, 0x03, 0xDB, 0x80, 0xDC, 0x03, 0xDD, 0x02, 0xDE, 0x80, 0xDF, 0x02, 0xE0, + 0x03, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x02, 0xE4, 0x02, 0xE5, 0x81, 0xE6, 0xE7, 0x02, 0xE8, 0x02, + 0xE9, 0x80, 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x03, 0xED, 0x02, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x02, + 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x03, + 0xF9, 0x03, 0xFA, 0x02, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x02, + 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x03, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, + 0xA9, 0x02, 0xA8, 0x80, 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, + 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x03, + 0x88, 0x80, 0x87, 0x03, 0x86, 0x02, 0x85, 0x03, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, + 0x6A, 0x03, 0xC5, 0x81, 0xC4, 0xC5, 0x0B, 0xC4, 0x21, 0xC3, 0x09, 0xC4, 0x06, 0xC5, 0x04, 0xC6, + 0x05, 0xC7, 0x03, 0xC8, 0x03, 0xC9, 0x02, 0xCA, 0x03, 0xDB, 0x02, 0xDC, 0x03, 0xDD, 0x80, 0xDE, + 0x02, 0xDF, 0x02, 0xE0, 0x02, 0xE1, 0x03, 0xE2, 0x02, 0xE3, 0x02, 0xE4, 0x02, 0xE5, 0x81, 0xE6, + 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x80, 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x03, 0xED, 0x02, 0xEE, 0x03, + 0xEF, 0x80, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x02, 0xF5, 0x04, 0xF6, 0x03, + 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x02, 0xFE, 0x03, + 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, + 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, + 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, + 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, + 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x09, 0xC5, 0x0E, 0xC4, 0x0B, 0xC3, 0x80, 0xC4, 0x04, 0xC3, 0x81, + 0xC4, 0xC3, 0x0C, 0xC4, 0x07, 0xC5, 0x05, 0xC6, 0x06, 0xC7, 0x03, 0xC8, 0x03, 0xC9, 0x03, 0xCA, + 0x02, 0xDB, 0x02, 0xDC, 0x03, 0xDD, 0x02, 0xDE, 0x02, 0xDF, 0x80, 0xE0, 0x04, 0xE1, 0x02, 0xE2, + 0x02, 0xE3, 0x02, 0xE4, 0x02, 0xE5, 0x81, 0xE6, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x80, 0xEA, 0x02, + 0xEB, 0x02, 0xEC, 0x03, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x80, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x03, + 0xF3, 0x03, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x02, + 0xFB, 0x04, 0xFC, 0x02, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, + 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, + 0xA8, 0x02, 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, + 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, + 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x03, + 0xC6, 0x0D, 0xC5, 0x1F, 0xC4, 0x0A, 0xC5, 0x05, 0xC6, 0x06, 0xC7, 0x04, 0xC8, 0x03, 0xC9, 0x02, + 0xCA, 0x03, 0xDB, 0x03, 0xDC, 0x02, 0xDD, 0x80, 0xDE, 0x02, 0xDF, 0x03, 0xE0, 0x03, 0xE1, 0x03, + 0xE2, 0x02, 0xE3, 0x02, 0xE4, 0x02, 0xE5, 0x81, 0xE6, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x02, 0xEA, + 0x80, 0xEB, 0x02, 0xEC, 0x03, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x02, 0xF1, 0x03, 0xF2, + 0x03, 0xF3, 0x04, 0xF4, 0x02, 0xF5, 0x03, 0xF6, 0x04, 0xF7, 0x03, 0xF8, 0x02, 0xF9, 0x04, 0xFA, + 0x02, 0xFB, 0x04, 0xFC, 0x81, 0xFD, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x80, 0xB3, 0x03, + 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, + 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, + 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, + 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, + 0xC7, 0x09, 0xC6, 0x12, 0xC5, 0x82, 0xC4, 0xC5, 0xC4, 0x14, 0xC5, 0x06, 0xC6, 0x06, 0xC7, 0x04, + 0xC8, 0x05, 0xC9, 0x02, 0xCA, 0x03, 0xDB, 0x02, 0xDC, 0x03, 0xDD, 0x02, 0xDE, 0x02, 0xDF, 0x02, + 0xE0, 0x03, 0xE1, 0x03, 0xE2, 0x03, 0xE3, 0x80, 0xE4, 0x02, 0xE5, 0x02, 0xE6, 0x80, 0xE7, 0x02, + 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x80, 0xEC, 0x03, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, + 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x03, + 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, + 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x03, 0xB1, 0x80, 0xAF, 0x03, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, + 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x03, 0xA5, 0x80, 0xA4, 0x03, 0xA3, 0x02, + 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, + 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, + 0x6B, 0x02, 0x6A, 0x07, 0xC7, 0x0A, 0xC6, 0x1B, 0xC5, 0x0B, 0xC6, 0x06, 0xC7, 0x05, 0xC8, 0x04, + 0xC9, 0x03, 0xCA, 0x02, 0xDB, 0x03, 0xDC, 0x03, 0xDD, 0x03, 0xDE, 0x02, 0xDF, 0x02, 0xE0, 0x03, + 0xE1, 0x03, 0xE2, 0x03, 0xE3, 0x80, 0xE4, 0x02, 0xE5, 0x80, 0xE6, 0x02, 0xE7, 0x02, 0xE8, 0x02, + 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x04, + 0xF1, 0x02, 0xF2, 0x03, 0xF3, 0x04, 0xF4, 0x02, 0xF5, 0x04, 0xF6, 0x03, 0xF7, 0x03, 0xF8, 0x03, + 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x02, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, + 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, + 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, + 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, + 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, + 0x6A, 0x80, 0xC8, 0x0B, 0xC7, 0x24, 0xC6, 0x09, 0xC7, 0x05, 0xC8, 0x05, 0xC9, 0x03, 0xCA, 0x03, + 0xDB, 0x03, 0xDC, 0x03, 0xDD, 0x02, 0xDE, 0x03, 0xDF, 0x02, 0xE0, 0x03, 0xE1, 0x03, 0xE2, 0x03, + 0xE3, 0x02, 0xE4, 0x02, 0xE5, 0x80, 0xE6, 0x02, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, + 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x03, 0xF0, 0x02, 0xF1, 0x04, 0xF2, 0x02, + 0xF3, 0x04, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x04, 0xF8, 0x02, 0xF9, 0x03, 0xFA, 0x03, + 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, + 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x80, 0xAA, 0x03, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, + 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x06, 0xC8, + 0x81, 0xC7, 0xC8, 0x0C, 0xC7, 0x80, 0xC6, 0x04, 0xC7, 0x0B, 0xC6, 0x80, 0xC7, 0x02, 0xC6, 0x0E, + 0xC7, 0x06, 0xC8, 0x05, 0xC9, 0x03, 0xCA, 0x04, 0xDB, 0x03, 0xDC, 0x03, 0xDD, 0x03, 0xDE, 0x02, + 0xDF, 0x03, 0xE0, 0x03, 0xE1, 0x03, 0xE2, 0x03, 0xE3, 0x80, 0xE4, 0x03, 0xE5, 0x80, 0xE6, 0x02, + 0xE7, 0x80, 0xE8, 0x02, 0xE9, 0x03, 0xEA, 0x80, 0xEB, 0x02, 0xEC, 0x04, 0xED, 0x03, 0xEE, 0x02, + 0xEF, 0x02, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x04, + 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x02, + 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, + 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, + 0xA3, 0x02, 0x92, 0x02, 0x91, 0x80, 0x90, 0x03, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, + 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, + 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x04, 0xC9, 0x09, 0xC8, 0x22, 0xC7, 0x08, 0xC8, 0x04, 0xC9, 0x81, + 0xCA, 0xC9, 0x04, 0xCA, 0x03, 0xDB, 0x03, 0xDC, 0x03, 0xDD, 0x03, 0xDE, 0x03, 0xDF, 0x02, 0xE0, + 0x04, 0xE1, 0x03, 0xE2, 0x03, 0xE3, 0x02, 0xE4, 0x02, 0xE5, 0x02, 0xE6, 0x02, 0xE7, 0x80, 0xE8, + 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x04, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, + 0x03, 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x03, 0xF4, 0x04, 0xF5, 0x03, 0xF6, 0x03, 0xF7, 0x04, 0xF8, + 0x02, 0xF9, 0x04, 0xFA, 0x03, 0xFB, 0x02, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x03, 0xFF, + 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x03, 0xAE, 0x02, 0xAD, 0x02, 0xAC, + 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x03, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x02, 0xA3, + 0x02, 0x92, 0x03, 0x91, 0x80, 0x90, 0x03, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, + 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, + 0x03, 0x6B, 0x02, 0x6A, 0x09, 0xC9, 0x10, 0xC8, 0x82, 0xC7, 0xC8, 0xC7, 0x02, 0xC8, 0x02, 0xC7, + 0x02, 0xC8, 0x02, 0xC7, 0x0A, 0xC8, 0x80, 0xC9, 0x02, 0xC8, 0x07, 0xC9, 0x04, 0xCA, 0x05, 0xDB, + 0x04, 0xDC, 0x04, 0xDD, 0x02, 0xDE, 0x03, 0xDF, 0x03, 0xE0, 0x03, 0xE1, 0x04, 0xE2, 0x03, 0xE3, + 0x80, 0xE4, 0x03, 0xE5, 0x02, 0xE6, 0x80, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, + 0x03, 0xEC, 0x03, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x03, 0xF3, + 0x04, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x04, 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFB, + 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, + 0x02, 0xAF, 0x02, 0xAE, 0x03, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, + 0x02, 0xA6, 0x03, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x03, 0x91, 0x80, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x02, 0x8D, 0x03, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, + 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x80, 0x69, 0x06, 0xCA, + 0x81, 0xC9, 0xCA, 0x08, 0xC9, 0x81, 0xC8, 0xC9, 0x17, 0xC8, 0x0A, 0xC9, 0x06, 0xCA, 0x06, 0xDB, + 0x02, 0xDC, 0x04, 0xDD, 0x04, 0xDE, 0x03, 0xDF, 0x03, 0xE0, 0x03, 0xE1, 0x04, 0xE2, 0x03, 0xE3, + 0x02, 0xE4, 0x02, 0xE5, 0x02, 0xE6, 0x02, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, + 0x02, 0xEC, 0x04, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x04, 0xF3, + 0x03, 0xF4, 0x03, 0xF5, 0x04, 0xF6, 0x03, 0xF7, 0x04, 0xF8, 0x02, 0xF9, 0x04, 0xFA, 0x03, 0xFB, + 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, 0xB1, + 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, + 0x02, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, + 0x02, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, + 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x04, 0xDB, 0x08, + 0xCA, 0x22, 0xC9, 0x06, 0xCA, 0x07, 0xDB, 0x03, 0xDC, 0x06, 0xDD, 0x02, 0xDE, 0x03, 0xDF, 0x03, + 0xE0, 0x04, 0xE1, 0x04, 0xE2, 0x03, 0xE3, 0x02, 0xE4, 0x03, 0xE5, 0x80, 0xE6, 0x02, 0xE7, 0x03, + 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x04, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, + 0xF0, 0x04, 0xF1, 0x02, 0xF2, 0x04, 0xF3, 0x04, 0xF4, 0x03, 0xF5, 0x03, 0xF6, 0x04, 0xF7, 0x03, + 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x02, 0xFE, 0x03, + 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x03, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, + 0xAC, 0x80, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x02, + 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x02, + 0x8B, 0x03, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, + 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x02, 0xDC, 0x09, 0xDB, 0x0B, 0xCA, 0x02, 0xC9, 0x80, 0xCA, + 0x02, 0xC9, 0x80, 0xCA, 0x03, 0xC9, 0x03, 0xCA, 0x02, 0xC9, 0x0A, 0xCA, 0x08, 0xDB, 0x05, 0xDC, + 0x04, 0xDD, 0x04, 0xDE, 0x03, 0xDF, 0x04, 0xE0, 0x04, 0xE1, 0x04, 0xE2, 0x04, 0xE3, 0x02, 0xE4, + 0x02, 0xE5, 0x02, 0xE6, 0x02, 0xE7, 0x02, 0xE8, 0x03, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, 0xEC, + 0x04, 0xED, 0x03, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x03, 0xF1, 0x04, 0xF2, 0x03, 0xF3, 0x04, 0xF4, + 0x03, 0xF5, 0x03, 0xF6, 0x04, 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x03, 0xFB, 0x03, 0xFC, + 0x03, 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x03, 0xAF, + 0x02, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, + 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, + 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x03, 0x85, + 0x02, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x07, 0xDC, 0x0D, 0xDB, 0x81, + 0xCA, 0xDB, 0x0C, 0xCA, 0x02, 0xDB, 0x02, 0xCA, 0x0B, 0xDB, 0x06, 0xDC, 0x06, 0xDD, 0x03, 0xDE, + 0x04, 0xDF, 0x04, 0xE0, 0x04, 0xE1, 0x04, 0xE2, 0x04, 0xE3, 0x02, 0xE4, 0x03, 0xE5, 0x80, 0xE6, + 0x03, 0xE7, 0x02, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x03, 0xEC, 0x04, 0xED, 0x03, 0xEE, + 0x02, 0xEF, 0x02, 0xF0, 0x04, 0xF1, 0x03, 0xF2, 0x04, 0xF3, 0x03, 0xF4, 0x03, 0xF5, 0x04, 0xF6, + 0x03, 0xF7, 0x04, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x04, 0xFC, 0x02, 0xFD, 0x80, 0xB0, + 0x02, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, + 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x03, 0xA7, 0x02, 0xA6, 0x02, 0xA5, + 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x03, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, + 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x02, 0x85, 0x03, 0x84, + 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x06, 0xDD, 0x08, 0xDC, 0x1A, 0xDB, 0x81, + 0xDC, 0xDB, 0x08, 0xDC, 0x07, 0xDD, 0x04, 0xDE, 0x04, 0xDF, 0x03, 0xE0, 0x81, 0xE1, 0xE0, 0x03, + 0xE1, 0x05, 0xE2, 0x04, 0xE3, 0x02, 0xE4, 0x03, 0xE5, 0x80, 0xE6, 0x03, 0xE7, 0x02, 0xE8, 0x03, + 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x03, 0xEC, 0x03, 0xED, 0x04, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x04, + 0xF1, 0x03, 0xF2, 0x03, 0xF3, 0x04, 0xF4, 0x04, 0xF5, 0x03, 0xF6, 0x04, 0xF7, 0x03, 0xF8, 0x03, + 0xF9, 0x03, 0xFA, 0x04, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, + 0xB3, 0x02, 0xB2, 0x03, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x80, 0xAA, 0x03, + 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x03, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x80, 0x92, 0x03, + 0x91, 0x80, 0x90, 0x03, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, + 0x88, 0x03, 0x87, 0x03, 0x86, 0x80, 0x85, 0x02, 0x84, 0x03, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, + 0x6A, 0x69, 0x03, 0xDE, 0x0A, 0xDD, 0x02, 0xDC, 0x80, 0xDD, 0x1A, 0xDC, 0x09, 0xDD, 0x07, 0xDE, + 0x03, 0xDF, 0x06, 0xE0, 0x05, 0xE1, 0x04, 0xE2, 0x04, 0xE3, 0x02, 0xE4, 0x03, 0xE5, 0x02, 0xE6, + 0x02, 0xE7, 0x03, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x03, 0xEB, 0x03, 0xEC, 0x03, 0xED, 0x04, 0xEE, + 0x02, 0xEF, 0x03, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x04, 0xF3, 0x04, 0xF4, 0x03, 0xF5, 0x04, 0xF6, + 0x03, 0xF7, 0x03, 0xF8, 0x04, 0xF9, 0x03, 0xFA, 0x03, 0xFB, 0x04, 0xFC, 0x02, 0xFD, 0x80, 0xB0, + 0x03, 0xFE, 0x02, 0xFF, 0x03, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x03, 0xAF, 0x02, 0xAE, + 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x80, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x03, 0xA5, + 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x03, 0x91, 0x80, 0x90, 0x03, 0x8F, 0x02, 0x8E, 0x02, 0x8D, + 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x03, 0x84, + 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x81, 0x6A, 0x69, 0x03, 0xDF, 0x05, 0xDE, 0x25, 0xDD, 0x09, + 0xDE, 0x04, 0xDF, 0x05, 0xE0, 0x06, 0xE1, 0x05, 0xE2, 0x04, 0xE3, 0x02, 0xE4, 0x03, 0xE5, 0x02, + 0xE6, 0x03, 0xE7, 0x02, 0xE8, 0x03, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x03, 0xEC, 0x04, 0xED, 0x04, + 0xEE, 0x02, 0xEF, 0x03, 0xF0, 0x03, 0xF1, 0x03, 0xF2, 0x04, 0xF3, 0x04, 0xF4, 0x03, 0xF5, 0x04, + 0xF6, 0x03, 0xF7, 0x04, 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x03, 0xFB, 0x03, 0xFC, 0x03, 0xFD, 0x04, + 0xFE, 0x02, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x03, + 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, + 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, + 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x82, 0x69, 0xDF, 0xE0, 0x04, 0xDF, 0x0D, 0xDE, 0x0E, + 0xDD, 0x80, 0xDE, 0x03, 0xDD, 0x09, 0xDE, 0x07, 0xDF, 0x06, 0xE0, 0x06, 0xE1, 0x06, 0xE2, 0x04, + 0xE3, 0x03, 0xE4, 0x03, 0xE5, 0x03, 0xE6, 0x02, 0xE7, 0x03, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x03, + 0xEB, 0x03, 0xEC, 0x04, 0xED, 0x04, 0xEE, 0x02, 0xEF, 0x02, 0xF0, 0x04, 0xF1, 0x04, 0xF2, 0x03, + 0xF3, 0x04, 0xF4, 0x04, 0xF5, 0x03, 0xF6, 0x04, 0xF7, 0x03, 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x03, + 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x02, + 0xB1, 0x03, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, + 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x80, 0x69, 0x06, + 0xE0, 0x0A, 0xDF, 0x14, 0xDE, 0x83, 0xDF, 0xDE, 0xDF, 0xDE, 0x07, 0xDF, 0x08, 0xE0, 0x07, 0xE1, + 0x06, 0xE2, 0x05, 0xE3, 0x03, 0xE4, 0x03, 0xE5, 0x02, 0xE6, 0x03, 0xE7, 0x03, 0xE8, 0x02, 0xE9, + 0x03, 0xEA, 0x03, 0xEB, 0x03, 0xEC, 0x04, 0xED, 0x03, 0xEE, 0x03, 0xEF, 0x02, 0xF0, 0x03, 0xF1, + 0x05, 0xF2, 0x03, 0xF3, 0x04, 0xF4, 0x04, 0xF5, 0x03, 0xF6, 0x04, 0xF7, 0x04, 0xF8, 0x03, 0xF9, + 0x03, 0xFA, 0x03, 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x02, 0xFF, 0x02, 0xB4, + 0x03, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x03, 0xAE, 0x02, 0xAD, 0x02, 0xAC, 0x03, 0xAA, + 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, + 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x03, 0x8B, 0x80, 0x89, + 0x03, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x03, 0x82, 0x02, 0x6B, + 0x02, 0x6A, 0x80, 0x69, 0x02, 0xE1, 0x81, 0xE0, 0xE1, 0x09, 0xE0, 0x03, 0xDF, 0x80, 0xE0, 0x17, + 0xDF, 0x0B, 0xE0, 0x09, 0xE1, 0x05, 0xE2, 0x06, 0xE3, 0x02, 0xE4, 0x04, 0xE5, 0x02, 0xE6, 0x03, + 0xE7, 0x03, 0xE8, 0x03, 0xE9, 0x02, 0xEA, 0x03, 0xEB, 0x03, 0xEC, 0x04, 0xED, 0x04, 0xEE, 0x02, + 0xEF, 0x03, 0xF0, 0x04, 0xF1, 0x04, 0xF2, 0x03, 0xF3, 0x04, 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x03, + 0xF7, 0x04, 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x03, 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x03, 0xFE, 0x03, + 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x03, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x03, 0xAD, 0x02, + 0xAC, 0x02, 0xAA, 0x03, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x02, + 0xA3, 0x02, 0x92, 0x03, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, + 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x02, 0x86, 0x03, 0x85, 0x02, 0x84, 0x02, 0x83, 0x03, + 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x80, 0x69, 0x09, 0xE1, 0x23, 0xE0, 0x0A, 0xE1, 0x08, 0xE2, 0x05, + 0xE3, 0x04, 0xE4, 0x03, 0xE5, 0x04, 0xE6, 0x02, 0xE7, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xEA, 0x03, + 0xEB, 0x03, 0xEC, 0x04, 0xED, 0x04, 0xEE, 0x02, 0xEF, 0x03, 0xF0, 0x04, 0xF1, 0x04, 0xF2, 0x03, + 0xF3, 0x04, 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x04, 0xF7, 0x03, 0xF8, 0x04, 0xF9, 0x03, 0xFA, 0x03, + 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x04, 0xFE, 0x02, 0xFF, 0x03, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x03, + 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x03, + 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x03, + 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x03, + 0x86, 0x80, 0x85, 0x03, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x81, 0x69, 0xE2, + 0x14, 0xE1, 0x02, 0xE0, 0x80, 0xE1, 0x02, 0xE0, 0x03, 0xE1, 0x81, 0xE0, 0xE1, 0x02, 0xE0, 0x03, + 0xE1, 0x80, 0xE0, 0x0C, 0xE1, 0x09, 0xE2, 0x06, 0xE3, 0x04, 0xE4, 0x04, 0xE5, 0x03, 0xE6, 0x03, + 0xE7, 0x03, 0xE8, 0x03, 0xE9, 0x03, 0xEA, 0x02, 0xEB, 0x04, 0xEC, 0x04, 0xED, 0x05, 0xEE, 0x02, + 0xEF, 0x03, 0xF0, 0x04, 0xF1, 0x03, 0xF2, 0x04, 0xF3, 0x04, 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x04, + 0xF7, 0x04, 0xF8, 0x03, 0xF9, 0x03, 0xFA, 0x04, 0xFB, 0x03, 0xFC, 0x04, 0xFD, 0x03, 0xFE, 0x03, + 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x03, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x03, 0xAD, 0x02, + 0xAC, 0x03, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, + 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x03, + 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x03, 0x84, 0x02, 0x83, 0x03, + 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x02, 0x69, 0x09, 0xE2, 0x22, 0xE1, 0x81, 0xE2, 0xE1, 0x0A, 0xE2, + 0x06, 0xE3, 0x04, 0xE4, 0x04, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x04, 0xE8, 0x03, 0xE9, 0x03, 0xEA, + 0x03, 0xEB, 0x03, 0xEC, 0x05, 0xED, 0x04, 0xEE, 0x03, 0xEF, 0x03, 0xF0, 0x03, 0xF1, 0x05, 0xF2, + 0x03, 0xF3, 0x04, 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x04, 0xF7, 0x04, 0xF8, 0x03, 0xF9, 0x04, 0xFA, + 0x03, 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x02, 0xB3, + 0x02, 0xB2, 0x03, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x03, 0xAD, 0x02, 0xAC, 0x02, 0xAA, 0x03, 0xA9, + 0x02, 0xA8, 0x02, 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, + 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, + 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x03, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, + 0x02, 0x69, 0x02, 0xE3, 0x13, 0xE2, 0x05, 0xE1, 0x80, 0xE2, 0x05, 0xE1, 0x11, 0xE2, 0x09, 0xE3, + 0x04, 0xE4, 0x05, 0xE5, 0x03, 0xE6, 0x03, 0xE7, 0x04, 0xE8, 0x03, 0xE9, 0x03, 0xEA, 0x04, 0xEB, + 0x03, 0xEC, 0x04, 0xED, 0x05, 0xEE, 0x03, 0xEF, 0x02, 0xF0, 0x04, 0xF1, 0x04, 0xF2, 0x04, 0xF3, + 0x05, 0xF4, 0x03, 0xF5, 0x05, 0xF6, 0x04, 0xF7, 0x03, 0xF8, 0x04, 0xF9, 0x04, 0xFA, 0x03, 0xFB, + 0x03, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, + 0x02, 0xB1, 0x03, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, + 0x03, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x03, 0x91, 0x02, 0x90, + 0x02, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x03, 0x8B, 0x80, 0x89, 0x03, 0x88, 0x02, 0x87, + 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, + 0x0B, 0xE3, 0x1E, 0xE2, 0x81, 0xE3, 0xE2, 0x0A, 0xE3, 0x05, 0xE4, 0x05, 0xE5, 0x05, 0xE6, 0x03, + 0xE7, 0x03, 0xE8, 0x04, 0xE9, 0x04, 0xEA, 0x02, 0xEB, 0x04, 0xEC, 0x05, 0xED, 0x04, 0xEE, 0x03, + 0xEF, 0x03, 0xF0, 0x04, 0xF1, 0x05, 0xF2, 0x03, 0xF3, 0x05, 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x03, + 0xF7, 0x05, 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x03, 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x04, 0xFE, 0x03, + 0xFF, 0x02, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x03, 0xB1, 0x02, 0xAF, 0x02, 0xAE, 0x03, 0xAD, 0x03, + 0xAC, 0x80, 0xAA, 0x03, 0xA9, 0x02, 0xA8, 0x03, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, + 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x03, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, + 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, + 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x02, 0xE4, 0x14, 0xE3, 0x88, 0xE2, 0xE3, 0xE2, 0xE3, + 0xE2, 0xE3, 0xE2, 0xE3, 0xE2, 0x11, 0xE3, 0x06, 0xE4, 0x06, 0xE5, 0x05, 0xE6, 0x02, 0xE7, 0x05, + 0xE8, 0x04, 0xE9, 0x03, 0xEA, 0x03, 0xEB, 0x04, 0xEC, 0x05, 0xED, 0x05, 0xEE, 0x03, 0xEF, 0x03, + 0xF0, 0x04, 0xF1, 0x04, 0xF2, 0x04, 0xF3, 0x05, 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x04, 0xF7, 0x04, + 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x03, 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, + 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x03, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, + 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x03, 0xA5, 0x02, 0xA4, 0x03, + 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x02, 0x8C, 0x02, + 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, + 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x0A, 0xE4, 0x20, 0xE3, 0x07, 0xE4, 0x08, 0xE5, 0x03, + 0xE6, 0x04, 0xE7, 0x05, 0xE8, 0x04, 0xE9, 0x04, 0xEA, 0x03, 0xEB, 0x04, 0xEC, 0x06, 0xED, 0x04, + 0xEE, 0x04, 0xEF, 0x03, 0xF0, 0x04, 0xF1, 0x04, 0xF2, 0x04, 0xF3, 0x05, 0xF4, 0x04, 0xF5, 0x04, + 0xF6, 0x04, 0xF7, 0x04, 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x04, 0xFB, 0x03, 0xFC, 0x04, 0xFD, 0x03, + 0xFE, 0x03, 0xFF, 0x03, 0xB4, 0x02, 0xB3, 0x03, 0xB2, 0x02, 0xB1, 0x02, 0xAF, 0x03, 0xAE, 0x02, + 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x03, + 0xA4, 0x02, 0xA3, 0x03, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x80, + 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x02, 0x86, 0x02, 0x85, 0x03, 0x84, 0x03, + 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x08, 0xE5, 0x10, 0xE4, 0x80, 0xE3, 0x12, + 0xE4, 0x08, 0xE5, 0x06, 0xE6, 0x04, 0xE7, 0x06, 0xE8, 0x04, 0xE9, 0x04, 0xEA, 0x03, 0xEB, 0x04, + 0xEC, 0x06, 0xED, 0x05, 0xEE, 0x03, 0xEF, 0x03, 0xF0, 0x04, 0xF1, 0x05, 0xF2, 0x04, 0xF3, 0x05, + 0xF4, 0x03, 0xF5, 0x05, 0xF6, 0x04, 0xF7, 0x04, 0xF8, 0x04, 0xF9, 0x03, 0xFA, 0x04, 0xFB, 0x04, + 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, + 0xB1, 0x03, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x03, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x03, 0x90, 0x02, + 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x80, 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, + 0x86, 0x02, 0x85, 0x03, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x02, + 0xE6, 0x10, 0xE5, 0x05, 0xE4, 0x80, 0xE5, 0x04, 0xE4, 0x02, 0xE5, 0x02, 0xE4, 0x0E, 0xE5, 0x07, + 0xE6, 0x04, 0xE7, 0x06, 0xE8, 0x05, 0xE9, 0x05, 0xEA, 0x03, 0xEB, 0x05, 0xEC, 0x05, 0xED, 0x05, + 0xEE, 0x03, 0xEF, 0x04, 0xF0, 0x04, 0xF1, 0x05, 0xF2, 0x04, 0xF3, 0x05, 0xF4, 0x04, 0xF5, 0x04, + 0xF6, 0x04, 0xF7, 0x04, 0xF8, 0x04, 0xF9, 0x04, 0xFA, 0x03, 0xFB, 0x05, 0xFC, 0x03, 0xFD, 0x03, + 0xFE, 0x03, 0xFF, 0x03, 0xB4, 0x02, 0xB3, 0x02, 0xB2, 0x03, 0xB1, 0x02, 0xAF, 0x03, 0xAE, 0x02, + 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x03, 0xA5, 0x02, + 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x03, 0x8F, 0x02, 0x8E, 0x02, 0x8D, 0x02, + 0x8C, 0x02, 0x8B, 0x03, 0x89, 0x02, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, 0x85, 0x03, 0x84, 0x02, + 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x02, 0xE7, 0x08, 0xE6, 0x03, 0xE5, 0x80, + 0xE6, 0x19, 0xE5, 0x09, 0xE6, 0x05, 0xE7, 0x06, 0xE8, 0x06, 0xE9, 0x04, 0xEA, 0x05, 0xEB, 0x04, + 0xEC, 0x06, 0xED, 0x05, 0xEE, 0x04, 0xEF, 0x03, 0xF0, 0x05, 0xF1, 0x05, 0xF2, 0x04, 0xF3, 0x05, + 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x04, 0xF7, 0x05, 0xF8, 0x03, 0xF9, 0x04, 0xFA, 0x04, 0xFB, 0x04, + 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, + 0xB1, 0x03, 0xAF, 0x02, 0xAE, 0x03, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x02, 0xA8, 0x03, + 0xA7, 0x02, 0xA6, 0x02, 0xA5, 0x03, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x03, 0x8E, 0x02, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x03, + 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x03, 0x82, 0x02, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x80, + 0x68, 0x09, 0xE7, 0x1E, 0xE6, 0x0A, 0xE7, 0x06, 0xE8, 0x07, 0xE9, 0x04, 0xEA, 0x04, 0xEB, 0x06, + 0xEC, 0x06, 0xED, 0x06, 0xEE, 0x03, 0xEF, 0x03, 0xF0, 0x05, 0xF1, 0x05, 0xF2, 0x04, 0xF3, 0x06, + 0xF4, 0x04, 0xF5, 0x04, 0xF6, 0x04, 0xF7, 0x05, 0xF8, 0x04, 0xF9, 0x03, 0xFA, 0x04, 0xFB, 0x04, + 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x03, 0xB4, 0x02, 0xB3, 0x03, 0xB2, 0x02, + 0xB1, 0x03, 0xAF, 0x02, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x03, 0xA9, 0x02, 0xA8, 0x02, + 0xA7, 0x03, 0xA6, 0x02, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x03, 0x91, 0x02, 0x90, 0x02, + 0x8F, 0x02, 0x8E, 0x03, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x03, + 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x02, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x80, + 0x68, 0x07, 0xE8, 0x21, 0xE7, 0x0C, 0xE8, 0x06, 0xE9, 0x05, 0xEA, 0x05, 0xEB, 0x05, 0xEC, 0x07, + 0xED, 0x05, 0xEE, 0x05, 0xEF, 0x03, 0xF0, 0x05, 0xF1, 0x05, 0xF2, 0x04, 0xF3, 0x05, 0xF4, 0x04, + 0xF5, 0x05, 0xF6, 0x05, 0xF7, 0x04, 0xF8, 0x04, 0xF9, 0x03, 0xFA, 0x04, 0xFB, 0x04, 0xFC, 0x04, + 0xFD, 0x03, 0xFE, 0x03, 0xFF, 0x03, 0xB4, 0x03, 0xB3, 0x02, 0xB2, 0x02, 0xB1, 0x03, 0xAF, 0x02, + 0xAE, 0x03, 0xAD, 0x02, 0xAC, 0x03, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, 0xA6, 0x03, + 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x03, 0x8F, 0x02, 0x8E, 0x02, + 0x8D, 0x02, 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, + 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x02, 0x6A, 0x02, 0x69, 0x80, 0x68, 0x03, 0xE9, 0x0F, + 0xE8, 0x82, 0xE7, 0xE8, 0xE7, 0x07, 0xE8, 0x02, 0xE7, 0x0F, 0xE8, 0x09, 0xE9, 0x06, 0xEA, 0x05, + 0xEB, 0x06, 0xEC, 0x07, 0xED, 0x06, 0xEE, 0x04, 0xEF, 0x03, 0xF0, 0x05, 0xF1, 0x05, 0xF2, 0x05, + 0xF3, 0x05, 0xF4, 0x04, 0xF5, 0x05, 0xF6, 0x05, 0xF7, 0x04, 0xF8, 0x04, 0xF9, 0x04, 0xFA, 0x04, + 0xFB, 0x04, 0xFC, 0x03, 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x02, + 0xB2, 0x03, 0xB1, 0x02, 0xAF, 0x03, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x03, 0xA9, 0x02, + 0xA8, 0x03, 0xA7, 0x02, 0xA6, 0x03, 0xA5, 0x02, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x03, 0x91, 0x02, + 0x90, 0x03, 0x8F, 0x80, 0x8E, 0x03, 0x8D, 0x02, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, + 0x87, 0x03, 0x86, 0x02, 0x85, 0x02, 0x84, 0x03, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, + 0x69, 0x80, 0x68, 0x0C, 0xE9, 0x1B, 0xE8, 0x0A, 0xE9, 0x07, 0xEA, 0x05, 0xEB, 0x07, 0xEC, 0x07, + 0xED, 0x06, 0xEE, 0x04, 0xEF, 0x04, 0xF0, 0x05, 0xF1, 0x06, 0xF2, 0x04, 0xF3, 0x06, 0xF4, 0x04, + 0xF5, 0x05, 0xF6, 0x04, 0xF7, 0x05, 0xF8, 0x04, 0xF9, 0x04, 0xFA, 0x04, 0xFB, 0x04, 0xFC, 0x03, + 0xFD, 0x80, 0xB0, 0x03, 0xFE, 0x03, 0xFF, 0x03, 0xB4, 0x02, 0xB3, 0x03, 0xB2, 0x02, 0xB1, 0x03, + 0xAF, 0x03, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x02, 0xA9, 0x03, 0xA8, 0x02, 0xA7, 0x02, + 0xA6, 0x03, 0xA5, 0x03, 0xA4, 0x02, 0xA3, 0x02, 0x92, 0x03, 0x91, 0x80, 0x90, 0x03, 0x8F, 0x02, + 0x8E, 0x02, 0x8D, 0x03, 0x8C, 0x02, 0x8B, 0x02, 0x89, 0x03, 0x88, 0x02, 0x87, 0x03, 0x86, 0x02, + 0x85, 0x03, 0x84, 0x02, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x80, 0x68, 0x04, + 0xEA, 0x80, 0xE9, 0x02, 0xEA, 0x21, 0xE9, 0x81, 0xEA, 0xE9, 0x09, 0xEA, 0x07, 0xEB, 0x07, 0xEC, + 0x07, 0xED, 0x08, 0xEE, 0x04, 0xEF, 0x04, 0xF0, 0x05, 0xF1, 0x05, 0xF2, 0x05, 0xF3, 0x06, 0xF4, + 0x04, 0xF5, 0x05, 0xF6, 0x05, 0xF7, 0x04, 0xF8, 0x04, 0xF9, 0x05, 0xFA, 0x03, 0xFB, 0x04, 0xFC, + 0x04, 0xFD, 0x04, 0xFE, 0x03, 0xFF, 0x02, 0xB4, 0x03, 0xB3, 0x03, 0xB2, 0x02, 0xB1, 0x02, 0xAF, + 0x03, 0xAE, 0x02, 0xAD, 0x03, 0xAC, 0x02, 0xAA, 0x03, 0xA9, 0x02, 0xA8, 0x03, 0xA7, 0x02, 0xA6, + 0x03, 0xA5, 0x02, 0xA4, 0x03, 0xA3, 0x02, 0x92, 0x02, 0x91, 0x02, 0x90, 0x03, 0x8F, 0x02, 0x8E, + 0x02, 0x8D, 0x02, 0x8C, 0x03, 0x8B, 0x02, 0x89, 0x02, 0x88, 0x03, 0x87, 0x03, 0x86, 0x02, 0x85, + 0x02, 0x84, 0x03, 0x83, 0x03, 0x82, 0x03, 0x6B, 0x80, 0x6A, 0x03, 0x69, 0x80, 0x68, +}; +// clang-format on diff --git a/keyboards/dasky/reverb/graphics/splash.qgf.h b/keyboards/dasky/reverb/graphics/splash.qgf.h new file mode 100644 index 000000000000..15b5f4220c51 --- /dev/null +++ b/keyboards/dasky/reverb/graphics/splash.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2023 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics -i splash.png -f pal256` + +#pragma once + +#include + +extern const uint32_t gfx_splash_length; +extern const uint8_t gfx_splash[36030]; diff --git a/keyboards/dasky/reverb/halconf.h b/keyboards/dasky/reverb/halconf.h new file mode 100644 index 000000000000..bb437f8d5894 --- /dev/null +++ b/keyboards/dasky/reverb/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/dasky/reverb/info.json b/keyboards/dasky/reverb/info.json new file mode 100644 index 000000000000..b161ba8099a0 --- /dev/null +++ b/keyboards/dasky/reverb/info.json @@ -0,0 +1,198 @@ +{ + "manufacturer": "Dasky", + "keyboard_name": "Reverb", + "maintainer": "daskygit", + "bootloader": "rp2040", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "wpm": true, + "quantum_painter": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP12", "GP1", "GP4", "GP13", "GP6", "GP8", "GP27", "GP22"], + "rows": ["GP11", "GP7", "GP9", "GP28", "GP26", "GP10", "GP14"] + }, + "processor": "RP2040", + "rgb_matrix": { + "driver": "ws2812", + "animations": { + "solid_color": true, + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "layout": [ + {"matrix": [2, 1], "x": 95, "y": 13, "flags": 4}, + {"matrix": [2, 0], "x": 80, "y": 9, "flags": 4}, + {"matrix": [1, 1], "x": 65, "y": 2, "flags": 4}, + {"matrix": [1, 0], "x": 46, "y": 3, "flags": 4}, + {"matrix": [0, 1], "x": 29, "y": 3, "flags": 4}, + {"matrix": [0, 0], "x": 12, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 8, "y": 10, "flags": 4}, + {"matrix": [0, 3], "x": 25, "y": 14, "flags": 4}, + {"matrix": [1, 2], "x": 42, "y": 14, "flags": 4}, + {"matrix": [1, 3], "x": 60, "y": 13, "flags": 4}, + {"matrix": [2, 2], "x": 75, "y": 19, "flags": 4}, + {"matrix": [2, 3], "x": 91, "y": 24, "flags": 4}, + {"matrix": [2, 5], "x": 87, "y": 35, "flags": 4}, + {"matrix": [2, 4], "x": 71, "y": 30, "flags": 4}, + {"matrix": [1, 5], "x": 56, "y": 24, "flags": 4}, + {"matrix": [1, 4], "x": 38, "y": 24, "flags": 4}, + {"matrix": [0, 5], "x": 20, "y": 24, "flags": 4}, + {"matrix": [0, 4], "x": 5, "y": 22, "flags": 4}, + {"matrix": [0, 6], "x": 0, "y": 32, "flags": 4}, + {"matrix": [0, 7], "x": 16, "y": 35, "flags": 4}, + {"matrix": [1, 6], "x": 34, "y": 35, "flags": 4}, + {"matrix": [1, 7], "x": 52, "y": 35, "flags": 4}, + {"matrix": [2, 6], "x": 68, "y": 42, "flags": 4}, + {"matrix": [2, 7], "x": 83, "y": 46, "flags": 4}, + {"matrix": [6, 0], "x": 60, "y": 54, "flags": 5}, + {"matrix": [6, 1], "x": 76, "y": 58, "flags": 5}, + {"matrix": [6, 2], "x": 96, "y": 64, "flags": 5}, + {"matrix": [6, 3], "x": 128, "y": 64, "flags": 5}, + {"matrix": [6, 4], "x": 148, "y": 58, "flags": 5}, + {"matrix": [6, 5], "x": 164, "y": 54, "flags": 5}, + {"matrix": [3, 6], "x": 141, "y": 46, "flags": 4}, + {"matrix": [3, 7], "x": 156, "y": 42, "flags": 4}, + {"matrix": [4, 6], "x": 172, "y": 35, "flags": 4}, + {"matrix": [4, 7], "x": 190, "y": 35, "flags": 4}, + {"matrix": [5, 6], "x": 208, "y": 35, "flags": 4}, + {"matrix": [5, 7], "x": 224, "y": 32, "flags": 4}, + {"matrix": [5, 5], "x": 219, "y": 22, "flags": 4}, + {"matrix": [5, 4], "x": 204, "y": 24, "flags": 4}, + {"matrix": [4, 5], "x": 186, "y": 24, "flags": 4}, + {"matrix": [4, 4], "x": 168, "y": 24, "flags": 4}, + {"matrix": [3, 5], "x": 153, "y": 30, "flags": 4}, + {"matrix": [3, 4], "x": 137, "y": 35, "flags": 4}, + {"matrix": [3, 2], "x": 133, "y": 24, "flags": 4}, + {"matrix": [3, 3], "x": 149, "y": 19, "flags": 4}, + {"matrix": [4, 2], "x": 164, "y": 13, "flags": 4}, + {"matrix": [4, 3], "x": 182, "y": 14, "flags": 4}, + {"matrix": [5, 2], "x": 199, "y": 14, "flags": 4}, + {"matrix": [5, 3], "x": 216, "y": 10, "flags": 4}, + {"matrix": [5, 1], "x": 212, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 195, "y": 3, "flags": 4}, + {"matrix": [4, 1], "x": 178, "y": 3, "flags": 4}, + {"matrix": [4, 0], "x": 159, "y": 2, "flags": 4}, + {"matrix": [3, 1], "x": 144, "y": 9, "flags": 4}, + {"matrix": [3, 0], "x": 129, "y": 13, "flags": 4} + ] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x8181" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [1, 0], "x": 2, "y": 0}, + {"matrix": [1, 1], "x": 3, "y": 0}, + {"matrix": [2, 0], "x": 4, "y": 0}, + {"matrix": [2, 1], "x": 5, "y": 0}, + {"matrix": [3, 0], "x": 8, "y": 0}, + {"matrix": [3, 1], "x": 9, "y": 0}, + {"matrix": [4, 0], "x": 10, "y": 0}, + {"matrix": [4, 1], "x": 11, "y": 0}, + {"matrix": [5, 0], "x": 12, "y": 0}, + {"matrix": [5, 1], "x": 13, "y": 0}, + {"matrix": [0, 2], "x": 0, "y": 1}, + {"matrix": [0, 3], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [2, 2], "x": 4, "y": 1}, + {"matrix": [2, 3], "x": 5, "y": 1}, + {"matrix": [3, 2], "x": 8, "y": 1}, + {"matrix": [3, 3], "x": 9, "y": 1}, + {"matrix": [4, 2], "x": 10, "y": 1}, + {"matrix": [4, 3], "x": 11, "y": 1}, + {"matrix": [5, 2], "x": 12, "y": 1}, + {"matrix": [5, 3], "x": 13, "y": 1}, + {"matrix": [0, 4], "x": 0, "y": 2}, + {"matrix": [0, 5], "x": 1, "y": 2}, + {"matrix": [1, 4], "x": 2, "y": 2}, + {"matrix": [1, 5], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [3, 4], "x": 8, "y": 2}, + {"matrix": [3, 5], "x": 9, "y": 2}, + {"matrix": [4, 4], "x": 10, "y": 2}, + {"matrix": [4, 5], "x": 11, "y": 2}, + {"matrix": [5, 4], "x": 12, "y": 2}, + {"matrix": [5, 5], "x": 13, "y": 2}, + {"matrix": [0, 6], "x": 0, "y": 3}, + {"matrix": [0, 7], "x": 1, "y": 3}, + {"matrix": [1, 6], "x": 2, "y": 3}, + {"matrix": [1, 7], "x": 3, "y": 3}, + {"matrix": [2, 6], "x": 4, "y": 3}, + {"matrix": [2, 7], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 8, "y": 3}, + {"matrix": [3, 7], "x": 9, "y": 3}, + {"matrix": [4, 6], "x": 10, "y": 3}, + {"matrix": [4, 7], "x": 11, "y": 3}, + {"matrix": [5, 6], "x": 12, "y": 3}, + {"matrix": [5, 7], "x": 13, "y": 3}, + {"matrix": [6, 0], "x": 4, "y": 4}, + {"matrix": [6, 1], "x": 5, "y": 4}, + {"matrix": [6, 2], "x": 6, "y": 4}, + {"matrix": [6, 3], "x": 7, "y": 4}, + {"matrix": [6, 4], "x": 8, "y": 4}, + {"matrix": [6, 5], "x": 9, "y": 4} + ] + } + } +} diff --git a/keyboards/dasky/reverb/keymaps/default/keymap.json b/keyboards/dasky/reverb/keymaps/default/keymap.json new file mode 100644 index 000000000000..c23702d4c0ff --- /dev/null +++ b/keyboards/dasky/reverb/keymaps/default/keymap.json @@ -0,0 +1,32 @@ +{ + "keyboard": "dasky/reverb", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + ["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_PSCR", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ESC", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", "KC_RALT"], + + ["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F12", "KC_F12", + "KC_TAB", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC", + "KC_LCTL", "_______", "_______", "_______", "_______", "_______", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RIGHT","_______", "_______", + "KC_LSFT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_LGUI", "KC_TRNS", "KC_SPC", "KC_ENT", "MO(3)", "KC_RALT"], + + + ["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_PSCR", + "KC_TAB", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_BSPC", + "KC_LCTL", "_______", "_______", "_______", "_______", "_______", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_GRV", + "KC_LSFT", "_______", "_______", "_______", "_______", "_______", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE", "KC_TILD", + "KC_LGUI", "MO(3)", "KC_SPC", "KC_ENT", "KC_TRNS", "KC_RALT"], + + + ["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_PSCR", + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_LGUI", "KC_TRNS", "KC_SPC", "KC_ENT", "KC_TRNS", "KC_RALT"] + ] +} diff --git a/keyboards/dasky/reverb/keymaps/via/keymap.json b/keyboards/dasky/reverb/keymaps/via/keymap.json new file mode 100644 index 000000000000..fce7ecffcaaf --- /dev/null +++ b/keyboards/dasky/reverb/keymaps/via/keymap.json @@ -0,0 +1,37 @@ +{ + "keyboard": "dasky/reverb", + "keymap": "via", + "layout": "LAYOUT", + "config": { + "features": { + "via": true + } + }, + "layers": [ + ["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_PSCR", + "KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_ESC", + "KC_LGUI", "MO(1)", "KC_SPC", "KC_ENT", "MO(2)", "KC_RALT"], + + ["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F12", "KC_F12", + "KC_TAB", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_BSPC", + "KC_LCTL", "_______", "_______", "_______", "_______", "_______", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RIGHT","_______", "_______", + "KC_LSFT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_LGUI", "KC_TRNS", "KC_SPC", "KC_ENT", "MO(3)", "KC_RALT"], + + + ["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_PSCR", + "KC_TAB", "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_BSPC", + "KC_LCTL", "_______", "_______", "_______", "_______", "_______", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_GRV", + "KC_LSFT", "_______", "_______", "_______", "_______", "_______", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE", "KC_TILD", + "KC_LGUI", "MO(3)", "KC_SPC", "KC_ENT", "KC_TRNS", "KC_RALT"], + + + ["KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_PSCR", + "QK_BOOT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", + "KC_LGUI", "KC_TRNS", "KC_SPC", "KC_ENT", "KC_TRNS", "KC_RALT"] + ] +} diff --git a/keyboards/dasky/reverb/mcuconf.h b/keyboards/dasky/reverb/mcuconf.h new file mode 100644 index 000000000000..5b835562062a --- /dev/null +++ b/keyboards/dasky/reverb/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_SPI_USE_SPI0 +#define RP_SPI_USE_SPI0 TRUE diff --git a/keyboards/dasky/reverb/readme.md b/keyboards/dasky/reverb/readme.md new file mode 100644 index 000000000000..05e77807b603 --- /dev/null +++ b/keyboards/dasky/reverb/readme.md @@ -0,0 +1,27 @@ +# Reverb + +![Reverb](https://i.imgur.com/AaDUYjih.png) + +A unibody split with SK6803 mini-e per key RGB, GC9A01 display and Raspberry Pi Pico. + +* Keyboard Maintainer: [Dasky](https://github.com/daskygit) +* Hardware Supported: Raspberry Pi Pico, GC9A01 +* Hardware Availability: https://mechboards.co.uk/products/reverb-kit + +Make example for this keyboard (after setting up your build environment): + + make dasky/reverb:default + +Flashing example for this keyboard: + + make dasky/reverb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical boot button**: Hold down the BOOTSEL button on the Raspberry Pi Pico and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/dasky/reverb/reverb.c b/keyboards/dasky/reverb/reverb.c new file mode 100644 index 000000000000..4eb3b4624fe7 --- /dev/null +++ b/keyboards/dasky/reverb/reverb.c @@ -0,0 +1,17 @@ +// Copyright 2023 Dasky (@daskygit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" +#include "graphics/display.h" + +void keyboard_post_init_kb(void) { + display_init_kb(); + keyboard_post_init_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + display_key_counter(); + } + return process_record_user(keycode, record); +} diff --git a/keyboards/dasky/reverb/rules.mk b/keyboards/dasky/reverb/rules.mk new file mode 100644 index 000000000000..5e70f674ec4b --- /dev/null +++ b/keyboards/dasky/reverb/rules.mk @@ -0,0 +1,7 @@ +QUANTUM_PAINTER_DRIVERS += gc9a01_spi +QUANTUM_PAINTER_DRIVERS += surface + +SRC += graphics/splash.qgf.c +SRC += graphics/reverb.qgf.c +SRC += graphics/display.c +SRC += graphics/robotomono20.qff.c diff --git a/keyboards/dc01/left/rules.mk b/keyboards/dc01/left/rules.mk index 72485a3dd68a..3a9422733c11 100644 --- a/keyboards/dc01/left/rules.mk +++ b/keyboards/dc01/left/rules.mk @@ -11,5 +11,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes # Use custom matrix -SRC += matrix.c \ - i2c_master.c +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/dcpedit/redherring/config.h b/keyboards/dcpedit/redherring/config.h new file mode 100755 index 000000000000..115be3306e57 --- /dev/null +++ b/keyboards/dcpedit/redherring/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define LOCKING_SUPPORT_ENABLE +#define LOCKING_RESYNC_ENABLE +#define SOLENOID_PIN B5 +#define OLED_IC OLED_IC_SH1107 +#define OLED_DISPLAY_64X128 \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/info.json b/keyboards/dcpedit/redherring/info.json new file mode 100644 index 000000000000..845c52e3e04e --- /dev/null +++ b/keyboards/dcpedit/redherring/info.json @@ -0,0 +1,144 @@ +{ + "manufacturer": "dcpedit", + "keyboard_name": "Red Herring", + "maintainer": "dcpedit", + "bootloader": "usbasploader", + "bootmagic": { + "matrix": [5, 14] + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "C2", "pin_b": "D7"} + ] + }, + "indicators": { + "caps_lock": "A0" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "encoder": true, + "oled": true, + "haptic": true + }, + "matrix_pins": { + "cols": ["A1", "A2", "A3", "B0", "B1", "B2", "B3", "B4", "D0", "D1", "D5", "D6", "C5", "C4", "C3"], + "rows": ["C6", "A6", "A7", "A4", "C7", "A5"] + }, + "processor": "atmega32a", + "qmk": { + "tap_keycode_delay": 10 + }, + "url": "https://github.com/dcpedit/redherring", + "usb": { + "device_version": "1.0.0", + "pid": "0x12ED", + "vid": "0xDC9E" + }, + "dynamic_keymap": { + "layer_count": 2 + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "5,14", "matrix": [5, 14], "x": 0.75, "y": 0.12}, + {"label": "0,0", "matrix": [0, 0], "x": 2.25, "y": 0.12}, + {"label": "0,1", "matrix": [0, 1], "x": 3.25, "y": 0.12}, + {"label": "0,2", "matrix": [0, 2], "x": 4.75, "y": 0.12}, + {"label": "0,3", "matrix": [0, 3], "x": 5.75, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 6.75, "y": 0.12}, + {"label": "0,5", "matrix": [0, 5], "x": 7.75, "y": 0.25}, + {"label": "0,6", "matrix": [0, 6], "x": 11.5, "y": 0.25}, + {"label": "0,7", "matrix": [0, 7], "x": 12.5, "y": 0.12}, + {"label": "0,8", "matrix": [0, 8], "x": 13.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 14.5, "y": 0.12}, + {"label": "0,10", "matrix": [0, 10], "x": 16, "y": 0.12}, + {"label": "0,11", "matrix": [0, 11], "x": 17, "y": 0.12}, + {"label": "0,12", "matrix": [0, 12], "x": 18.13, "y": 0.12}, + {"label": "0,13", "matrix": [0, 13], "x": 19.13, "y": 0.12}, + {"label": "0,14", "matrix": [0, 14], "x": 21, "y": 0.12}, + + {"label": "1,0", "matrix": [1, 0], "x": 2, "y": 1.37}, + {"label": "1,1", "matrix": [1, 1], "x": 3, "y": 1.37}, + {"label": "1,2", "matrix": [1, 2], "x": 4.75, "y": 1.37}, + {"label": "1,3", "matrix": [1, 3], "x": 5.75, "y": 1.25}, + {"label": "1,4", "matrix": [1, 4], "x": 6.75, "y": 1.37}, + {"label": "1,5", "matrix": [1, 5], "x": 7.75, "y": 1.5}, + {"label": "1,6", "matrix": [1, 6], "x": 11.5, "y": 1.5}, + {"label": "1,7", "matrix": [1, 7], "x": 12.5, "y": 1.37}, + {"label": "1,8", "matrix": [1, 8], "x": 13.5, "y": 1.25}, + {"label": "1,9", "matrix": [1, 9], "x": 14.5, "y": 1.37}, + {"label": "1,10", "matrix": [1, 10], "x": 16.25, "y": 1.37}, + {"label": "1,11", "matrix": [1, 11], "x": 17.25, "y": 1.37}, + {"label": "1,12", "matrix": [1, 12], "x": 18.25, "y": 1.37}, + {"label": "1,13", "matrix": [1, 13], "x": 19.25, "y": 1.37}, + {"label": "1,14", "matrix": [1, 14], "x": 20.25, "y": 1.37}, + {"label": "2,14", "matrix": [2, 14], "x": 21.75, "y": 1.37}, + + {"label": "2,0", "matrix": [2, 0], "x": 1.25, "y": 2.37, "w": 1.5}, + {"label": "2,1", "matrix": [2, 1], "x": 2.75, "y": 2.37}, + {"label": "2,2", "matrix": [2, 2], "x": 4.75, "y": 2.37}, + {"label": "2,3", "matrix": [2, 3], "x": 5.75, "y": 2.25}, + {"label": "2,4", "matrix": [2, 4], "x": 6.75, "y": 2.37}, + {"label": "2,5", "matrix": [2, 5], "x": 7.75, "y": 2.5}, + {"label": "2,6", "matrix": [2, 6], "x": 11.5, "y": 2.5}, + {"label": "2,7", "matrix": [2, 7], "x": 12.5, "y": 2.37}, + {"label": "2,8", "matrix": [2, 8], "x": 13.5, "y": 2.25}, + {"label": "2,9", "matrix": [2, 9], "x": 14.5, "y": 2.37}, + {"label": "2,10", "matrix": [2, 10], "x": 16.5, "y": 2.37}, + {"label": "2,11", "matrix": [2, 11], "x": 17.5, "y": 2.37}, + {"label": "2,12", "matrix": [2, 12], "x": 18.5, "y": 2.37}, + {"label": "2,13", "matrix": [2, 13], "x": 19.5, "y": 2.37, "w": 1.5}, + {"label": "3,13", "matrix": [3, 13], "x": 21.5, "y": 2.37}, + + {"label": "3,0", "matrix": [3, 0], "x": 0.75, "y": 3.37, "w": 1.75}, + {"label": "3,1", "matrix": [3, 1], "x": 2.5, "y": 3.37}, + {"label": "3,2", "matrix": [3, 2], "x": 4.75, "y": 3.37}, + {"label": "3,3", "matrix": [3, 3], "x": 5.75, "y": 3.25}, + {"label": "3,4", "matrix": [3, 4], "x": 6.75, "y": 3.37}, + {"label": "3,5", "matrix": [3, 5], "x": 7.75, "y": 3.5}, + {"label": "3,6", "matrix": [3, 6], "x": 11.5, "y": 3.5}, + {"label": "3,7", "matrix": [3, 7], "x": 12.5, "y": 3.37}, + {"label": "3,8", "matrix": [3, 8], "x": 13.5, "y": 3.25}, + {"label": "3,9", "matrix": [3, 9], "x": 14.5, "y": 3.37}, + {"label": "3,10", "matrix": [3, 10], "x": 16.75, "y": 3.37}, + {"label": "3,11", "matrix": [3, 11], "x": 17.75, "y": 3.37}, + {"label": "3,12", "matrix": [3, 12], "x": 18.75, "y": 3.37, "w": 2.25}, + {"label": "3,14", "matrix": [3, 14], "x": 21.25, "y": 3.37}, + + {"label": "4,14", "matrix": [4, 14], "x": 0, "y": 4.37, "w": 1.25}, + {"label": "4,0", "matrix": [4, 0], "x": 1.25, "y": 4.37}, + {"label": "4,1", "matrix": [4, 1], "x": 2.25, "y": 4.37}, + {"label": "4,2", "matrix": [4, 2], "x": 4.75, "y": 4.37}, + {"label": "4,3", "matrix": [4, 3], "x": 5.75, "y": 4.25}, + {"label": "4,4", "matrix": [4, 4], "x": 6.75, "y": 4.37}, + {"label": "4,5", "matrix": [4, 5], "x": 7.75, "y": 4.5}, + {"label": "5,5", "matrix": [5, 5], "x": 8.75, "y": 4.5}, + {"label": "5,6", "matrix": [5, 6], "x": 10.5, "y": 4.5}, + {"label": "4,6", "matrix": [4, 6], "x": 11.5, "y": 4.5}, + {"label": "4,7", "matrix": [4, 7], "x": 12.5, "y": 4.37}, + {"label": "4,8", "matrix": [4, 8], "x": 13.5, "y": 4.25}, + {"label": "4,9", "matrix": [4, 9], "x": 14.5, "y": 4.37}, + {"label": "4,10", "matrix": [4, 10], "x": 17, "y": 4.37}, + {"label": "4,11", "matrix": [4, 11], "x": 18, "y": 4.37}, + {"label": "4,12", "matrix": [4, 12], "x": 19, "y": 4.37, "w": 1.25}, + {"label": "4,13", "matrix": [4, 13], "x": 20.5, "y": 4.62}, + + {"label": "5,0", "matrix": [5, 0], "x": 0.5, "y": 5.37, "w": 1.25}, + {"label": "5,1", "matrix": [5, 1], "x": 1.75, "y": 5.37, "w": 1.25}, + {"label": "5,2", "matrix": [5, 2], "x": 5.25, "y": 5.37, "w": 1.25}, + {"label": "5,3", "matrix": [5, 3], "x": 6.5, "y": 5.37, "w": 1.25}, + {"label": "5,4", "matrix": [5, 4], "x": 7.75, "y": 5.5, "w": 2}, + {"label": "5,7", "matrix": [5, 7], "x": 10.5, "y": 5.5, "w": 2.75}, + {"label": "5,8", "matrix": [5, 8], "x": 13.25, "y": 5.37, "w": 1.25}, + {"label": "5,9", "matrix": [5, 9], "x": 16.75, "y": 5.37, "w": 1.25}, + {"label": "5,10", "matrix": [5, 10], "x": 18, "y": 5.37, "w": 1.25}, + {"label": "5,11", "matrix": [5, 11], "x": 19.5, "y": 5.62}, + {"label": "5,12", "matrix": [5, 12], "x": 20.5, "y": 5.62}, + {"label": "5,13", "matrix": [5, 13], "x": 21.5, "y": 5.62} + ] + } + } +} diff --git a/keyboards/dcpedit/redherring/keymaps/default/keymap.c b/keyboards/dcpedit/redherring/keymaps/default/keymap.c new file mode 100644 index 000000000000..36711740506c --- /dev/null +++ b/keyboards/dcpedit/redherring/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_MENU, KC_SPC, KC_SPC, KC_ALGR, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + + [1] = LAYOUT( + QK_RBT, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, HF_TOGG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/default/rules.mk b/keyboards/dcpedit/redherring/keymaps/default/rules.mk similarity index 100% rename from keyboards/keychron/q1/iso_encoder/keymaps/default/rules.mk rename to keyboards/dcpedit/redherring/keymaps/default/rules.mk diff --git a/keyboards/dcpedit/redherring/keymaps/via/keymap.c b/keyboards/dcpedit/redherring/keymaps/via/keymap.c new file mode 100644 index 000000000000..de67f00042c8 --- /dev/null +++ b/keyboards/dcpedit/redherring/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_MUTE, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_MENU, KC_SPC, KC_SPC, KC_ALGR, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), + + [1] = LAYOUT( + + QK_RBT, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, HF_TOGG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, +}; +#endif \ No newline at end of file diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/via/rules.mk b/keyboards/dcpedit/redherring/keymaps/via/rules.mk similarity index 100% rename from keyboards/keychron/q1/iso_encoder/keymaps/via/rules.mk rename to keyboards/dcpedit/redherring/keymaps/via/rules.mk diff --git a/keyboards/dcpedit/redherring/readme.md b/keyboards/dcpedit/redherring/readme.md new file mode 100644 index 000000000000..67f2bdf33db7 --- /dev/null +++ b/keyboards/dcpedit/redherring/readme.md @@ -0,0 +1,27 @@ +# Red Herring + +![Red Herring](https://i.imgur.com/b6lKmW0h.jpg) + +Unibody ergonomic orthilinar keyboard with through-hole components. Supports standard keycaps, a 64x128 OLED, large rotary encoder knob, and a solenoid. + +* Keyboard Maintainer: [dcpedit](https://github.com/dcpedit) +* Hardware Supported: ATMEGA32A +* Hardware Availability: https://github.com/dcpedit/redherring + +Make example for this keyboard (after setting up your build environment): + + make dcpedit/redherring:default + +Flashing example for this keyboard: + + make dcpedit/redherring:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the ESC key (top-left key) and plug in the keyboard +* **Physical reset button**: On the PCB, while holding down the BOOT button, press and release the RESET button +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/redherring.c b/keyboards/dcpedit/redherring/redherring.c new file mode 100644 index 000000000000..b2c25eb703c9 --- /dev/null +++ b/keyboards/dcpedit/redherring/redherring.c @@ -0,0 +1,91 @@ +// Copyright 2023 Ming-Gih Lam (@dcpedit) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#define LOGO_SIZE 1024 + +#ifdef OLED_ENABLE + +static void render_logo(void) { + static const char PROGMEM oled_logo[LOGO_SIZE] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc3, 0x06, 0x18, 0xe1, 0x03, 0x0c, 0xb0, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x00, 0x00, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, 0x04, 0x78, 0x80, 0x00, + 0x00, 0x38, 0xf8, 0xf8, 0xf0, 0xf0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x1f, 0x3f, 0xfe, 0x3e, 0x7f, 0xfe, 0x7c, 0x7f, 0x7c, + 0x3c, 0x20, 0x20, 0xe0, 0x7c, 0x43, 0x40, 0xc0, 0xf8, 0x87, 0x80, 0x80, 0xe0, 0x1e, 0x01, 0x00, + 0xc0, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, 0xe0, 0x00, 0x00, 0x07, 0x78, + 0x80, 0x80, 0x83, 0xbf, 0xff, 0xff, 0xe3, 0xc1, 0xc1, 0xc1, 0xc1, 0xf7, 0xfe, 0xfe, 0xfc, 0x78, + 0x00, 0x00, 0x10, 0x90, 0x88, 0x4c, 0x64, 0x22, 0x12, 0x11, 0x08, 0x0c, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x03, 0x00, 0x80, 0x78, 0x07, 0x00, 0x00, 0xe0, 0x1e, 0x01, 0x01, 0xc1, 0x3d, + 0x07, 0x02, 0x02, 0xf2, 0x0e, 0x02, 0x02, 0x06, 0x7e, 0xc2, 0x02, 0x03, 0x1f, 0xe1, 0x01, 0x01, + 0x07, 0x78, 0x80, 0x00, 0x03, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x03, 0x00, 0x00, + 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x20, 0x1e, 0x01, 0x00, 0xc0, 0x7c, 0x07, 0x00, + 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x7c, 0xc0, 0x00, 0x01, 0x1e, 0xe0, + 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, 0x03, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 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, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xfe, 0xc7, 0x83, 0xff, 0xff, 0x01, 0x81, 0x03, 0x0f, 0xfe, 0xf0, 0x00, 0xff, 0xff, 0x01, + 0x01, 0x61, 0xff, 0x9f, 0x01, 0xfe, 0xef, 0x83, 0xff, 0xff, 0x01, 0x01, 0x03, 0x07, 0xfe, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x19, 0xff, 0xff, 0x3b, 0x79, 0xf8, 0xcf, 0x07, 0x01, 0x00, 0xf1, 0xff, 0x0e, + 0x0e, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0xff, 0xff, 0x03, 0x01, 0x00, 0x80, 0xff, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0xf0, 0xf0, 0x00, 0x00, 0x10, 0xf0, 0xf0, 0x00, 0xf0, 0xf0, 0x30, 0x30, 0x30, 0xb0, 0xf0, + 0x70, 0x90, 0xc0, 0xe2, 0xf3, 0xf3, 0x70, 0x30, 0x31, 0x63, 0xe3, 0xc2, 0x00, 0x83, 0xc3, 0xe3, + 0xf3, 0xf3, 0x73, 0x33, 0x33, 0x60, 0xe0, 0x82, 0x03, 0xf3, 0xf3, 0x13, 0x63, 0xf3, 0xb1, 0xf0, + 0xe0, 0x00, 0x00, 0x00, 0x10, 0xf0, 0xf0, 0x00, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0xe0, 0xc0, + + 0x00, 0xff, 0xff, 0x30, 0x30, 0x30, 0xff, 0xff, 0x80, 0x1f, 0x7f, 0xe0, 0xc0, 0xc0, 0x9f, 0x1f, + 0x00, 0x07, 0x1f, 0x38, 0xff, 0xff, 0x60, 0x60, 0x10, 0x80, 0xff, 0xff, 0x00, 0x0f, 0x1f, 0x38, + 0xff, 0xff, 0x60, 0x60, 0x00, 0x80, 0xff, 0x7f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x03, 0xff, + 0xff, 0x1c, 0x78, 0xe0, 0xc0, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x04, 0xe6, 0xe7, 0x63, + 0x60, 0x7f, 0x7f, 0x00, 0x02, 0x46, 0x7f, 0x7f, 0x00, 0x7c, 0x7f, 0x63, 0x61, 0x61, 0x60, 0x60, + 0x60, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x47, 0x07, 0x0f, 0x3f, 0x79, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x7f, 0x7f, 0x47, 0x07, 0x0f, 0x3f, 0x71, 0x40, 0x00, 0x7f, 0x7f, 0x40, 0x00, 0x00, 0x00, 0x7f, + 0x7f, 0x40, 0x00, 0x00, 0x47, 0x7f, 0x7f, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x7f, 0x7f, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(oled_logo, LOGO_SIZE); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + render_logo(); + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/dcpedit/redherring/rules.mk b/keyboards/dcpedit/redherring/rules.mk new file mode 100644 index 000000000000..35c76d4cf1cf --- /dev/null +++ b/keyboards/dcpedit/redherring/rules.mk @@ -0,0 +1,2 @@ +F_CPU = 16000000 +HAPTIC_DRIVER = solenoid \ No newline at end of file diff --git a/keyboards/deng/thirty/config.h b/keyboards/deng/thirty/config.h index 20e6673dd2ce..9fcb90742fac 100644 --- a/keyboards/deng/thirty/config.h +++ b/keyboards/deng/thirty/config.h @@ -26,10 +26,6 @@ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -#define RGB_MATRIX_DEFAULT_HUE 0 -#define RGB_MATRIX_DEFAULT_SAT 255 -#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -#define RGB_MATRIX_DEFAULT_SPD 127 // Enable Effects // == Regular Effects == #define ENABLE_RGB_MATRIX_ALPHAS_MODS @@ -78,8 +74,3 @@ #define ENABLE_RGB_MATRIX_SOLID_SPLASH #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif - -/* VIA */ -#ifdef VIA_ENABLE -#define DYNAMIC_KEYMAP_LAYER_COUNT 8 -#endif diff --git a/keyboards/deng/thirty/info.json b/keyboards/deng/thirty/info.json index 8836273865b4..b93881c08668 100644 --- a/keyboards/deng/thirty/info.json +++ b/keyboards/deng/thirty/info.json @@ -16,6 +16,9 @@ "rows": ["B15", "A5", "A3", "A15", "B7", "B8"] }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 8 + }, "backlight": { "pin": "B11", "levels": 5, diff --git a/keyboards/dichotomy/rules.mk b/keyboards/dichotomy/rules.mk index 040710a460d9..bfa5252a0394 100755 --- a/keyboards/dichotomy/rules.mk +++ b/keyboards/dichotomy/rules.mk @@ -14,4 +14,4 @@ NKRO_ENABLE = yes # Enable N-Key Rollover # # project specific files SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes diff --git a/keyboards/dm9records/lain/config.h b/keyboards/dm9records/lain/config.h index e34b4d34ab14..ddb4b6702fcd 100644 --- a/keyboards/dm9records/lain/config.h +++ b/keyboards/dm9records/lain/config.h @@ -12,5 +12,3 @@ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE - -#define DYNAMIC_KEYMAP_LAYER_COUNT 6 diff --git a/keyboards/dm9records/lain/info.json b/keyboards/dm9records/lain/info.json index 8ae8a33b4445..250eb2ddafdf 100644 --- a/keyboards/dm9records/lain/info.json +++ b/keyboards/dm9records/lain/info.json @@ -13,6 +13,9 @@ "rows": ["C6", "D7", "D6", "D4"] }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 6 + }, "processor": "atmega32u4", "bootloader": "atmel-dfu", "layouts": { diff --git a/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c b/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c index 0d1ec2b76261..a91664f0c96d 100644 --- a/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c +++ b/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c @@ -15,8 +15,6 @@ */ #include QMK_KEYBOARD_H -#include "mousekey.h" - enum plaid_layers { _QWERTY, diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c index dd452dae1a5f..4acb0ee59be9 100644 --- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c +++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c @@ -147,11 +147,12 @@ void keyboard_post_init_user(void) { do_rgb_layers(layer_state, LAYER_BASE, LAYER_BASE_END); } -void shutdown_user(void) { +bool shutdown_user(bool jump_to_bootloader) { clear_rgb_layers(); rgblight_enable(); rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); rgblight_sethsv_noeeprom(HSV_RED); + return false; } void spidey_glow(void) { @@ -218,4 +219,3 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) { break; } } - diff --git a/keyboards/dnworks/9973/config.h b/keyboards/dnworks/9973/config.h new file mode 100644 index 000000000000..77970ce4d344 --- /dev/null +++ b/keyboards/dnworks/9973/config.h @@ -0,0 +1,20 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U diff --git a/keyboards/dnworks/9973/info.json b/keyboards/dnworks/9973/info.json new file mode 100644 index 000000000000..616960602623 --- /dev/null +++ b/keyboards/dnworks/9973/info.json @@ -0,0 +1,480 @@ +{ + "keyboard_name": "DN 997.3", + "maintainer": "itsme-zeix", + "manufacturer": "dnworks", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0x4C23", + "pid": "0x2936", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "GP27", + "scroll_lock": "GP1", + "on_state": 1 + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["GP2", "GP3", "GP4", "GP29", "GP12", "GP13"], + "cols": ["GP28", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP15", "GP14", "GP6", "GP5", "GP0"] + }, + "community_layouts": ["tkl_ansi_tsangan", "tkl_iso_tsangan"], + "layouts": { + "LAYOUT_all": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 1], "x": 1.25, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 11], "x": 12.5, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 11], "x": 12.5, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 }, + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [2, 13], "x": 12.75, "y": 3.5 }, + { "matrix": [3, 12], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 1], "x": 1.25, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 11], "x": 12.5, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + }, + "LAYOUT_tkl_iso_wkl": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "matrix": [1, 2], "x": 2, "y": 1.5 }, + { "matrix": [1, 3], "x": 3, "y": 1.5 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.5 }, + { "matrix": [1, 7], "x": 7, "y": 1.5 }, + { "matrix": [1, 8], "x": 8, "y": 1.5 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, + { "matrix": [1, 10], "x": 10, "y": 1.5 }, + { "matrix": [1, 11], "x": 11, "y": 1.5 }, + { "matrix": [1, 12], "x": 12, "y": 1.5 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.5 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.5 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.5 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.5 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.5 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.5 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.5 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.5 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.5 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.5 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.5 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.5 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.5 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.5 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.5 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.5 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.5 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.5 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.5 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.5 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.5 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.5 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.5 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.5 }, + { "matrix": [2, 13], "x": 12.75, "y": 3.5 }, + { "matrix": [3, 12], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 }, + { "matrix": [4, 1], "x": 1.25, "y": 4.5 }, + { "matrix": [4, 2], "x": 2.25, "y": 4.5 }, + { "matrix": [4, 3], "x": 3.25, "y": 4.5 }, + { "matrix": [4, 4], "x": 4.25, "y": 4.5 }, + { "matrix": [4, 5], "x": 5.25, "y": 4.5 }, + { "matrix": [4, 6], "x": 6.25, "y": 4.5 }, + { "matrix": [4, 7], "x": 7.25, "y": 4.5 }, + { "matrix": [4, 8], "x": 8.25, "y": 4.5 }, + { "matrix": [4, 9], "x": 9.25, "y": 4.5 }, + { "matrix": [4, 10], "x": 10.25, "y": 4.5 }, + { "matrix": [4, 11], "x": 11.25, "y": 4.5 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.5 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.5 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.5 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.5 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.5 }, + { "matrix": [5, 12], "w": 1.5, "x": 13.5, "y": 5.5 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.5 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.5 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/dnworks/9973/keymaps/default/keymap.c b/keyboards/dnworks/9973/keymaps/default/keymap.c new file mode 100644 index 000000000000..8307bf9e7663 --- /dev/null +++ b/keyboards/dnworks/9973/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_DEL, 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_INS, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT) +}; diff --git a/keyboards/dnworks/9973/keymaps/via/keymap.c b/keyboards/dnworks/9973/keymaps/via/keymap.c new file mode 100644 index 000000000000..8307bf9e7663 --- /dev/null +++ b/keyboards/dnworks/9973/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2023 zeix (@itsme-zeix) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_DEL, 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_INS, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT) +}; diff --git a/keyboards/soda/pocket/keymaps/via/rules.mk b/keyboards/dnworks/9973/keymaps/via/rules.mk similarity index 100% rename from keyboards/soda/pocket/keymaps/via/rules.mk rename to keyboards/dnworks/9973/keymaps/via/rules.mk diff --git a/keyboards/dnworks/9973/readme.md b/keyboards/dnworks/9973/readme.md new file mode 100644 index 000000000000..790f236cb776 --- /dev/null +++ b/keyboards/dnworks/9973/readme.md @@ -0,0 +1,27 @@ +# 997.3 TKL + +![997.3 TKL](https://i.imgur.com/iPPLKg1h.jpeg) + +PCB that supports the 997.3 TKL designed by dnworks, including its variants. + +* Keyboard Maintainer: [Zeix](https://github.com/itsme-zeix) +* Hardware Supported: 997.3 Solder PCB rev1 +* Hardware Availability: dnworks.co + +Make example for this keyboard (after setting up your build environment): + + make dnworks/997pt3:default + +Flashing example for this keyboard: + + make dnworks/997pt3:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard +* **Physical reset button**: Briefly press the `RESET` button twice or short the `USB_BOOT` and `GND` pads and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/dnworks/9973/rules.mk b/keyboards/dnworks/9973/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/dnworks/9973/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/dnworks/frltkl/info.json b/keyboards/dnworks/frltkl/info.json index dda394649b24..86796a6084c7 100644 --- a/keyboards/dnworks/frltkl/info.json +++ b/keyboards/dnworks/frltkl/info.json @@ -26,8 +26,15 @@ "rows": ["GP4","GP3","GP2","GP1","GP29","GP28","GP19","GP20","GP10","GP11"], "cols": ["GP26","GP25","GP24","GP23","GP22","GP21","GP6","GP5","GP0"] }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "community_layouts": [ + "tkl_nofrow_ansi", + "tkl_nofrow_iso" + ], "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [ { "matrix": [1, 0], "x": 0, "y": 0 }, { "matrix": [0, 0], "x": 1, "y": 0 }, @@ -108,6 +115,956 @@ { "matrix": [9, 8], "x": 16.25, "y": 4 }, { "matrix": [8, 8], "x": 17.25, "y": 4 } ] - } + }, + "LAYOUT_tkl_nofrow_ansi": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [9, 7], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0}, + {"matrix": [1, 7], "x": 14, "y": 0}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 14, "y": 3}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [9, 7], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_tsangan": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 12.5, "y": 4}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0}, + {"matrix": [1, 7], "x": 14, "y": 0}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 14, "y": 3}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 12.5, "y": 4}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_wkl": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0}, + {"matrix": [1, 7], "x": 14, "y": 0}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [3, 7], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [4, 6], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 14, "y": 3}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [3, 7], "x": 12.75, "y": 2}, + {"matrix": [4, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [9, 7], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_split_bs_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0}, + {"matrix": [1, 7], "x": 14, "y": 0}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [3, 7], "x": 12.75, "y": 2}, + {"matrix": [4, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 14, "y": 3}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [8, 5], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [9, 5], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [8, 6], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [9, 7], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_tsangan": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [3, 7], "x": 12.75, "y": 2}, + {"matrix": [4, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 12.5, "y": 4}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0}, + {"matrix": [1, 7], "x": 14, "y": 0}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [3, 7], "x": 12.75, "y": 2}, + {"matrix": [4, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 14, "y": 3}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [9, 0], "x": 1.5, "y": 4}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [8, 6], "x": 12.5, "y": 4}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_wkl": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [3, 7], "x": 12.75, "y": 2}, + {"matrix": [4, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 0}, + {"matrix": [0, 0], "x": 1, "y": 0}, + {"matrix": [1, 1], "x": 2, "y": 0}, + {"matrix": [0, 1], "x": 3, "y": 0}, + {"matrix": [1, 2], "x": 4, "y": 0}, + {"matrix": [0, 2], "x": 5, "y": 0}, + {"matrix": [1, 3], "x": 6, "y": 0}, + {"matrix": [0, 3], "x": 7, "y": 0}, + {"matrix": [1, 4], "x": 8, "y": 0}, + {"matrix": [0, 4], "x": 9, "y": 0}, + {"matrix": [1, 5], "x": 10, "y": 0}, + {"matrix": [0, 5], "x": 11, "y": 0}, + {"matrix": [1, 6], "x": 12, "y": 0}, + {"matrix": [0, 6], "x": 13, "y": 0}, + {"matrix": [1, 7], "x": 14, "y": 0}, + {"matrix": [0, 7], "x": 15.25, "y": 0}, + {"matrix": [1, 8], "x": 16.25, "y": 0}, + {"matrix": [0, 8], "x": 17.25, "y": 0}, + + {"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [3, 0], "x": 1.5, "y": 1}, + {"matrix": [2, 1], "x": 2.5, "y": 1}, + {"matrix": [3, 1], "x": 3.5, "y": 1}, + {"matrix": [2, 2], "x": 4.5, "y": 1}, + {"matrix": [3, 2], "x": 5.5, "y": 1}, + {"matrix": [2, 3], "x": 6.5, "y": 1}, + {"matrix": [3, 3], "x": 7.5, "y": 1}, + {"matrix": [2, 4], "x": 8.5, "y": 1}, + {"matrix": [3, 4], "x": 9.5, "y": 1}, + {"matrix": [2, 5], "x": 10.5, "y": 1}, + {"matrix": [3, 5], "x": 11.5, "y": 1}, + {"matrix": [2, 6], "x": 12.5, "y": 1}, + {"matrix": [2, 7], "x": 15.25, "y": 1}, + {"matrix": [3, 8], "x": 16.25, "y": 1}, + {"matrix": [2, 8], "x": 17.25, "y": 1}, + + {"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [5, 0], "x": 1.75, "y": 2}, + {"matrix": [4, 1], "x": 2.75, "y": 2}, + {"matrix": [5, 1], "x": 3.75, "y": 2}, + {"matrix": [4, 2], "x": 4.75, "y": 2}, + {"matrix": [5, 2], "x": 5.75, "y": 2}, + {"matrix": [4, 3], "x": 6.75, "y": 2}, + {"matrix": [5, 3], "x": 7.75, "y": 2}, + {"matrix": [4, 4], "x": 8.75, "y": 2}, + {"matrix": [5, 4], "x": 9.75, "y": 2}, + {"matrix": [4, 5], "x": 10.75, "y": 2}, + {"matrix": [5, 5], "x": 11.75, "y": 2}, + {"matrix": [3, 7], "x": 12.75, "y": 2}, + {"matrix": [4, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [7, 0], "x": 1.25, "y": 3}, + {"matrix": [6, 1], "x": 2.25, "y": 3}, + {"matrix": [7, 1], "x": 3.25, "y": 3}, + {"matrix": [6, 2], "x": 4.25, "y": 3}, + {"matrix": [7, 2], "x": 5.25, "y": 3}, + {"matrix": [6, 3], "x": 6.25, "y": 3}, + {"matrix": [7, 3], "x": 7.25, "y": 3}, + {"matrix": [6, 4], "x": 8.25, "y": 3}, + {"matrix": [7, 4], "x": 9.25, "y": 3}, + {"matrix": [6, 5], "x": 10.25, "y": 3}, + {"matrix": [7, 5], "x": 11.25, "y": 3}, + {"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [7, 7], "x": 14, "y": 3}, + {"matrix": [6, 8], "x": 16.25, "y": 3}, + + {"matrix": [8, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [8, 1], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [9, 3], "x": 4, "y": 4, "w": 7}, + {"matrix": [9, 5], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [8, 7], "x": 15.25, "y": 4}, + {"matrix": [9, 8], "x": 16.25, "y": 4}, + {"matrix": [8, 8], "x": 17.25, "y": 4} + ] + } } } diff --git a/keyboards/dnworks/frltkl/keymaps/default/keymap.c b/keyboards/dnworks/frltkl/keymaps/default/keymap.c index 295066696d4c..d761ce63a7a5 100644 --- a/keyboards/dnworks/frltkl/keymaps/default/keymap.c +++ b/keyboards/dnworks/frltkl/keymaps/default/keymap.c @@ -17,14 +17,14 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT( +[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_BSLS, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), -[1] = LAYOUT( +[1] = LAYOUT_all( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/dnworks/frltkl/keymaps/via/keymap.c b/keyboards/dnworks/frltkl/keymaps/via/keymap.c index 295066696d4c..d761ce63a7a5 100644 --- a/keyboards/dnworks/frltkl/keymaps/via/keymap.c +++ b/keyboards/dnworks/frltkl/keymaps/via/keymap.c @@ -17,14 +17,14 @@ along with this program. If not, see . const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT( +[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_BSLS, KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT), -[1] = LAYOUT( +[1] = LAYOUT_all( KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/dnworks/frltkl/matrix_diagram.md b/keyboards/dnworks/frltkl/matrix_diagram.md new file mode 100644 index 000000000000..6a0cbe43edae --- /dev/null +++ b/keyboards/dnworks/frltkl/matrix_diagram.md @@ -0,0 +1,21 @@ +# Matrix Diagram for dnworks DN FRLTKL + +``` +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ ┌───────┐ +│10 │00 │11 │01 │12 │02 │13 │03 │14 │04 │15 │05 │16 │06 │17 ││07 │18 │08 │ │06 │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤ +│20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │37 ││27 │38 │28 │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴┐46 │ ISO Enter +│40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │46 │ │37 │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ └───┴────┘ +│60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │77 │ │68 │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───┐ +│80 │90 │81 │93 │85 │95 │86 │97 ││87 │98 │88 │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ +┌────────┐ ┌──────────┐ +│60 │ 2.25u LShift 2.75u RShift │66 │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│80 │90 │81 │93 │95 │86 │97 │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +``` diff --git a/keyboards/doio/kb12/config.h b/keyboards/doio/kb12/config.h new file mode 100644 index 000000000000..d853409b8587 --- /dev/null +++ b/keyboards/doio/kb12/config.h @@ -0,0 +1,69 @@ +/* Copyright 2022 DOIO + * Copyright 2022 DOIO2022 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* RGB Matrix config */ +#define RGB_MATRIX_LED_COUNT 12 +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +/* RGB Matrix effect */ +#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_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#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_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 diff --git a/keyboards/doio/kb12/info.json b/keyboards/doio/kb12/info.json new file mode 100644 index 000000000000..fc75fd8c0d93 --- /dev/null +++ b/keyboards/doio/kb12/info.json @@ -0,0 +1,78 @@ +{ + "keyboard_name": "KB12-01", + "manufacturer": "DOIO", + "url": "", + "maintainer": "DOIO2022", + "usb": { + "vid": "0xD010", + "pid": "0x1201", + "device_version": "0.0.1" + }, + "rgb_matrix": { + "driver": "ws2812" + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 75, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 150, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 224, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [1, 1], "x": 75, "y": 32, "flags": 4}, + {"matrix": [1, 2], "x": 150, "y": 32, "flags": 4}, + {"matrix": [1, 3], "x": 224, "y": 32, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [2, 1], "x": 75, "y": 64, "flags": 4}, + {"matrix": [2, 2], "x": 150, "y": 64, "flags": 4}, + {"matrix": [2, 3], "x": 224, "y": 64, "flags": 4} + ], + "max_brightness": 200 + }, + "matrix_pins": { + "cols": ["B14", "B13", "B12", "B0", "A7"], + "rows": ["B3", "B4", "B9"] + }, + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 6 + }, + "encoder": { + "rotary": [ + {"pin_a": "B5", "pin_b": "B6"} + ] + }, + "ws2812": { + "pin": "A10" + }, + "processor": "STM32F103", + "bootloader": "stm32duino", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true, + "encoder": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 4], "x": 0, "y": 0 }, + { "matrix": [0, 0], "x": 3.25, "y": 0 }, + { "matrix": [0, 1], "x": 4.25, "y": 0 }, + { "matrix": [0, 2], "x": 5.25, "y": 0 }, + { "matrix": [0, 3], "x": 6.25, "y": 0 }, + + { "matrix": [1, 0], "x": 7.75, "y": 0 }, + { "matrix": [1, 1], "x": 8.75, "y": 0 }, + { "matrix": [1, 2], "x": 9.75, "y": 0 }, + { "matrix": [1, 3], "x": 10.75, "y": 0 }, + + { "matrix": [2, 0], "x": 12.25, "y": 0 }, + { "matrix": [2, 1], "x": 13.25, "y": 0 }, + { "matrix": [2, 2], "x": 14.25, "y": 0 }, + { "matrix": [2, 3], "x": 15.25, "y": 0 } + ] + } + } +} diff --git a/keyboards/doio/kb12/keymaps/default/keymap.c b/keyboards/doio/kb12/keymaps/default/keymap.c new file mode 100644 index 000000000000..72360f1a8b25 --- /dev/null +++ b/keyboards/doio/kb12/keymaps/default/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2022 DOIO + * Copyright 2022 DOIO2022 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 layer_names { + _LAY0, + _LAY1, + _LAY2, + _LAY3, + _LAY4, + _LAY5 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAY0] = LAYOUT( + TO(1), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12), + [_LAY1] = LAYOUT( + TO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY2] = LAYOUT( + TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY3] = LAYOUT( + TO(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY4] = LAYOUT( + TO(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY5] = LAYOUT( + TO(0), RGB_TOG, RGB_MOD, RGB_SPI, RGB_SPD, RGB_SAI, RGB_SAD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS) + +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_LAY0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, + [_LAY1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY4] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY5] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, +}; +#endif diff --git a/keyboards/doio/kb12/keymaps/via/keymap.c b/keyboards/doio/kb12/keymaps/via/keymap.c new file mode 100644 index 000000000000..72360f1a8b25 --- /dev/null +++ b/keyboards/doio/kb12/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2022 DOIO + * Copyright 2022 DOIO2022 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 layer_names { + _LAY0, + _LAY1, + _LAY2, + _LAY3, + _LAY4, + _LAY5 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAY0] = LAYOUT( + TO(1), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12), + [_LAY1] = LAYOUT( + TO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY2] = LAYOUT( + TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY3] = LAYOUT( + TO(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY4] = LAYOUT( + TO(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY5] = LAYOUT( + TO(0), RGB_TOG, RGB_MOD, RGB_SPI, RGB_SPD, RGB_SAI, RGB_SAD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS) + +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_LAY0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, + [_LAY1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY4] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY5] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, +}; +#endif diff --git a/keyboards/rgbkb/sol3/keymaps/kageurufu/rules.mk b/keyboards/doio/kb12/keymaps/via/rules.mk similarity index 100% rename from keyboards/rgbkb/sol3/keymaps/kageurufu/rules.mk rename to keyboards/doio/kb12/keymaps/via/rules.mk diff --git a/keyboards/doio/kb12/keymaps/vial/config.h b/keyboards/doio/kb12/keymaps/vial/config.h new file mode 100644 index 000000000000..2b1f1f443423 --- /dev/null +++ b/keyboards/doio/kb12/keymaps/vial/config.h @@ -0,0 +1,11 @@ +// Copyright 2023 Oleg Titov +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Unique keyboard id +#define VIAL_KEYBOARD_UID {0x3D, 0x84, 0x24, 0x54, 0xAA, 0xE1, 0xA2, 0x09} + +// Unlock with first and last keys +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 3 } diff --git a/keyboards/doio/kb12/keymaps/vial/keymap.c b/keyboards/doio/kb12/keymaps/vial/keymap.c new file mode 100644 index 000000000000..72360f1a8b25 --- /dev/null +++ b/keyboards/doio/kb12/keymaps/vial/keymap.c @@ -0,0 +1,55 @@ +/* Copyright 2022 DOIO + * Copyright 2022 DOIO2022 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 layer_names { + _LAY0, + _LAY1, + _LAY2, + _LAY3, + _LAY4, + _LAY5 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAY0] = LAYOUT( + TO(1), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12), + [_LAY1] = LAYOUT( + TO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY2] = LAYOUT( + TO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY3] = LAYOUT( + TO(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY4] = LAYOUT( + TO(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_LAY5] = LAYOUT( + TO(0), RGB_TOG, RGB_MOD, RGB_SPI, RGB_SPD, RGB_SAI, RGB_SAD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS) + +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_LAY0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) }, + [_LAY1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY4] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_LAY5] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, +}; +#endif diff --git a/keyboards/doio/kb12/keymaps/vial/rules.mk b/keyboards/doio/kb12/keymaps/vial/rules.mk new file mode 100644 index 000000000000..6846963222aa --- /dev/null +++ b/keyboards/doio/kb12/keymaps/vial/rules.mk @@ -0,0 +1,6 @@ +VIA_ENABLE = yes # Enable VIA +VIAL_ENABLE = yes # Enable VIAL + +VIALRGB_ENABLE = yes # Enable VIALRGB + +ENCODER_MAP_ENABLE = yes # Enable knob diff --git a/keyboards/doio/kb12/keymaps/vial/vial.json b/keyboards/doio/kb12/keymaps/vial/vial.json new file mode 100644 index 000000000000..fabf5b3a90a9 --- /dev/null +++ b/keyboards/doio/kb12/keymaps/vial/vial.json @@ -0,0 +1,46 @@ +{ + "name": "DOIO KB12-01", + "vendorId": "0xFEED", + "productId": "0x6060", + "lighting": "vialrgb", + "matrix": { + "rows": 3, + "cols": 5 + }, + "layouts": { + "keymap": [ + [ + { + "x": 0.75 + }, + "0,4" + ], + [ + { + "y": -0.5, + "x": 3 + }, + "0,0", + "0,1", + "0,2", + "0,3", + "1,0", + "1,1", + "1,2", + "1,3", + "2,0", + "2,1", + "2,2", + "2,3" + ], + [ + { + "y": -0.5, + "x": 0.25 + }, + "1,4", + "2,4" + ] + ] + } +} diff --git a/keyboards/doio/kb12/readme.md b/keyboards/doio/kb12/readme.md new file mode 100644 index 000000000000..1dd7a310f168 --- /dev/null +++ b/keyboards/doio/kb12/readme.md @@ -0,0 +1,24 @@ +# doio/kb12 + +QMK for DOIO Knob 12% . + +* Keyboard Maintainer: DOIO2022 +* Hardware Supported: DOIO Knob 12% + +Make example for this keyboard (after setting up your build environment): + + make doio/kb12:default + +Flashing example for this keyboard: + + make doio/kb12:default:flash + +See the build [environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/doio/kb12/rules.mk b/keyboards/doio/kb12/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/doio/kb12/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/doio/kb16/rev1/config.h b/keyboards/doio/kb16/rev1/config.h index 460fa439f640..6d635d7557dd 100644 --- a/keyboards/doio/kb16/rev1/config.h +++ b/keyboards/doio/kb16/rev1/config.h @@ -24,7 +24,6 @@ /* RGB Matrix config */ #define RGB_MATRIX_LED_COUNT 16 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 - #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/doio/kb16/rev2/config.h b/keyboards/doio/kb16/rev2/config.h index cc8d0a6830f7..fc58b8518b80 100644 --- a/keyboards/doio/kb16/rev2/config.h +++ b/keyboards/doio/kb16/rev2/config.h @@ -31,7 +31,6 @@ /* RGB Matrix config */ #define RGB_MATRIX_LED_COUNT 16 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 - #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/doio/kb16/rev2/rules.mk b/keyboards/doio/kb16/rev2/rules.mk index 88879a4ffaea..2145c9fbe103 100644 --- a/keyboards/doio/kb16/rev2/rules.mk +++ b/keyboards/doio/kb16/rev2/rules.mk @@ -25,7 +25,3 @@ RGB_MATRIX_ENABLE = yes # Encoder enabled ENCODER_ENABLE = yes - -# Wear-levelling driver -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = embedded_flash diff --git a/keyboards/doio/kb30/config.h b/keyboards/doio/kb30/config.h index a87532c45973..586a61c7a09f 100644 --- a/keyboards/doio/kb30/config.h +++ b/keyboards/doio/kb30/config.h @@ -38,7 +38,6 @@ /* RGB Matrix config */ #define RGB_MATRIX_LED_COUNT 36 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 - #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_UP_DOWN # define RGB_DISABLE_WHEN_USB_SUSPENDED # define RGB_MATRIX_KEYPRESSES @@ -89,9 +88,6 @@ #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH #endif - - -// #define DYNAMIC_KEYMAP_LAYER_COUNT 4 /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/doio/kb38/config.h b/keyboards/doio/kb38/config.h index ff90cbc8a74f..106ad4d651c4 100644 --- a/keyboards/doio/kb38/config.h +++ b/keyboards/doio/kb38/config.h @@ -13,7 +13,6 @@ #define ENABLE_RGB_MATRIX_BREATHING #define ENABLE_RGB_MATRIX_CYCLE_ALL #define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS /* * Feature disable options diff --git a/keyboards/donutcables/budget96/info.json b/keyboards/donutcables/budget96/info.json index 42a817bfd60b..a60281153530 100644 --- a/keyboards/donutcables/budget96/info.json +++ b/keyboards/donutcables/budget96/info.json @@ -40,6 +40,7 @@ }, "processor": "atmega32a", "bootloader": "bootloadhid", + "community_layouts": ["96_ansi", "96_iso"], "layouts": { "LAYOUT_all": { "layout": [ @@ -156,6 +157,225 @@ ] }, "LAYOUT_96_ansi": { + "layout": [ + {"matrix": [5, 0], "x": 0, "y": 0}, + {"matrix": [5, 2], "x": 1, "y": 0}, + {"matrix": [5, 3], "x": 2, "y": 0}, + {"matrix": [5, 4], "x": 3, "y": 0}, + {"matrix": [5, 5], "x": 4, "y": 0}, + {"matrix": [6, 0], "x": 5, "y": 0}, + {"matrix": [6, 10], "x": 6, "y": 0}, + {"matrix": [7, 10], "x": 7, "y": 0}, + {"matrix": [7, 0], "x": 8, "y": 0}, + {"matrix": [5, 11], "x": 9, "y": 0}, + {"matrix": [5, 12], "x": 10, "y": 0}, + {"matrix": [5, 13], "x": 11, "y": 0}, + {"matrix": [5, 14], "x": 12, "y": 0}, + {"matrix": [1, 13], "x": 13, "y": 0}, + {"matrix": [2, 14], "x": 14, "y": 0}, + {"matrix": [0, 13], "x": 15, "y": 0}, + {"matrix": [7, 6], "x": 16, "y": 0}, + {"matrix": [7, 8], "x": 17, "y": 0}, + {"matrix": [7, 9], "x": 18, "y": 0}, + + {"matrix": [4, 0], "x": 0, "y": 1}, + {"matrix": [4, 1], "x": 1, "y": 1}, + {"matrix": [4, 2], "x": 2, "y": 1}, + {"matrix": [4, 3], "x": 3, "y": 1}, + {"matrix": [4, 4], "x": 4, "y": 1}, + {"matrix": [4, 5], "x": 5, "y": 1}, + {"matrix": [6, 1], "x": 6, "y": 1}, + {"matrix": [6, 11], "x": 7, "y": 1}, + {"matrix": [7, 11], "x": 8, "y": 1}, + {"matrix": [7, 1], "x": 9, "y": 1}, + {"matrix": [4, 10], "x": 10, "y": 1}, + {"matrix": [4, 11], "x": 11, "y": 1}, + {"matrix": [4, 12], "x": 12, "y": 1}, + {"matrix": [4, 14], "x": 13, "y": 1, "w": 2}, + {"matrix": [4, 6], "x": 15, "y": 1}, + {"matrix": [4, 7], "x": 16, "y": 1}, + {"matrix": [4, 8], "x": 17, "y": 1}, + {"matrix": [4, 9], "x": 18, "y": 1}, + + {"matrix": [3, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [3, 1], "x": 1.5, "y": 2}, + {"matrix": [3, 2], "x": 2.5, "y": 2}, + {"matrix": [3, 3], "x": 3.5, "y": 2}, + {"matrix": [3, 4], "x": 4.5, "y": 2}, + {"matrix": [3, 5], "x": 5.5, "y": 2}, + {"matrix": [6, 2], "x": 6.5, "y": 2}, + {"matrix": [6, 12], "x": 7.5, "y": 2}, + {"matrix": [7, 12], "x": 8.5, "y": 2}, + {"matrix": [7, 2], "x": 9.5, "y": 2}, + {"matrix": [3, 10], "x": 10.5, "y": 2}, + {"matrix": [3, 11], "x": 11.5, "y": 2}, + {"matrix": [3, 12], "x": 12.5, "y": 2}, + {"matrix": [3, 13], "x": 13.5, "y": 2, "w": 1.5}, + {"matrix": [3, 6], "x": 15, "y": 2}, + {"matrix": [3, 7], "x": 16, "y": 2}, + {"matrix": [3, 8], "x": 17, "y": 2}, + {"matrix": [3, 9], "x": 18, "y": 2, "h": 2}, + + {"matrix": [2, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 3}, + {"matrix": [2, 2], "x": 2.75, "y": 3}, + {"matrix": [2, 3], "x": 3.75, "y": 3}, + {"matrix": [2, 4], "x": 4.75, "y": 3}, + {"matrix": [2, 5], "x": 5.75, "y": 3}, + {"matrix": [6, 3], "x": 6.75, "y": 3}, + {"matrix": [6, 13], "x": 7.75, "y": 3}, + {"matrix": [7, 13], "x": 8.75, "y": 3}, + {"matrix": [7, 3], "x": 9.75, "y": 3}, + {"matrix": [2, 10], "x": 10.75, "y": 3}, + {"matrix": [2, 11], "x": 11.75, "y": 3}, + {"matrix": [2, 13], "x": 12.75, "y": 3, "w": 2.25}, + {"matrix": [2, 6], "x": 15, "y": 3}, + {"matrix": [2, 7], "x": 16, "y": 3}, + {"matrix": [2, 8], "x": 17, "y": 3}, + + {"matrix": [1, 0], "x": 0, "y": 4, "w": 2.25}, + {"matrix": [1, 1], "x": 2.25, "y": 4}, + {"matrix": [1, 2], "x": 3.25, "y": 4}, + {"matrix": [1, 3], "x": 4.25, "y": 4}, + {"matrix": [1, 4], "x": 5.25, "y": 4}, + {"matrix": [1, 5], "x": 6.25, "y": 4}, + {"matrix": [6, 4], "x": 7.25, "y": 4}, + {"matrix": [6, 14], "x": 8.25, "y": 4}, + {"matrix": [7, 14], "x": 9.25, "y": 4}, + {"matrix": [7, 4], "x": 10.25, "y": 4}, + {"matrix": [1, 10], "x": 11.25, "y": 4}, + {"matrix": [1, 11], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [6, 8], "x": 14, "y": 4}, + {"matrix": [1, 6], "x": 15, "y": 4}, + {"matrix": [1, 7], "x": 16, "y": 4}, + {"matrix": [1, 8], "x": 17, "y": 4}, + {"matrix": [1, 9], "x": 18, "y": 4, "h": 2}, + + {"matrix": [0, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [0, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [0, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [6, 5], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [7, 5], "x": 10, "y": 5}, + {"matrix": [0, 10], "x": 11, "y": 5}, + {"matrix": [0, 11], "x": 12, "y": 5}, + {"matrix": [6, 6], "x": 13, "y": 5}, + {"matrix": [6, 7], "x": 14, "y": 5}, + {"matrix": [6, 9], "x": 15, "y": 5}, + {"matrix": [0, 6], "x": 16, "y": 5}, + {"matrix": [0, 8], "x": 17, "y": 5} + ] + }, + "LAYOUT_96_iso": { + "layout": [ + {"matrix": [5, 0], "x": 0, "y": 0}, + {"matrix": [5, 2], "x": 1, "y": 0}, + {"matrix": [5, 3], "x": 2, "y": 0}, + {"matrix": [5, 4], "x": 3, "y": 0}, + {"matrix": [5, 5], "x": 4, "y": 0}, + {"matrix": [6, 0], "x": 5, "y": 0}, + {"matrix": [6, 10], "x": 6, "y": 0}, + {"matrix": [7, 10], "x": 7, "y": 0}, + {"matrix": [7, 0], "x": 8, "y": 0}, + {"matrix": [5, 11], "x": 9, "y": 0}, + {"matrix": [5, 12], "x": 10, "y": 0}, + {"matrix": [5, 13], "x": 11, "y": 0}, + {"matrix": [5, 14], "x": 12, "y": 0}, + {"matrix": [1, 13], "x": 13, "y": 0}, + {"matrix": [2, 14], "x": 14, "y": 0}, + {"matrix": [0, 13], "x": 15, "y": 0}, + {"matrix": [7, 6], "x": 16, "y": 0}, + {"matrix": [7, 8], "x": 17, "y": 0}, + {"matrix": [7, 9], "x": 18, "y": 0}, + + {"matrix": [4, 0], "x": 0, "y": 1}, + {"matrix": [4, 1], "x": 1, "y": 1}, + {"matrix": [4, 2], "x": 2, "y": 1}, + {"matrix": [4, 3], "x": 3, "y": 1}, + {"matrix": [4, 4], "x": 4, "y": 1}, + {"matrix": [4, 5], "x": 5, "y": 1}, + {"matrix": [6, 1], "x": 6, "y": 1}, + {"matrix": [6, 11], "x": 7, "y": 1}, + {"matrix": [7, 11], "x": 8, "y": 1}, + {"matrix": [7, 1], "x": 9, "y": 1}, + {"matrix": [4, 10], "x": 10, "y": 1}, + {"matrix": [4, 11], "x": 11, "y": 1}, + {"matrix": [4, 12], "x": 12, "y": 1}, + {"matrix": [4, 14], "x": 13, "y": 1, "w": 2}, + {"matrix": [4, 6], "x": 15, "y": 1}, + {"matrix": [4, 7], "x": 16, "y": 1}, + {"matrix": [4, 8], "x": 17, "y": 1}, + {"matrix": [4, 9], "x": 18, "y": 1}, + + {"matrix": [3, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [3, 1], "x": 1.5, "y": 2}, + {"matrix": [3, 2], "x": 2.5, "y": 2}, + {"matrix": [3, 3], "x": 3.5, "y": 2}, + {"matrix": [3, 4], "x": 4.5, "y": 2}, + {"matrix": [3, 5], "x": 5.5, "y": 2}, + {"matrix": [6, 2], "x": 6.5, "y": 2}, + {"matrix": [6, 12], "x": 7.5, "y": 2}, + {"matrix": [7, 12], "x": 8.5, "y": 2}, + {"matrix": [7, 2], "x": 9.5, "y": 2}, + {"matrix": [3, 10], "x": 10.5, "y": 2}, + {"matrix": [3, 11], "x": 11.5, "y": 2}, + {"matrix": [3, 12], "x": 12.5, "y": 2}, + {"matrix": [3, 6], "x": 15, "y": 2}, + {"matrix": [3, 7], "x": 16, "y": 2}, + {"matrix": [3, 8], "x": 17, "y": 2}, + {"matrix": [3, 9], "x": 18, "y": 2, "h": 2}, + + {"matrix": [2, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 3}, + {"matrix": [2, 2], "x": 2.75, "y": 3}, + {"matrix": [2, 3], "x": 3.75, "y": 3}, + {"matrix": [2, 4], "x": 4.75, "y": 3}, + {"matrix": [2, 5], "x": 5.75, "y": 3}, + {"matrix": [6, 3], "x": 6.75, "y": 3}, + {"matrix": [6, 13], "x": 7.75, "y": 3}, + {"matrix": [7, 13], "x": 8.75, "y": 3}, + {"matrix": [7, 3], "x": 9.75, "y": 3}, + {"matrix": [2, 10], "x": 10.75, "y": 3}, + {"matrix": [2, 11], "x": 11.75, "y": 3}, + {"matrix": [2, 12], "x": 12.75, "y": 3}, + {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25, "h": 2}, + {"matrix": [2, 6], "x": 15, "y": 3}, + {"matrix": [2, 7], "x": 16, "y": 3}, + {"matrix": [2, 8], "x": 17, "y": 3}, + + {"matrix": [1, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [0, 3], "x": 1.25, "y": 4}, + {"matrix": [1, 1], "x": 2.25, "y": 4}, + {"matrix": [1, 2], "x": 3.25, "y": 4}, + {"matrix": [1, 3], "x": 4.25, "y": 4}, + {"matrix": [1, 4], "x": 5.25, "y": 4}, + {"matrix": [1, 5], "x": 6.25, "y": 4}, + {"matrix": [6, 4], "x": 7.25, "y": 4}, + {"matrix": [6, 14], "x": 8.25, "y": 4}, + {"matrix": [7, 14], "x": 9.25, "y": 4}, + {"matrix": [7, 4], "x": 10.25, "y": 4}, + {"matrix": [1, 10], "x": 11.25, "y": 4}, + {"matrix": [1, 11], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [6, 8], "x": 14, "y": 4}, + {"matrix": [1, 6], "x": 15, "y": 4}, + {"matrix": [1, 7], "x": 16, "y": 4}, + {"matrix": [1, 8], "x": 17, "y": 4}, + {"matrix": [1, 9], "x": 18, "y": 4, "h": 2}, + + {"matrix": [0, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [0, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [0, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [6, 5], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [7, 5], "x": 10, "y": 5}, + {"matrix": [0, 10], "x": 11, "y": 5}, + {"matrix": [0, 11], "x": 12, "y": 5}, + {"matrix": [6, 6], "x": 13, "y": 5}, + {"matrix": [6, 7], "x": 14, "y": 5}, + {"matrix": [6, 9], "x": 15, "y": 5}, + {"matrix": [0, 6], "x": 16, "y": 5}, + {"matrix": [0, 8], "x": 17, "y": 5} + ] + }, + "LAYOUT_96_ansi_2_right_mod": { "layout": [ {"matrix": [5, 0], "x": 0, "y": 0}, {"matrix": [5, 2], "x": 1, "y": 0}, @@ -249,6 +469,7 @@ {"matrix": [1, 6], "x": 15, "y": 4}, {"matrix": [1, 7], "x": 16, "y": 4}, {"matrix": [1, 8], "x": 17, "y": 4}, + {"matrix": [1, 9], "x": 18, "y": 4, "h": 2}, {"matrix": [0, 0], "x": 0, "y": 5, "w": 1.25}, {"matrix": [0, 1], "x": 1.25, "y": 5, "w": 1.25}, @@ -260,8 +481,7 @@ {"matrix": [6, 7], "x": 14, "y": 5}, {"matrix": [6, 9], "x": 15, "y": 5}, {"matrix": [0, 6], "x": 16, "y": 5}, - {"matrix": [0, 8], "x": 17, "y": 5}, - {"matrix": [0, 9], "x": 18, "y": 4, "h": 2} + {"matrix": [0, 8], "x": 17, "y": 5} ] } } diff --git a/keyboards/donutcables/budget96/keymaps/default/keymap.c b/keyboards/donutcables/budget96/keymaps/default/keymap.c index da335622d0fb..023c570e7f0d 100644 --- a/keyboards/donutcables/budget96/keymaps/default/keymap.c +++ b/keyboards/donutcables/budget96/keymaps/default/keymap.c @@ -16,7 +16,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_96_ansi( +[0] = LAYOUT_96_ansi_2_right_mod( 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_NUM, KC_INS, KC_HOME, KC_PGUP, KC_PSLS, 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_END, KC_PGDN, KC_PSLS, KC_PAST, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, @@ -24,21 +24,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT), -[1] = LAYOUT_96_ansi( - QK_BOOT, EE_CLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_UP, BL_DOWN, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - 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_96_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +[1] = LAYOUT_96_ansi_2_right_mod( + QK_BOOT, EE_CLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_UP, BL_DOWN, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; diff --git a/keyboards/donutcables/budget96/keymaps/donut/keymap.c b/keyboards/donutcables/budget96/keymaps/donut/keymap.c index d7e2bfd0d08e..f726fe2228c6 100644 --- a/keyboards/donutcables/budget96/keymaps/donut/keymap.c +++ b/keyboards/donutcables/budget96/keymaps/donut/keymap.c @@ -45,7 +45,7 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base */ - [_BASE] = LAYOUT_96_ansi( + [_BASE] = LAYOUT_96_ansi_2_right_mod( 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_HOME, KC_INS, KC_END, KC_MPRV, KC_MPLY, KC_MNXT, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_PSCR, KC_PSLS, KC_PAST, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, @@ -54,29 +54,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, MO(2), KC_RALT, KC_SPC, KC_CALC, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT), /* (1) Bmode layer */ - [_B] = LAYOUT_96_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, B, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_B] = LAYOUT_96_ansi_2_right_mod( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, B, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), /* (2) Fn 1 */ - [_FN1] = LAYOUT_96_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, TG(1), KC_PGUP, KC_VOLD, KC_MUTE, KC_VOLU, - ALT0, KC_TRNS, KC_TRNS, ALT1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ALT2, KC_TRNS, KC_TRNS, KC_NUM, KC_TRNS, KC_TRNS, - KC_TRNS, CD, KC_TRNS, KC_TRNS, KC_TRNS, ALT3, KC_TRNS, KC_TRNS, KC_TRNS, ALT4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, AES, xkcd, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_CAPS, KC_TRNS, X, KC_TRNS, img, B, KC_TRNS, ALT7, ALT5, ALT6, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + [_FN1] = LAYOUT_96_ansi_2_right_mod( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, TG(1), KC_PGUP, KC_VOLD, KC_MUTE, KC_VOLU, + ALT0, _______, _______, ALT1, _______, _______, _______, _______, _______, _______, _______, _______, ALT2, _______, _______, KC_NUM, _______, _______, + _______, CD, _______, _______, _______, ALT3, _______, _______, _______, ALT4, _______, _______, _______, _______, _______, _______, _______, _______, + _______, AES, xkcd, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + KC_CAPS, _______, X, _______, img, B, _______, ALT7, ALT5, ALT6, _______, _______, _______, _______, _______, _______, + _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______, _______, _______), /* (3) Fn 2 */ - [_FN2] = LAYOUT_96_ansi( + [_FN2] = LAYOUT_96_ansi_2_right_mod( 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, UC_WINC, EE_CLR, QK_BOOT, VK_TOGG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, 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_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO), diff --git a/keyboards/donutcables/budget96/keymaps/via/keymap.c b/keyboards/donutcables/budget96/keymaps/via/keymap.c index 26a3c7cf0c55..257dff57a4cc 100644 --- a/keyboards/donutcables/budget96/keymaps/via/keymap.c +++ b/keyboards/donutcables/budget96/keymaps/via/keymap.c @@ -16,7 +16,7 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT_96_ansi( +[0] = LAYOUT_96_ansi_2_right_mod( 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_NUM, KC_INS, KC_HOME, KC_PGUP, KC_PSLS, 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_END, KC_PGDN, KC_PSLS, KC_PAST, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, @@ -24,19 +24,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_P0, KC_PDOT, KC_PENT), -[1] = LAYOUT_96_ansi( - QK_BOOT, EE_CLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_UP, BL_DOWN, BL_BRTG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - 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_96_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +[1] = LAYOUT_96_ansi_2_right_mod( + QK_BOOT, EE_CLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_UP, BL_DOWN, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), }; diff --git a/keyboards/donutcables/budget96/matrix_diagram.md b/keyboards/donutcables/budget96/matrix_diagram.md new file mode 100644 index 000000000000..1b6255c8c89c --- /dev/null +++ b/keyboards/donutcables/budget96/matrix_diagram.md @@ -0,0 +1,23 @@ +# Matrix Diagram for Donutcables Budget96 + +``` +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│50 │52 │53 │54 │55 │6A │7A │70 │5B │5C │5C │5D │5E │1D │2E │0D │76 │78 │79 │ +├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ ┌───────┐ +│40 │41 │42 │43 │44 │45 │61 │6B │7B │71 │4A │4B │4C │4D │4E │46 │47 │48 │49 │ │4D │ 2u Backpsace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤ └─┬─────┤ ┌───┐ +│30 │31 │32 │33 │34 │35 │62 │6C │7C │72 │3A │3B │3C │3D │36 │37 │38 │39 │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┼───┤ ┌──┴┐2D │ ISO Enter │39 │ Numpad "+" 2u +│20 │21 │22 │23 │24 │25 │63 │6D │7D │73 │2A │2B │2C │26 │27 │28 │29 │ │2C │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤ └───┴────┘ ├───┤ +│10 │03 │11 │12 │13 │14 │15 │64 │6E │7E │74 │1A │1B │68 │16 │17 │18 │19 │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┼───┤ ┌───────┐ │19 │ Numpad Enter 2U +│00 │01 │02 │65 │75 │0A │0B │66 │67 │69 │06 │08 │09 │ Numpad 0 2u │06 │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ └───────┘ └───┘ +┌────────┐ ┌──────────┐ +│10 │ 2.25u LShift 2.75u RShift │1B │ +└────────┘ └──────────┘ +┌────┬────┬────┬────────────────────────┬─────┬─────┐ +│00 │01 │02 │65 │75 │0B │ 2x1.5u Right Mod +└────┴────┴────┴────────────────────────┴─────┴─────┘ +``` diff --git a/keyboards/doro67/multi/keymaps/konstantin/config.h b/keyboards/doro67/multi/keymaps/konstantin/config.h deleted file mode 100644 index 3c2583e2d46f..000000000000 --- a/keyboards/doro67/multi/keymaps/konstantin/config.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define LAYER_FN -#define LAYER_NUMPAD diff --git a/keyboards/doro67/multi/keymaps/konstantin/keymap.c b/keyboards/doro67/multi/keymaps/konstantin/keymap.c deleted file mode 100644 index 02687f82485e..000000000000 --- a/keyboards/doro67/multi/keymaps/konstantin/keymap.c +++ /dev/null @@ -1,67 +0,0 @@ -#include QMK_KEYBOARD_H -#include "konstantin.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │PSc│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │Del│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ - * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │PgD│ - * ├────┼───┴┬──┴─┬─┴───┴───┴┬──┴─┬─┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │LCtl│LGui│LAlt│ Space │FnLk│ Fn │RAlG│RCtl│ │ ← │ ↓ │ → │ - * └────┴────┴────┴──────────┴────┴────────┴────┴────┘ └───┴───┴───┘ - */ - [L_BASE] = LAYOUT_multi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_PSCR, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_LSFT, RAL_RGU, 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, FNLK, FN, RAL_RGU, KC_RCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* Fn layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Num│SLk│Pau│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ - * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│Ins│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │Top│ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ - * │ │ │MA0│MA2│MW←│MW→│ │ │App│Vo-│Vo+│Mut│ │PgU│Btm│ - * ├────┼───┴┬──┴─┬─┴───┴───┴┬──┴─┬─┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │ │DtPR│DtNA│ MW↓ │ │ │ │ │ │Hom│PgD│End│ - * └────┴────┴────┴──────────┴────┴────────┴────┴────┘ └───┴───┴───┘ - */ - [L_FN] = LAYOUT_multi( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, NUMPAD, KC_SCRL, KC_PAUS, - KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_NEXT, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, KC_INS, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, TOP, - _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, BOTTOM, - _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END - ), - - /* Numpad layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ │ │ │ │ │ │ │P7 │P8 │P9 │P- │ − │ = │Num│ │ │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ - * │ │ │ │ │ │ │ │P4 │P5 │P6 │P+ │ ( │ ) │ │ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │ │ │ │ │ │ │ │P1 │P2 │P3 │P* │ × │ PEnter │ │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ - * │ │ │ │ │ │ │ │P0 │P0 │ , │P. │P/ │ ÷ │ │ │ - * ├────┼───┴┬──┴─┬─┴───┴───┴┬──┴─┬─┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ - * └────┴────┴────┴──────────┴────┴────────┴────┴────┘ └───┴───┴───┘ - */ - [L_NUMPAD] = LAYOUT_multi( - _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, MINUS, EQUALS, NUMPAD, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, L_PAREN, R_PAREN, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PAST, TIMES, KC_PENT, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, COMMA, KC_PDOT, KC_PSLS, DIVIDE, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______ - ), -}; diff --git a/keyboards/doro67/multi/keymaps/konstantin/rules.mk b/keyboards/doro67/multi/keymaps/konstantin/rules.mk deleted file mode 100644 index 7bab7513ed3f..000000000000 --- a/keyboards/doro67/multi/keymaps/konstantin/rules.mk +++ /dev/null @@ -1,18 +0,0 @@ -# Generic features -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -COMMAND_ENABLE = yes -CONSOLE_ENABLE = yes -EXTRAKEY_ENABLE = yes -MOUSEKEY_ENABLE = yes -NKRO_ENABLE = yes -TAP_DANCE_ENABLE = yes -UNICODEMAP_ENABLE = yes - -# Keyboard-specific features -BACKLIGHT_ENABLE = no -VIA_ENABLE = yes - -# Firmware size reduction -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no -SPACE_CADET_ENABLE = no diff --git a/keyboards/doro67/multi/keymaps/zyber/keymap.c b/keyboards/doro67/multi/keymaps/zyber/keymap.c deleted file mode 100644 index 05200e885582..000000000000 --- a/keyboards/doro67/multi/keymaps/zyber/keymap.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2019 ShadeDream - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "zyber.h" - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_multi( - 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_F2, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD(LBRC), KC_RBRC, KC_BSLS, KC_PGUP, - LCTL(KC_UP), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD(SCLN), TD(QUOT), KC_ENT, KC_PGDN, - KC_LSFT, KC_GRV, 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_HOME, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_multi( - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, , - BL_TOGG, BL_STEP, BL_DOWN, BL_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - -}; \ No newline at end of file diff --git a/keyboards/dp3000/dp3000.c b/keyboards/dp3000/dp3000.c index 3d99670fe36d..6daeaa56630e 100644 --- a/keyboards/dp3000/dp3000.c +++ b/keyboards/dp3000/dp3000.c @@ -15,20 +15,75 @@ */ #include "quantum.h" -bool oled_task_kb(void) { - if (!oled_task_user()) { - return false; - } +#define LOGO_TIMEOUT 3000 + +static uint32_t logo_timer = 0; +static bool display_logo = true; + +void dp3000_logo(void) { + static const char PROGMEM dp3000_logo[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x60, 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60, + 0x7c, 0x7c, 0x60, 0x60, 0x60, 0x60, 0x7c, 0x7c, 0x60, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xf8, 0x18, 0x18, 0xf0, 0xe0, + 0x00, 0x00, 0xf8, 0xf8, 0x18, 0x18, 0xf8, 0xf0, 0x00, 0x00, 0xff, 0xff, 0x86, 0x86, 0x86, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0x98, 0x98, 0xf8, 0xf0, 0x00, 0xf0, 0xf8, 0x18, 0x18, 0xf8, 0xf0, + 0x00, 0xf0, 0xf8, 0x18, 0x18, 0xf8, 0xf0, 0x00, 0xf0, 0xf8, 0x18, 0x18, 0xf8, 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x61, 0x61, 0x61, 0xff, 0xff, 0x00, 0x00, 0x1f, 0x1f, 0x18, 0x18, 0x0f, 0x07, + 0x00, 0x00, 0x1f, 0x1f, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0xff, 0xff, 0x61, 0x61, 0x61, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0x19, 0x19, 0x1f, 0x0f, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x1f, 0x0f, + 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x1f, 0x0f, 0x00, 0x0f, 0x1f, 0x18, 0x18, 0x1f, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x06, 0x3e, 0x3e, 0x06, 0x06, 0x06, 0x06, + 0x3e, 0x3e, 0x06, 0x06, 0x06, 0x06, 0x3e, 0x3e, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(dp3000_logo, sizeof(dp3000_logo)); +} + +void default_status(void) { + oled_set_cursor(0, 0); oled_write_P(PSTR("LAYER: "), false); oled_write_char('0' + get_highest_layer(layer_state), false); - + oled_advance_page(true); + oled_write_P(PSTR("LOCK: "), false); led_t led_state = host_keyboard_led_state(); - oled_set_cursor(0, 1); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_set_cursor(0, 2); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_set_cursor(0, 3); oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (display_logo && timer_elapsed32(logo_timer) > LOGO_TIMEOUT) { + display_logo = false; + oled_clear(); + logo_timer = 0; + } + if (display_logo) { + dp3000_logo(); + } else { + default_status(); + } return false; } diff --git a/keyboards/dp3000/info.json b/keyboards/dp3000/info.json index cdb9fe4547d9..442d6d6a66d7 100644 --- a/keyboards/dp3000/info.json +++ b/keyboards/dp3000/info.json @@ -1,6 +1,5 @@ { "manufacturer": "depermana12", - "keyboard_name": "dp3000", "maintainer": "depermana12", "diode_direction": "COL2ROW", "development_board": "promicro", @@ -10,7 +9,6 @@ "console": false, "extrakey": true, "encoder": true, - "rgb_matrix": true, "oled": true, "mousekey": false, "nkro": false @@ -20,64 +18,17 @@ }, "url": "https://github.com/depermana12", "usb": { - "device_version": "1.0.1", - "vid": "0x4450", - "pid": "0x6470" + "vid": "0x4450" }, "encoder": { "rotary": [ - { "pin_a": "B2", "pin_b": "B1"}, - { "pin_a": "F4", "pin_b": "F5"} + { "pin_a": "B2", "pin_b": "B1" }, + { "pin_a": "F4", "pin_b": "F5" } ] }, - "ws2812": { - "pin": "B5" - }, - "rgb_matrix":{ - "driver":"ws2812", - "max_brightness": 180, - "animations": { - "alphas_mods": true, - "gradient_up_down": true, - "gradient_left_right": true, - "breathing": true, - "band_sat": true, - "band_val": true, - "band_pinwheel_sat": true, - "band_pinwheel_val": true, - "band_spiral_sat": true, - "band_spiral_val": true, - "cycle_all": true, - "cycle_left_right": true, - "cycle_up_down": true, - "rainbow_moving_chevron":true, - "cycle_pinwheel": true, - "cycle_spiral": true, - "raindrops": true, - "hue_breathing": true, - "hue_pendulum": true, - "hue_wave": true, - "typing_heatmap": true, - "solid_reactive_simple": true, - "solid_reactive": true, - "solid_reactive_multinexus": true, - "splash": true, - "solid_splash": true - }, - "layout":[ - { "matrix": [1, 0], "x": 0, "y": 32, "flags":4 }, - { "matrix": [1, 1], "x": 25, "y": 32, "flags":4 }, - { "matrix": [1, 2], "x": 37, "y": 32, "flags":4 }, - { "matrix": [1, 3], "x": 75, "y": 32, "flags":4 }, - { "matrix": [2, 0], "x": 75, "y": 16, "flags":4 }, - { "matrix": [2, 1], "x": 37, "y": 16, "flags":4 }, - { "matrix": [2, 2], "x": 25, "y": 16, "flags":4 }, - { "matrix": [2, 3], "x": 0, "y": 16, "flags":4 } - ] - }, "matrix_pins": { - "cols": ["D4", "D7", "B4", "C6"], - "rows": ["F6", "F7", "B3"] + "cols": [ "D4", "D7", "B4", "C6" ], + "rows": [ "F6", "F7", "B3" ] }, "layouts": { "LAYOUT": { diff --git a/keyboards/dp3000/post_config.h b/keyboards/dp3000/post_config.h new file mode 100644 index 000000000000..ef2ce27e2190 --- /dev/null +++ b/keyboards/dp3000/post_config.h @@ -0,0 +1,22 @@ +/* + * Copyright 2023 deddia permana (@depermana12) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +#if !defined(OLED_TIMEOUT) +# define OLED_TIMEOUT 30000 +#endif diff --git a/keyboards/dp3000/readme.md b/keyboards/dp3000/readme.md index 3844a66757d0..8e2c8871d9fd 100644 --- a/keyboards/dp3000/readme.md +++ b/keyboards/dp3000/readme.md @@ -3,18 +3,21 @@ ![dp3000 macropad](https://i.imgur.com/uBHS8EYh.jpg) dp3000 is a simple yet elegant macropad, 2x4 (8 keys), dual encoder, embedded with an Atmel 32u4 chip, powered by QMK. - +* Rev. 1 Support RGB matrix +* Rev. 2 Support RGB light (underglow) * Keyboard Maintainer: [Deddia Permana](https://github.com/depermana12) -* Hardware Supported: DP3000 PCB, ATmega32u4 +* Hardware Supported: DP3000 PCB rev1 and rev2, ATmega32u4 * Hardware Availability: [tokopedia.com/gundamtricks](https://www.tokopedia.com/gundamtricks) Make example for this keyboard (after setting up your build environment): - make dp3000:default + make dp3000/rev1:default + make dp3000/rev2:default Flashing example for this keyboard: - make dp3000:default:flash + make dp3000/rev1:default:flash + make dp3000/rev2:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). @@ -22,6 +25,6 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to Enter the bootloader in 3 ways: -* Bootmagic reset: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* Bootmagic reset: Hold down the key at (0,0) in the matrix (left rotary encoder push switch) and plug in the keyboard * Physical reset button: Briefly press reset button twice, located in front of the first rotary encoder (left rotary encoder) * Keycode in layout: Press the key mapped to QK_BOOT if it is available diff --git a/keyboards/dp3000/rev1/info.json b/keyboards/dp3000/rev1/info.json new file mode 100644 index 000000000000..7ea2d101c4fe --- /dev/null +++ b/keyboards/dp3000/rev1/info.json @@ -0,0 +1,59 @@ +{ + "keyboard_name": "dp3000", + "features": { + "rgb_matrix": true + }, + "usb": { + "device_version": "1.0.1", + "pid": "0x6470" + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "rainbow_moving_chevron": true, + "raindrops": true, + "solid_color": true, + "solid_reactive": true, + "solid_reactive_multinexus": true, + "solid_reactive_simple": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [1, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [1, 1], "x": 25, "y": 32, "flags": 4}, + {"matrix": [1, 2], "x": 37, "y": 32, "flags": 4}, + {"matrix": [1, 3], "x": 75, "y": 32, "flags": 4}, + {"matrix": [2, 0], "x": 75, "y": 16, "flags": 4}, + {"matrix": [2, 1], "x": 37, "y": 16, "flags": 4}, + {"matrix": [2, 2], "x": 25, "y": 16, "flags": 4}, + {"matrix": [2, 3], "x": 0, "y": 16, "flags": 4} + ], + "max_brightness": 180, + "sat_steps": 8, + "speed_steps": 10, + "val_steps": 8 + }, + "ws2812": { + "pin": "B5" + } +} diff --git a/keyboards/dp3000/rev1/rules.mk b/keyboards/dp3000/rev1/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/dp3000/rev1/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/dp3000/rev2/info.json b/keyboards/dp3000/rev2/info.json new file mode 100644 index 000000000000..f6f03eeb639c --- /dev/null +++ b/keyboards/dp3000/rev2/info.json @@ -0,0 +1,31 @@ +{ + "keyboard_name": "dp3000 rev2", + "features": { + "rgblight": true + }, + "usb": { + "device_version": "2.0.0", + "pid": "0x3132" + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 4, + "max_brightness": 180, + "saturation_steps": 8, + "sleep": true + }, + "ws2812": { + "pin": "B6" + } +} diff --git a/keyboards/dp3000/rev2/rules.mk b/keyboards/dp3000/rev2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/dp3000/rev2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/dp3000/rules.mk b/keyboards/dp3000/rules.mk index 6e7633bfe015..0f44aefd4458 100644 --- a/keyboards/dp3000/rules.mk +++ b/keyboards/dp3000/rules.mk @@ -1 +1 @@ -# This file intentionally left blank +DEFAULT_FOLDER = dp3000/rev1 diff --git a/keyboards/dp60/config.h b/keyboards/dp60/config.h index fd83fe2d6800..3c65d9473637 100644 --- a/keyboards/dp60/config.h +++ b/keyboards/dp60/config.h @@ -33,9 +33,8 @@ //#define NO_PRINT //rgb matrix setting -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 -#define DRIVER_COUNT 2 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC #define DRIVER_1_LED_TOTAL 36 #define DRIVER_2_LED_TOTAL 36 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/dp60/dp60.c b/keyboards/dp60/dp60.c index 75e6649ad528..588acd591d10 100644 --- a/keyboards/dp60/dp60.c +++ b/keyboards/dp60/dp60.c @@ -17,7 +17,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/dp60/keymaps/indicator/indicator.c b/keyboards/dp60/keymaps/indicator/indicator.c index 683ae3625aaf..02450ce68d98 100644 --- a/keyboards/dp60/keymaps/indicator/indicator.c +++ b/keyboards/dp60/keymaps/indicator/indicator.c @@ -70,9 +70,9 @@ void keyboard_post_init_user(void) { extern rgblight_config_t rgblight_config; extern void rgblight_layers_write(void); -extern void indicator_write(LED_TYPE *start_led, uint8_t num_leds); +extern void indicator_write(rgb_led_t *start_led, uint8_t num_leds); -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { ws2812_setleds(start_led, RGBLED_NUM-RGB_INDICATOR_NUM); diff --git a/keyboards/dp60/keymaps/indicator/led_driver.c b/keyboards/dp60/keymaps/indicator/led_driver.c index 677eb8af57f9..b31e2daacd8c 100644 --- a/keyboards/dp60/keymaps/indicator/led_driver.c +++ b/keyboards/dp60/keymaps/indicator/led_driver.c @@ -20,7 +20,7 @@ #define ws2812_setleds_pin indicator_setleds_pin #include "ws2812_bitbang.c" -void indicator_write(LED_TYPE *start_led, uint8_t num_leds) +void indicator_write(rgb_led_t *start_led, uint8_t num_leds) { indicator_setleds(start_led, num_leds); } diff --git a/keyboards/draculad/keymaps/manna-harbour_miryoku/config.h b/keyboards/draculad/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index e49cb1539f38..000000000000 --- a/keyboards/draculad/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 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 - -#undef LAYER_STATE_8BIT - -#define XXX KC_NO - -#define LAYOUT_miryoku( \ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - XXX, XXX, \ - K32, K33, K34, K35, K36, K37 \ -) diff --git a/keyboards/draculad/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/draculad/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/draculad/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/drewkeys/mercury65/info.json b/keyboards/drewkeys/mercury65/info.json index 93f7b2ec3bc7..68fa52d8d375 100644 --- a/keyboards/drewkeys/mercury65/info.json +++ b/keyboards/drewkeys/mercury65/info.json @@ -21,79 +21,386 @@ "cols": ["B0", "B1", "B2", "B3", "B7", "D1", "D2", "D3", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5"], "rows": ["D5", "D4", "D6", "D0", "E6"] }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, "layouts": { - "LAYOUT": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "label":"`", "x":0, "y":0}, + {"matrix": [0, 1], "label":"!", "x":1, "y":0}, + {"matrix": [0, 2], "label":"@", "x":2, "y":0}, + {"matrix": [0, 3], "label":"#", "x":3, "y":0}, + {"matrix": [0, 4], "label":"$", "x":4, "y":0}, + {"matrix": [0, 5], "label":"%", "x":5, "y":0}, + {"matrix": [0, 6], "label":"^", "x":6, "y":0}, + {"matrix": [0, 7], "label":"&", "x":7, "y":0}, + {"matrix": [0, 8], "label":"*", "x":8, "y":0}, + {"matrix": [0, 9], "label":"(", "x":9, "y":0}, + {"matrix": [0, 10], "label":")", "x":10, "y":0}, + {"matrix": [0, 11], "label":"_", "x":11, "y":0}, + {"matrix": [0, 12], "label":"+", "x":12, "y":0}, + {"matrix": [0, 13], "label":"Del", "x":13, "y":0}, + {"matrix": [0, 14], "label":"Bsp", "x":14, "y":0}, + + {"matrix": [1, 0], "label":"Tab", "x":0, "y":1, "w":1.5}, + {"matrix": [1, 2], "label":"Q", "x":1.5, "y":1}, + {"matrix": [1, 3], "label":"W", "x":2.5, "y":1}, + {"matrix": [1, 4], "label":"E", "x":3.5, "y":1}, + {"matrix": [1, 5], "label":"R", "x":4.5, "y":1}, + {"matrix": [1, 6], "label":"T", "x":5.5, "y":1}, + {"matrix": [1, 7], "label":"Y", "x":6.5, "y":1}, + {"matrix": [1, 8], "label":"U", "x":7.5, "y":1}, + {"matrix": [1, 9], "label":"I", "x":8.5, "y":1}, + {"matrix": [1, 10], "label":"O", "x":9.5, "y":1}, + {"matrix": [1, 11], "label":"P", "x":10.5, "y":1}, + {"matrix": [1, 12], "label":"{", "x":11.5, "y":1}, + {"matrix": [1, 13], "label":"}", "x":12.5, "y":1}, + {"matrix": [1, 14], "label":"|", "x":13.5, "y":1, "w":1.5}, + {"matrix": [1, 16], "label":"PgUp", "x":15.5, "y":1}, + + {"matrix": [2, 0], "label":"Caps Lock", "x":0, "y":2, "w":1.75}, + {"matrix": [2, 2], "label":"A", "x":1.75, "y":2}, + {"matrix": [2, 3], "label":"S", "x":2.75, "y":2}, + {"matrix": [2, 4], "label":"D", "x":3.75, "y":2}, + {"matrix": [2, 5], "label":"F", "x":4.75, "y":2}, + {"matrix": [2, 6], "label":"G", "x":5.75, "y":2}, + {"matrix": [2, 7], "label":"H", "x":6.75, "y":2}, + {"matrix": [2, 8], "label":"J", "x":7.75, "y":2}, + {"matrix": [2, 9], "label":"K", "x":8.75, "y":2}, + {"matrix": [2, 10], "label":"L", "x":9.75, "y":2}, + {"matrix": [2, 11], "label":":", "x":10.75, "y":2}, + {"matrix": [2, 12], "label":"@", "x":11.75, "y":2}, + {"matrix": [2, 13], "label":"ISO", "x":12.75, "y":2}, + {"matrix": [2, 14], "label":"Enter", "x":13.75, "y":2, "w":1.25}, + {"matrix": [2, 16], "label":"Home", "x":15.5, "y":2}, + + {"matrix": [3, 0], "label":"Shift", "x":0, "y":3, "w":1.25}, + {"matrix": [3, 1], "label":"\\", "x":1.25, "y":3}, + {"matrix": [3, 2], "label":"Z", "x":2.25, "y":3}, + {"matrix": [3, 3], "label":"X", "x":3.25, "y":3}, + {"matrix": [3, 4], "label":"C", "x":4.25, "y":3}, + {"matrix": [3, 5], "label":"V", "x":5.25, "y":3}, + {"matrix": [3, 6], "label":"B", "x":6.25, "y":3}, + {"matrix": [3, 7], "label":"N", "x":7.25, "y":3}, + {"matrix": [3, 8], "label":"M", "x":8.25, "y":3}, + {"matrix": [3, 9], "label":"<", "x":9.25, "y":3}, + {"matrix": [3, 10], "label":">", "x":10.25, "y":3}, + {"matrix": [3, 11], "label":"?", "x":11.25, "y":3}, + {"matrix": [3, 13], "label":"Shift", "x":12.25, "y":3, "w":1.75}, + {"matrix": [3, 14], "label":"\u2191", "x":14.25, "y":3.25}, + {"matrix": [3, 16], "label":"End", "x":15.5, "y":3}, + + {"matrix": [4, 0], "label":"Ctrl", "x":0, "y":4, "w":1.25}, + {"matrix": [4, 1], "label":"Win", "x":1.25, "y":4, "w":1.25}, + {"matrix": [4, 2], "label":"Alt", "x":2.5, "y":4, "w":1.25}, + {"matrix": [4, 6], "x":3.75, "y":4, "w":6.25}, + {"matrix": [4, 10], "label":"AltGr", "x":10, "y":4, "w":1.25}, + {"matrix": [4, 11], "label":"Win", "x":11.25, "y":4, "w":1.25}, + {"matrix": [4, 13], "label":"\u2190", "x":13.25, "y":4.25}, + {"matrix": [4, 14], "label":"\u2193", "x":14.25, "y":4.25}, + {"matrix": [4, 15], "label":"\u2192", "x":15.25, "y":4.25} + ] + }, + "LAYOUT_ansi_blocker_split_bs": { + "layout": [ + {"label": "`", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Bsp", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 3], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 4], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 5], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 6], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 8], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 9], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 10], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 11], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 12], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 13], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "PgUp", "matrix": [1, 16], "x": 15.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Home", "matrix": [2, 16], "x": 15.5, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 14], "x": 14.25, "y": 3.25}, + {"label": "End", "matrix": [3, 16], "x": 15.5, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "AltGr", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25}, + {"label": "\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25}, + {"label": "\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_ansi_blocker_tsangan_split_bs": { + "layout": [ + {"label": "`", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Bsp", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 3], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 4], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 5], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 6], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 8], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 9], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 10], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 11], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 12], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 13], "x": 12.5, "y": 1}, + {"label": "\\", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "PgUp", "matrix": [1, 16], "x": 15.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Home", "matrix": [2, 16], "x": 15.5, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 14], "x": 14.25, "y": 3.25}, + {"label": "End", "matrix": [3, 16], "x": 15.5, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "GUI", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25}, + {"label": "\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25}, + {"label": "\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_blocker_split_bs": { "layout": [ - {"matrix": [0, 0], "label":"`", "x":0, "y":0}, - {"matrix": [0, 1], "label":"!", "x":1, "y":0}, - {"matrix": [0, 2], "label":"@", "x":2, "y":0}, - {"matrix": [0, 3], "label":"#", "x":3, "y":0}, - {"matrix": [0, 4], "label":"$", "x":4, "y":0}, - {"matrix": [0, 5], "label":"%", "x":5, "y":0}, - {"matrix": [0, 6], "label":"^", "x":6, "y":0}, - {"matrix": [0, 7], "label":"&", "x":7, "y":0}, - {"matrix": [0, 8], "label":"*", "x":8, "y":0}, - {"matrix": [0, 9], "label":"(", "x":9, "y":0}, - {"matrix": [0, 10], "label":")", "x":10, "y":0}, - {"matrix": [0, 11], "label":"_", "x":11, "y":0}, - {"matrix": [0, 12], "label":"+", "x":12, "y":0}, - {"matrix": [0, 13], "label":"Del", "x":13, "y":0}, - {"matrix": [0, 14], "label":"Bsp", "x":14, "y":0}, - {"matrix": [1, 0], "label":"Tab", "x":0, "y":1, "w":1.5}, - {"matrix": [1, 2], "label":"Q", "x":1.5, "y":1}, - {"matrix": [1, 3], "label":"W", "x":2.5, "y":1}, - {"matrix": [1, 4], "label":"E", "x":3.5, "y":1}, - {"matrix": [1, 5], "label":"R", "x":4.5, "y":1}, - {"matrix": [1, 6], "label":"T", "x":5.5, "y":1}, - {"matrix": [1, 7], "label":"Y", "x":6.5, "y":1}, - {"matrix": [1, 8], "label":"U", "x":7.5, "y":1}, - {"matrix": [1, 9], "label":"I", "x":8.5, "y":1}, - {"matrix": [1, 10], "label":"O", "x":9.5, "y":1}, - {"matrix": [1, 11], "label":"P", "x":10.5, "y":1}, - {"matrix": [1, 12], "label":"{", "x":11.5, "y":1}, - {"matrix": [1, 13], "label":"}", "x":12.5, "y":1}, - {"matrix": [1, 14], "label":"|", "x":13.5, "y":1, "w":1.5}, - {"matrix": [1, 16], "label":"PgUp", "x":15.5, "y":1}, - {"matrix": [2, 0], "label":"Caps Lock", "x":0, "y":2, "w":1.75}, - {"matrix": [2, 2], "label":"A", "x":1.75, "y":2}, - {"matrix": [2, 3], "label":"S", "x":2.75, "y":2}, - {"matrix": [2, 4], "label":"D", "x":3.75, "y":2}, - {"matrix": [2, 5], "label":"F", "x":4.75, "y":2}, - {"matrix": [2, 6], "label":"G", "x":5.75, "y":2}, - {"matrix": [2, 7], "label":"H", "x":6.75, "y":2}, - {"matrix": [2, 8], "label":"J", "x":7.75, "y":2}, - {"matrix": [2, 9], "label":"K", "x":8.75, "y":2}, - {"matrix": [2, 10], "label":"L", "x":9.75, "y":2}, - {"matrix": [2, 11], "label":":", "x":10.75, "y":2}, - {"matrix": [2, 12], "label":"@", "x":11.75, "y":2}, - {"matrix": [2, 13], "label":"ISO", "x":12.75, "y":2}, - {"matrix": [2, 14], "label":"Enter", "x":13.75, "y":2, "w":1.25}, - {"matrix": [2, 16], "label":"Home", "x":15.5, "y":2}, - {"matrix": [3, 0], "label":"Shift", "x":0, "y":3, "w":1.25}, - {"matrix": [3, 1], "label":"\\", "x":1.25, "y":3}, - {"matrix": [3, 2], "label":"Z", "x":2.25, "y":3}, - {"matrix": [3, 3], "label":"X", "x":3.25, "y":3}, - {"matrix": [3, 4], "label":"C", "x":4.25, "y":3}, - {"matrix": [3, 5], "label":"V", "x":5.25, "y":3}, - {"matrix": [3, 6], "label":"B", "x":6.25, "y":3}, - {"matrix": [3, 7], "label":"N", "x":7.25, "y":3}, - {"matrix": [3, 8], "label":"M", "x":8.25, "y":3}, - {"matrix": [3, 9], "label":"<", "x":9.25, "y":3}, - {"matrix": [3, 10], "label":">", "x":10.25, "y":3}, - {"matrix": [3, 11], "label":"?", "x":11.25, "y":3}, - {"matrix": [3, 13], "label":"Shift", "x":12.25, "y":3, "w":1.75}, - {"matrix": [3, 14], "label":"End", "x":15.5, "y":3}, - {"matrix": [3, 16], "label":"\u2191", "x":14.25, "y":3.25}, - {"matrix": [4, 0], "label":"Ctrl", "x":0, "y":4, "w":1.25}, - {"matrix": [4, 1], "label":"Win", "x":1.25, "y":4, "w":1.25}, - {"matrix": [4, 2], "label":"Alt", "x":2.5, "y":4, "w":1.25}, - {"matrix": [4, 6], "x":3.75, "y":4, "w":6.25}, - {"matrix": [4, 10], "label":"AltGr", "x":10, "y":4, "w":1.25}, - {"matrix": [4, 11], "label":"Win", "x":11.25, "y":4, "w":1.25}, - {"matrix": [4, 13], "label":"\u2190", "x":13.25, "y":4.25}, - {"matrix": [4, 14], "label":"\u2193", "x":14.25, "y":4.25}, - {"matrix": [4, 15], "label":"\u2192", "x":15.25, "y":4.25}] + {"label": "`", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Bsp", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 3], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 4], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 5], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 6], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 8], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 9], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 10], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 11], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 12], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 13], "x": 12.5, "y": 1}, + {"label": "PgUp", "matrix": [1, 16], "x": 15.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "#", "matrix": [2, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Home", "matrix": [2, 16], "x": 15.5, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 14], "x": 14.25, "y": 3.25}, + {"label": "End", "matrix": [3, 16], "x": 15.5, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "AltGr", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "GUI", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25}, + {"label": "\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25}, + {"label": "\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25} + ] + }, + "LAYOUT_iso_blocker_tsangan_split_bs": { + "layout": [ + {"label": "`", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "=", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Bsp", "matrix": [0, 14], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 3], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 4], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 5], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 6], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 7], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 8], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 9], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 10], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 11], "x": 10.5, "y": 1}, + {"label": "[", "matrix": [1, 12], "x": 11.5, "y": 1}, + {"label": "]", "matrix": [1, 13], "x": 12.5, "y": 1}, + {"label": "PgUp", "matrix": [1, 16], "x": 15.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": ";", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "'", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "#", "matrix": [2, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"label": "Home", "matrix": [2, 16], "x": 15.5, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "\u2191", "matrix": [3, 14], "x": 14.25, "y": 3.25}, + {"label": "End", "matrix": [3, 16], "x": 15.5, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "GUI", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25}, + {"label": "\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25}, + {"label": "\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25} + ] } } - } diff --git a/keyboards/drewkeys/mercury65/keymaps/default/keymap.c b/keyboards/drewkeys/mercury65/keymaps/default/keymap.c index 2f9cc945c9d2..c37dac5359c3 100644 --- a/keyboards/drewkeys/mercury65/keymaps/default/keymap.c +++ b/keyboards/drewkeys/mercury65/keymaps/default/keymap.c @@ -26,7 +26,7 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base https://i.imgur.com/viQdtbB.png */ - [_BASE] = LAYOUT( + [_BASE] = LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 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_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT ), - [_FN] = LAYOUT( + [_FN] = LAYOUT_all( QK_BOOT, 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_BSLS, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/drewkeys/mercury65/keymaps/via/keymap.c b/keyboards/drewkeys/mercury65/keymaps/via/keymap.c index 2af6a064f298..faa3cfc3ec0f 100644 --- a/keyboards/drewkeys/mercury65/keymaps/via/keymap.c +++ b/keyboards/drewkeys/mercury65/keymaps/via/keymap.c @@ -26,7 +26,7 @@ enum layer_names { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Base https://i.imgur.com/viQdtbB.png */ - [_BASE] = LAYOUT( + [_BASE] = LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, 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_DEL, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP, @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT ), - [_FN1] = LAYOUT( + [_FN1] = LAYOUT_all( QK_BOOT, 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_BSLS, KC_BSPC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/drewkeys/mercury65/matrix_diagram.md b/keyboards/drewkeys/mercury65/matrix_diagram.md new file mode 100644 index 000000000000..32fd838a3e47 --- /dev/null +++ b/keyboards/drewkeys/mercury65/matrix_diagram.md @@ -0,0 +1,25 @@ +# Matrix Diagram for RocketKeyboards mercury65 + +``` + ┌───────┐ + 2u Backspace │?? │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌───┐ ┌─────┐ +│10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │1G │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤ ┌──┴┐2E │ ISO Enter +│20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2E │ │2G │ │2D │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │┌───┐│3G │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│3E │└───┘ +│40 │41 │42 │46 │4A │4B │ ┌───┼───┼───┐ +└────┴────┴────┴────────────────────────┴────┴────┘ │4D │4E │4F │ + └───┴───┴───┘ +┌────────┐ +│30 │ 2.25u LShift +└────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┐ +│40 │41 │42 │46 │4B │ Blocker Tsangan +└─────┴───┴─────┴───────────────────────────┴─────┘ +``` diff --git a/keyboards/drop/alt/keymaps/vial/config.h b/keyboards/drop/alt/keymaps/vial/config.h new file mode 100644 index 000000000000..0b4a6a45cfbd --- /dev/null +++ b/keyboards/drop/alt/keymaps/vial/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 + +#define VIAL_KEYBOARD_UID {0x5E, 0x5A, 0x93, 0x8B, 0x56, 0x11, 0xB7, 0x99} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } \ No newline at end of file diff --git a/keyboards/drop/alt/keymaps/vial/keymap.c b/keyboards/drop/alt/keymaps/vial/keymap.c new file mode 100644 index 000000000000..28d7232bcfc8 --- /dev/null +++ b/keyboards/drop/alt/keymaps/vial/keymap.c @@ -0,0 +1,20 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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_MUTE, + _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, KC_END, + _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, + _______, _______, _______, EE_CLR, KC_APP, _______, KC_HOME, KC_PGDN, KC_END + ) +}; diff --git a/keyboards/drop/alt/keymaps/vial/rules.mk b/keyboards/drop/alt/keymaps/vial/rules.mk new file mode 100644 index 000000000000..31bb6d699f9c --- /dev/null +++ b/keyboards/drop/alt/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes \ No newline at end of file diff --git a/keyboards/drop/alt/keymaps/vial/vial.json b/keyboards/drop/alt/keymaps/vial/vial.json new file mode 100644 index 000000000000..45e581eb8416 --- /dev/null +++ b/keyboards/drop/alt/keymaps/vial/vial.json @@ -0,0 +1,166 @@ +{ + "name": "Drop ALT V2", + "vendorId": "0x359B", + "productId": "0x0006", + "lighting": "vialrgb", + "matrix": { + "rows": 5, + "cols": 15 + }, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13", + "0,14" + ], + [ + { + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "w": 1.5 + }, + "1,13", + { + "c": "#aaaaaa" + }, + "1,14" + ], + [ + { + "w": 1.75 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + { + "c": "#777777", + "w": 2.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,14" + ], + [ + { + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12", + { + "c": "#777777" + }, + "3,13", + { + "c": "#aaaaaa" + }, + "3,14" + ], + [ + { + "w": 1.25 + }, + "4,0", + { + "w": 1.25 + }, + "4,1", + { + "w": 1.25 + }, + "4,2", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,6", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,10", + { + "w": 1.25 + }, + "4,11", + { + "x": 0.5, + "c": "#777777" + }, + "4,12", + "4,13", + "4,14" + ] + ] + } +} diff --git a/keyboards/drop/alt/v2/config.h b/keyboards/drop/alt/v2/config.h index f3f432390e1a..2dfae36a49da 100644 --- a/keyboards/drop/alt/v2/config.h +++ b/keyboards/drop/alt/v2/config.h @@ -14,16 +14,9 @@ #define EXTERNAL_EEPROM_WP_PIN B5 #define EEPROM_I2C_24LC256 -#define DRIVER_ADDR_1 0b1010011 -#define DRIVER_ADDR_2 0b1011111 -#define DRIVER_COUNT 2 -#define RGB_MATRIX_LED_COUNT 111 -#define ISSI_PWM_FREQUENCY 0b010 // 26k - -#define RGB_DISABLE_WHEN_USB_SUSPENDED -#define RGB_MATRIX_DEFAULT_VAL 100 -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_VCC +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_VCC_VCC +#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ #define RGB_MATRIX_CYCLE_ZONES_ENABLE #define RGB_MATRIX_CAPS_LOCK_INDEX 30 diff --git a/keyboards/drop/alt/v2/info.json b/keyboards/drop/alt/v2/info.json index bfd7942fffd8..8363aca5cf1f 100644 --- a/keyboards/drop/alt/v2/info.json +++ b/keyboards/drop/alt/v2/info.json @@ -105,6 +105,8 @@ }, "rgb_matrix": { "driver": "is31fl3733", + "max_brightness": 191, + "sleep": true, "animations": { "alphas_mods": true, "gradient_up_down": true, @@ -151,36 +153,36 @@ "solid_multisplash": true }, "layout": [ - { "flags": 4, "matrix": [0, 0], "x": 8, "y": 56 }, - { "flags": 4, "matrix": [0, 1], "x": 22, "y": 56 }, - { "flags": 4, "matrix": [0, 2], "x": 35, "y": 56 }, - { "flags": 4, "matrix": [0, 3], "x": 49, "y": 56 }, - { "flags": 4, "matrix": [0, 4], "x": 63, "y": 56 }, - { "flags": 4, "matrix": [0, 5], "x": 77, "y": 56 }, - { "flags": 4, "matrix": [0, 6], "x": 91, "y": 56 }, - { "flags": 4, "matrix": [0, 7], "x": 105, "y": 56 }, - { "flags": 4, "matrix": [0, 8], "x": 118, "y": 56 }, - { "flags": 4, "matrix": [0, 9], "x": 132, "y": 56 }, - { "flags": 4, "matrix": [0, 10], "x": 146, "y": 56 }, - { "flags": 4, "matrix": [0, 11], "x": 160, "y": 56 }, - { "flags": 4, "matrix": [0, 12], "x": 174, "y": 56 }, - { "flags": 4, "matrix": [0, 13], "x": 195, "y": 56 }, - { "flags": 4, "matrix": [0, 14], "x": 215, "y": 56 }, - { "flags": 4, "matrix": [1, 0], "x": 11, "y": 44 }, - { "flags": 4, "matrix": [1, 1], "x": 28, "y": 44 }, - { "flags": 4, "matrix": [1, 2], "x": 42, "y": 44 }, - { "flags": 4, "matrix": [1, 3], "x": 56, "y": 44 }, - { "flags": 4, "matrix": [1, 4], "x": 70, "y": 44 }, - { "flags": 4, "matrix": [1, 5], "x": 84, "y": 44 }, - { "flags": 4, "matrix": [1, 6], "x": 98, "y": 44 }, - { "flags": 4, "matrix": [1, 7], "x": 112, "y": 44 }, - { "flags": 4, "matrix": [1, 8], "x": 125, "y": 44 }, - { "flags": 4, "matrix": [1, 9], "x": 139, "y": 44 }, - { "flags": 4, "matrix": [1, 10], "x": 153, "y": 44 }, - { "flags": 4, "matrix": [1, 11], "x": 167, "y": 44 }, - { "flags": 4, "matrix": [1, 12], "x": 181, "y": 44 }, - { "flags": 4, "matrix": [1, 13], "x": 198, "y": 44 }, - { "flags": 4, "matrix": [1, 14], "x": 215, "y": 44 }, + { "flags": 4, "matrix": [0, 0], "x": 8, "y": 7 }, + { "flags": 4, "matrix": [0, 1], "x": 22, "y": 7 }, + { "flags": 4, "matrix": [0, 2], "x": 35, "y": 7 }, + { "flags": 4, "matrix": [0, 3], "x": 49, "y": 7 }, + { "flags": 4, "matrix": [0, 4], "x": 63, "y": 7 }, + { "flags": 4, "matrix": [0, 5], "x": 77, "y": 7 }, + { "flags": 4, "matrix": [0, 6], "x": 91, "y": 7 }, + { "flags": 4, "matrix": [0, 7], "x": 105, "y": 7 }, + { "flags": 4, "matrix": [0, 8], "x": 118, "y": 7 }, + { "flags": 4, "matrix": [0, 9], "x": 132, "y": 7 }, + { "flags": 4, "matrix": [0, 10], "x": 146, "y": 7 }, + { "flags": 4, "matrix": [0, 11], "x": 160, "y": 7 }, + { "flags": 4, "matrix": [0, 12], "x": 174, "y": 7 }, + { "flags": 4, "matrix": [0, 13], "x": 195, "y": 7 }, + { "flags": 4, "matrix": [0, 14], "x": 215, "y": 7 }, + { "flags": 4, "matrix": [1, 0], "x": 11, "y": 19 }, + { "flags": 4, "matrix": [1, 1], "x": 28, "y": 19 }, + { "flags": 4, "matrix": [1, 2], "x": 42, "y": 19 }, + { "flags": 4, "matrix": [1, 3], "x": 56, "y": 19 }, + { "flags": 4, "matrix": [1, 4], "x": 70, "y": 19 }, + { "flags": 4, "matrix": [1, 5], "x": 84, "y": 19 }, + { "flags": 4, "matrix": [1, 6], "x": 98, "y": 19 }, + { "flags": 4, "matrix": [1, 7], "x": 112, "y": 19 }, + { "flags": 4, "matrix": [1, 8], "x": 125, "y": 19 }, + { "flags": 4, "matrix": [1, 9], "x": 139, "y": 19 }, + { "flags": 4, "matrix": [1, 10], "x": 153, "y": 19 }, + { "flags": 4, "matrix": [1, 11], "x": 167, "y": 19 }, + { "flags": 4, "matrix": [1, 12], "x": 181, "y": 19 }, + { "flags": 4, "matrix": [1, 13], "x": 198, "y": 19 }, + { "flags": 4, "matrix": [1, 14], "x": 215, "y": 19 }, { "flags": 4, "matrix": [2, 0], "x": 13, "y": 32 }, { "flags": 4, "matrix": [2, 1], "x": 32, "y": 32 }, { "flags": 4, "matrix": [2, 2], "x": 46, "y": 32 }, @@ -195,67 +197,67 @@ { "flags": 4, "matrix": [2, 11], "x": 170, "y": 32 }, { "flags": 4, "matrix": [2, 13], "x": 193, "y": 32 }, { "flags": 4, "matrix": [2, 14], "x": 215, "y": 32 }, - { "flags": 4, "matrix": [3, 0], "x": 16, "y": 19 }, - { "flags": 4, "matrix": [3, 2], "x": 39, "y": 19 }, - { "flags": 4, "matrix": [3, 3], "x": 53, "y": 19 }, - { "flags": 4, "matrix": [3, 4], "x": 67, "y": 19 }, - { "flags": 4, "matrix": [3, 5], "x": 80, "y": 19 }, - { "flags": 4, "matrix": [3, 6], "x": 94, "y": 19 }, - { "flags": 4, "matrix": [3, 7], "x": 108, "y": 19 }, - { "flags": 4, "matrix": [3, 8], "x": 122, "y": 19 }, - { "flags": 4, "matrix": [3, 9], "x": 136, "y": 19 }, - { "flags": 4, "matrix": [3, 10], "x": 150, "y": 19 }, - { "flags": 4, "matrix": [3, 11], "x": 163, "y": 19 }, - { "flags": 4, "matrix": [3, 12], "x": 182, "y": 19 }, - { "flags": 4, "matrix": [3, 13], "x": 201, "y": 19 }, - { "flags": 4, "matrix": [3, 14], "x": 215, "y": 19 }, - { "flags": 4, "matrix": [4, 0], "x": 9, "y": 7 }, - { "flags": 4, "matrix": [4, 1], "x": 27, "y": 7 }, - { "flags": 4, "matrix": [4, 2], "x": 44, "y": 7 }, - { "flags": 4, "matrix": [4, 6], "x": 96, "y": 7 }, - { "flags": 4, "matrix": [4, 10], "x": 148, "y": 7 }, - { "flags": 4, "matrix": [4, 11], "x": 165, "y": 7 }, - { "flags": 4, "matrix": [4, 12], "x": 188, "y": 7 }, - { "flags": 4, "matrix": [4, 13], "x": 201, "y": 7 }, - { "flags": 4, "matrix": [4, 14], "x": 215, "y": 7 }, - { "flags": 2, "x": 1, "y": 1 }, - { "flags": 2, "x": 15, "y": 0 }, - { "flags": 2, "x": 31, "y": 0 }, - { "flags": 2, "x": 47, "y": 0 }, - { "flags": 2, "x": 63, "y": 0 }, - { "flags": 2, "x": 79, "y": 0 }, - { "flags": 2, "x": 95, "y": 0 }, - { "flags": 2, "x": 112, "y": 0 }, - { "flags": 2, "x": 128, "y": 0 }, - { "flags": 2, "x": 144, "y": 0 }, - { "flags": 2, "x": 160, "y": 0 }, - { "flags": 2, "x": 176, "y": 0 }, - { "flags": 2, "x": 192, "y": 0 }, - { "flags": 2, "x": 208, "y": 0 }, - { "flags": 2, "x": 222, "y": 1 }, - { "flags": 2, "x": 224, "y": 13 }, - { "flags": 2, "x": 224, "y": 25 }, - { "flags": 2, "x": 224, "y": 38 }, - { "flags": 2, "x": 224, "y": 50 }, - { "flags": 2, "x": 222, "y": 62 }, - { "flags": 2, "x": 191, "y": 64 }, - { "flags": 2, "x": 179, "y": 64 }, - { "flags": 2, "x": 167, "y": 64 }, - { "flags": 2, "x": 153, "y": 64 }, - { "flags": 2, "x": 139, "y": 64 }, - { "flags": 2, "x": 125, "y": 64 }, + { "flags": 4, "matrix": [3, 0], "x": 16, "y": 44 }, + { "flags": 4, "matrix": [3, 2], "x": 39, "y": 44 }, + { "flags": 4, "matrix": [3, 3], "x": 53, "y": 44 }, + { "flags": 4, "matrix": [3, 4], "x": 67, "y": 44 }, + { "flags": 4, "matrix": [3, 5], "x": 80, "y": 44 }, + { "flags": 4, "matrix": [3, 6], "x": 94, "y": 44 }, + { "flags": 4, "matrix": [3, 7], "x": 108, "y": 44 }, + { "flags": 4, "matrix": [3, 8], "x": 122, "y": 44 }, + { "flags": 4, "matrix": [3, 9], "x": 136, "y": 44 }, + { "flags": 4, "matrix": [3, 10], "x": 150, "y": 44 }, + { "flags": 4, "matrix": [3, 11], "x": 163, "y": 44 }, + { "flags": 4, "matrix": [3, 12], "x": 182, "y": 44 }, + { "flags": 4, "matrix": [3, 13], "x": 201, "y": 44 }, + { "flags": 4, "matrix": [3, 14], "x": 215, "y": 44 }, + { "flags": 4, "matrix": [4, 0], "x": 9, "y": 56 }, + { "flags": 4, "matrix": [4, 1], "x": 27, "y": 56 }, + { "flags": 4, "matrix": [4, 2], "x": 44, "y": 56 }, + { "flags": 4, "matrix": [4, 6], "x": 96, "y": 56 }, + { "flags": 4, "matrix": [4, 10], "x": 148, "y": 56 }, + { "flags": 4, "matrix": [4, 11], "x": 165, "y": 56 }, + { "flags": 4, "matrix": [4, 12], "x": 188, "y": 56 }, + { "flags": 4, "matrix": [4, 13], "x": 201, "y": 56 }, + { "flags": 4, "matrix": [4, 14], "x": 215, "y": 56 }, + { "flags": 2, "x": 1, "y": 63 }, + { "flags": 2, "x": 15, "y": 64 }, + { "flags": 2, "x": 31, "y": 64 }, + { "flags": 2, "x": 47, "y": 64 }, + { "flags": 2, "x": 63, "y": 64 }, + { "flags": 2, "x": 79, "y": 64 }, + { "flags": 2, "x": 95, "y": 64 }, { "flags": 2, "x": 112, "y": 64 }, - { "flags": 2, "x": 98, "y": 64 }, - { "flags": 2, "x": 84, "y": 64 }, - { "flags": 2, "x": 70, "y": 64 }, - { "flags": 2, "x": 56, "y": 64 }, - { "flags": 2, "x": 42, "y": 64 }, - { "flags": 2, "x": 28, "y": 64 }, - { "flags": 2, "x": 1, "y": 62 }, - { "flags": 2, "x": 0, "y": 50 }, - { "flags": 2, "x": 0, "y": 38 }, + { "flags": 2, "x": 128, "y": 64 }, + { "flags": 2, "x": 144, "y": 64 }, + { "flags": 2, "x": 160, "y": 64 }, + { "flags": 2, "x": 176, "y": 64 }, + { "flags": 2, "x": 192, "y": 64 }, + { "flags": 2, "x": 208, "y": 64 }, + { "flags": 2, "x": 222, "y": 63 }, + { "flags": 2, "x": 224, "y": 50 }, + { "flags": 2, "x": 224, "y": 38 }, + { "flags": 2, "x": 224, "y": 25 }, + { "flags": 2, "x": 224, "y": 13 }, + { "flags": 2, "x": 222, "y": 1 }, + { "flags": 2, "x": 191, "y": 0 }, + { "flags": 2, "x": 179, "y": 0 }, + { "flags": 2, "x": 167, "y": 0 }, + { "flags": 2, "x": 153, "y": 0 }, + { "flags": 2, "x": 139, "y": 0 }, + { "flags": 2, "x": 125, "y": 0 }, + { "flags": 2, "x": 112, "y": 0 }, + { "flags": 2, "x": 98, "y": 0 }, + { "flags": 2, "x": 84, "y": 0 }, + { "flags": 2, "x": 70, "y": 0 }, + { "flags": 2, "x": 56, "y": 0 }, + { "flags": 2, "x": 42, "y": 0 }, + { "flags": 2, "x": 28, "y": 0 }, + { "flags": 2, "x": 1, "y": 1 }, + { "flags": 2, "x": 0, "y": 13 }, { "flags": 2, "x": 0, "y": 25 }, - { "flags": 2, "x": 0, "y": 13 } + { "flags": 2, "x": 0, "y": 38 }, + { "flags": 2, "x": 0, "y": 50 } ] } } diff --git a/keyboards/drop/alt/v2/rules.mk b/keyboards/drop/alt/v2/rules.mk index a504f81cb146..3c300442da71 100644 --- a/keyboards/drop/alt/v2/rules.mk +++ b/keyboards/drop/alt/v2/rules.mk @@ -1,4 +1,6 @@ UF2_DEVICE_TYPE_ID = 0x35446147 UF2CONV_ARGS = --device-type $(UF2_DEVICE_TYPE_ID) -SRC += analog.c lib/common.c lib/mux.c +SRC += lib/common.c lib/mux.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/drop/alt/v2/v2.c b/keyboards/drop/alt/v2/v2.c index 2e183fe4d82b..fcdad7f2df94 100644 --- a/keyboards/drop/alt/v2/v2.c +++ b/keyboards/drop/alt/v2/v2.c @@ -3,7 +3,7 @@ #ifdef RGB_MATRIX_ENABLE # include "rgb_matrix.h" -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 1, B_2, A_2, C_2 }, { 1, E_3, D_3, F_3 }, { 1, E_4, D_4, F_4 }, diff --git a/keyboards/drop/cstm65/board.h b/keyboards/drop/cstm65/board.h new file mode 100644 index 000000000000..ed3ea4b1f776 --- /dev/null +++ b/keyboards/drop/cstm65/board.h @@ -0,0 +1,8 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef STM32_HSECLK +#define STM32_HSECLK 16000000U diff --git a/keyboards/drop/cstm65/config.h b/keyboards/drop/cstm65/config.h new file mode 100644 index 000000000000..302fc1677ff4 --- /dev/null +++ b/keyboards/drop/cstm65/config.h @@ -0,0 +1,16 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define I2C1_SCL_PIN B8 +#define I2C1_SDA_PIN B9 + +#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10101000 +#define EXTERNAL_EEPROM_WP_PIN B7 +#define EEPROM_I2C_24LC256 + +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_VCC_VCC +#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ + +#define RGB_MATRIX_CAPS_LOCK_INDEX 30 diff --git a/keyboards/drop/cstm65/cstm65.c b/keyboards/drop/cstm65/cstm65.c new file mode 100644 index 000000000000..ccb86f1d3e9b --- /dev/null +++ b/keyboards/drop/cstm65/cstm65.c @@ -0,0 +1,79 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#ifdef RGB_MATRIX_ENABLE +# include "rgb_matrix.h" + +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { + { 0, B_1, A_1, C_1 }, + { 0, B_2, A_2, C_2 }, + { 0, B_3, A_3, C_3 }, + { 0, B_4, A_4, C_4 }, + { 0, B_5, A_5, C_5 }, + { 0, B_6, A_6, C_6 }, + { 0, B_7, A_7, C_7 }, + { 0, B_8, A_8, C_8 }, + { 0, B_9, A_9, C_9 }, + { 0, B_10, A_10, C_10 }, + { 0, B_11, A_11, C_11 }, + { 0, B_12, A_12, C_12 }, + { 0, B_13, A_13, C_13 }, + { 0, B_14, A_14, C_14 }, + { 0, B_15, A_15, C_15 }, + + { 0, E_1, D_1, F_1 }, + { 0, E_2, D_2, F_2 }, + { 0, E_3, D_3, F_3 }, + { 0, E_4, D_4, F_4 }, + { 0, E_5, D_5, F_5 }, + { 0, E_6, D_6, F_6 }, + { 0, E_7, D_7, F_7 }, + { 0, E_8, D_8, F_8 }, + { 0, E_9, D_9, F_9 }, + { 0, E_10, D_10, F_10 }, + { 0, E_11, D_11, F_11 }, + { 0, E_12, D_12, F_12 }, + { 0, E_13, D_13, F_13 }, + { 0, E_14, D_14, F_14 }, + { 0, E_15, D_15, F_15 }, + + { 1, B_1, A_1, C_1 }, + { 1, B_2, A_2, C_2 }, + { 1, B_3, A_3, C_3 }, + { 1, B_4, A_4, C_4 }, + { 1, B_5, A_5, C_5 }, + { 1, B_6, A_6, C_6 }, + { 1, B_7, A_7, C_7 }, + { 1, B_8, A_8, C_8 }, + { 1, B_9, A_9, C_9 }, + { 1, B_10, A_10, C_10 }, + { 1, B_11, A_11, C_11 }, + { 1, B_12, A_12, C_12 }, + { 1, B_13, A_13, C_13 }, + { 1, B_14, A_14, C_14 }, + + { 1, E_1, D_1, F_1 }, + { 1, E_2, D_2, F_2 }, + { 1, E_3, D_3, F_3 }, + { 1, E_4, D_4, F_4 }, + { 1, E_5, D_5, F_5 }, + { 1, E_6, D_6, F_6 }, + { 1, E_7, D_7, F_7 }, + { 1, E_8, D_8, F_8 }, + { 1, E_9, D_9, F_9 }, + { 1, E_10, D_10, F_10 }, + { 1, E_11, D_11, F_11 }, + { 1, E_12, D_12, F_12 }, + { 1, E_13, D_13, F_13 }, + { 1, E_14, D_14, F_14 }, + + { 1, H_1, G_1, I_1 }, + { 1, H_2, G_2, I_2 }, + { 1, H_3, G_3, I_3 }, + { 1, H_4, G_4, I_4 }, + { 1, H_5, G_5, I_5 }, + { 1, H_8, G_8, I_8 }, + { 1, H_9, G_9, I_9 }, + { 1, H_10, G_10, I_10 }, + { 1, H_11, G_11, I_11 }, +}; +#endif diff --git a/keyboards/drop/cstm65/halconf.h b/keyboards/drop/cstm65/halconf.h new file mode 100644 index 000000000000..2677c2a654c8 --- /dev/null +++ b/keyboards/drop/cstm65/halconf.h @@ -0,0 +1,7 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/drop/cstm65/info.json b/keyboards/drop/cstm65/info.json new file mode 100644 index 000000000000..708649966e0f --- /dev/null +++ b/keyboards/drop/cstm65/info.json @@ -0,0 +1,221 @@ +{ + "keyboard_name": "CSTM65", + "manufacturer": "Drop Inc.", + "maintainer": "zvecr", + "processor": "STM32F303", + "bootloader": "tinyuf2", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["C15", "C14", "C13", "C12", "C11", "C10", "C9", "C8", "C7", "C6", "C5", "C4", "C3", "C2", "C1"], + "rows": ["B15", "B14", "B13", "B12", "B11"] + }, + "usb": { + "vid": "0x359B", + "pid": "0x0010", + "device_version": "1.0.0" + }, + "eeprom": { + "driver": "i2c" + }, + "features": { + "rgb_matrix": true, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "community_layouts": ["65_ansi_blocker"], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"matrix": [0, 0], "label":"ESCAPE", "x":0, "y":0}, + {"matrix": [0, 1], "label":"1", "x":1, "y":0}, + {"matrix": [0, 2], "label":"2", "x":2, "y":0}, + {"matrix": [0, 3], "label":"3", "x":3, "y":0}, + {"matrix": [0, 4], "label":"4", "x":4, "y":0}, + {"matrix": [0, 5], "label":"5", "x":5, "y":0}, + {"matrix": [0, 6], "label":"6", "x":6, "y":0}, + {"matrix": [0, 7], "label":"7", "x":7, "y":0}, + {"matrix": [0, 8], "label":"8", "x":8, "y":0}, + {"matrix": [0, 9], "label":"9", "x":9, "y":0}, + {"matrix": [0, 10], "label":"0", "x":10, "y":0}, + {"matrix": [0, 11], "label":"MINUS", "x":11, "y":0}, + {"matrix": [0, 12], "label":"EQUALS", "x":12, "y":0}, + {"matrix": [0, 13], "label":"BACKSPACE", "x":13, "y":0, "w":2}, + {"matrix": [0, 14], "label":"DELETE", "x":15, "y":0}, + {"matrix": [1, 0], "label":"TAB", "x":0, "y":1, "w":1.5}, + {"matrix": [1, 1], "label":"Q", "x":1.5, "y":1}, + {"matrix": [1, 2], "label":"W", "x":2.5, "y":1}, + {"matrix": [1, 3], "label":"E", "x":3.5, "y":1}, + {"matrix": [1, 4], "label":"R", "x":4.5, "y":1}, + {"matrix": [1, 5], "label":"T", "x":5.5, "y":1}, + {"matrix": [1, 6], "label":"Y", "x":6.5, "y":1}, + {"matrix": [1, 7], "label":"U", "x":7.5, "y":1}, + {"matrix": [1, 8], "label":"I", "x":8.5, "y":1}, + {"matrix": [1, 9], "label":"O", "x":9.5, "y":1}, + {"matrix": [1, 10], "label":"P", "x":10.5, "y":1}, + {"matrix": [1, 11], "label":"LEFT BRACKET", "x":11.5, "y":1}, + {"matrix": [1, 12], "label":"RIGHT BRACKET", "x":12.5, "y":1}, + {"matrix": [1, 13], "label":"BACK SLASH", "x":13.5, "y":1, "w":1.5}, + {"matrix": [1, 14], "label":"HOME", "x":15, "y":1}, + {"matrix": [2, 0], "label":"CAPS LOCK", "x":0, "y":2, "w":1.75}, + {"matrix": [2, 1], "label":"A", "x":1.75, "y":2}, + {"matrix": [2, 2], "label":"S", "x":2.75, "y":2}, + {"matrix": [2, 3], "label":"D", "x":3.75, "y":2}, + {"matrix": [2, 4], "label":"F", "x":4.75, "y":2}, + {"matrix": [2, 5], "label":"G", "x":5.75, "y":2}, + {"matrix": [2, 6], "label":"H", "x":6.75, "y":2}, + {"matrix": [2, 7], "label":"J", "x":7.75, "y":2}, + {"matrix": [2, 8], "label":"K", "x":8.75, "y":2}, + {"matrix": [2, 9], "label":"L", "x":9.75, "y":2}, + {"matrix": [2, 10], "label":"SEMICOLON", "x":10.75, "y":2}, + {"matrix": [2, 11], "label":"SINGLE TICK", "x":11.75, "y":2}, + {"matrix": [2, 13], "label":"ENTER", "x":12.75, "y":2, "w":2.25}, + {"matrix": [2, 14], "label":"PAGE UP", "x":15, "y":2}, + {"matrix": [3, 0], "label":"LEFT SHIFT", "x":0, "y":3, "w":2.25}, + {"matrix": [3, 1], "label":"Z", "x":2.25, "y":3}, + {"matrix": [3, 2], "label":"X", "x":3.25, "y":3}, + {"matrix": [3, 3], "label":"C", "x":4.25, "y":3}, + {"matrix": [3, 4], "label":"V", "x":5.25, "y":3}, + {"matrix": [3, 5], "label":"B", "x":6.25, "y":3}, + {"matrix": [3, 6], "label":"N", "x":7.25, "y":3}, + {"matrix": [3, 7], "label":"M", "x":8.25, "y":3}, + {"matrix": [3, 8], "label":"COMMA", "x":9.25, "y":3}, + {"matrix": [3, 9], "label":"PERIOD", "x":10.25, "y":3}, + {"matrix": [3, 10], "label":"FORWARD SLASH", "x":11.25, "y":3}, + {"matrix": [3, 12], "label":"RIGHT SHIFT", "x":12.25, "y":3, "w":1.75}, + {"matrix": [3, 13], "label":"UP ARROW", "x":14, "y":3}, + {"matrix": [3, 14], "label":"PAGE DOWN", "x":15, "y":3}, + {"matrix": [4, 0], "label":"LEFT CTRL", "x":0, "y":4, "w":1.25}, + {"matrix": [4, 1], "label":"LEFT WIN", "x":1.25, "y":4, "w":1.25}, + {"matrix": [4, 2], "label":"LEFT ALT", "x":2.5, "y":4, "w":1.25}, + {"matrix": [4, 6], "label":"SPACEBAR", "x":3.75, "y":4, "w":6.25}, + {"matrix": [4, 10], "label":"RIGHT ALT", "x":10, "y":4, "w":1.25}, + {"matrix": [4, 11], "label":"FN", "x":11.25, "y":4, "w":1.25}, + {"matrix": [4, 12], "label":"LEFT ARROW", "x":13, "y":4}, + {"matrix": [4, 13], "label":"DOWN ARROW", "x":14, "y":4}, + {"matrix": [4, 14], "label":"RIGHT ARROW", "x":15, "y":4} + ] + } + }, + "rgb_matrix": { + "driver": "is31fl3733", + "sleep": true, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "layout": [ + { "flags": 4, "matrix": [0, 0], "x": 8, "y": 7 }, + { "flags": 4, "matrix": [0, 1], "x": 22, "y": 7 }, + { "flags": 4, "matrix": [0, 2], "x": 35, "y": 7 }, + { "flags": 4, "matrix": [0, 3], "x": 49, "y": 7 }, + { "flags": 4, "matrix": [0, 4], "x": 63, "y": 7 }, + { "flags": 4, "matrix": [0, 5], "x": 77, "y": 7 }, + { "flags": 4, "matrix": [0, 6], "x": 91, "y": 7 }, + { "flags": 4, "matrix": [0, 7], "x": 105, "y": 7 }, + { "flags": 4, "matrix": [0, 8], "x": 118, "y": 7 }, + { "flags": 4, "matrix": [0, 9], "x": 132, "y": 7 }, + { "flags": 4, "matrix": [0, 10], "x": 146, "y": 7 }, + { "flags": 4, "matrix": [0, 11], "x": 160, "y": 7 }, + { "flags": 4, "matrix": [0, 12], "x": 174, "y": 7 }, + { "flags": 4, "matrix": [0, 13], "x": 195, "y": 7 }, + { "flags": 4, "matrix": [0, 14], "x": 215, "y": 7 }, + { "flags": 4, "matrix": [1, 0], "x": 11, "y": 19 }, + { "flags": 4, "matrix": [1, 1], "x": 28, "y": 19 }, + { "flags": 4, "matrix": [1, 2], "x": 42, "y": 19 }, + { "flags": 4, "matrix": [1, 3], "x": 56, "y": 19 }, + { "flags": 4, "matrix": [1, 4], "x": 70, "y": 19 }, + { "flags": 4, "matrix": [1, 5], "x": 84, "y": 19 }, + { "flags": 4, "matrix": [1, 6], "x": 98, "y": 19 }, + { "flags": 4, "matrix": [1, 7], "x": 112, "y": 19 }, + { "flags": 4, "matrix": [1, 8], "x": 125, "y": 19 }, + { "flags": 4, "matrix": [1, 9], "x": 139, "y": 19 }, + { "flags": 4, "matrix": [1, 10], "x": 153, "y": 19 }, + { "flags": 4, "matrix": [1, 11], "x": 167, "y": 19 }, + { "flags": 4, "matrix": [1, 12], "x": 181, "y": 19 }, + { "flags": 4, "matrix": [1, 13], "x": 198, "y": 19 }, + { "flags": 4, "matrix": [1, 14], "x": 215, "y": 19 }, + { "flags": 4, "matrix": [2, 0], "x": 13, "y": 32 }, + { "flags": 4, "matrix": [2, 1], "x": 32, "y": 32 }, + { "flags": 4, "matrix": [2, 2], "x": 46, "y": 32 }, + { "flags": 4, "matrix": [2, 3], "x": 60, "y": 32 }, + { "flags": 4, "matrix": [2, 4], "x": 73, "y": 32 }, + { "flags": 4, "matrix": [2, 5], "x": 87, "y": 32 }, + { "flags": 4, "matrix": [2, 6], "x": 101, "y": 32 }, + { "flags": 4, "matrix": [2, 7], "x": 115, "y": 32 }, + { "flags": 4, "matrix": [2, 8], "x": 129, "y": 32 }, + { "flags": 4, "matrix": [2, 9], "x": 143, "y": 32 }, + { "flags": 4, "matrix": [2, 10], "x": 156, "y": 32 }, + { "flags": 4, "matrix": [2, 11], "x": 170, "y": 32 }, + { "flags": 4, "matrix": [2, 13], "x": 193, "y": 32 }, + { "flags": 4, "matrix": [2, 14], "x": 215, "y": 32 }, + { "flags": 4, "matrix": [3, 0], "x": 16, "y": 44 }, + { "flags": 4, "matrix": [3, 1], "x": 39, "y": 44 }, + { "flags": 4, "matrix": [3, 2], "x": 53, "y": 44 }, + { "flags": 4, "matrix": [3, 3], "x": 67, "y": 44 }, + { "flags": 4, "matrix": [3, 4], "x": 80, "y": 44 }, + { "flags": 4, "matrix": [3, 5], "x": 94, "y": 44 }, + { "flags": 4, "matrix": [3, 6], "x": 108, "y": 44 }, + { "flags": 4, "matrix": [3, 7], "x": 122, "y": 44 }, + { "flags": 4, "matrix": [3, 8], "x": 136, "y": 44 }, + { "flags": 4, "matrix": [3, 9], "x": 150, "y": 44 }, + { "flags": 4, "matrix": [3, 10], "x": 163, "y": 44 }, + { "flags": 4, "matrix": [3, 12], "x": 182, "y": 44 }, + { "flags": 4, "matrix": [3, 13], "x": 201, "y": 44 }, + { "flags": 4, "matrix": [3, 14], "x": 215, "y": 44 }, + { "flags": 4, "matrix": [4, 0], "x": 9, "y": 56 }, + { "flags": 4, "matrix": [4, 1], "x": 27, "y": 56 }, + { "flags": 4, "matrix": [4, 2], "x": 44, "y": 56 }, + { "flags": 4, "matrix": [4, 6], "x": 96, "y": 56 }, + { "flags": 4, "matrix": [4, 10], "x": 148, "y": 56 }, + { "flags": 4, "matrix": [4, 11], "x": 165, "y": 56 }, + { "flags": 4, "matrix": [4, 12], "x": 188, "y": 56 }, + { "flags": 4, "matrix": [4, 13], "x": 201, "y": 56 }, + { "flags": 4, "matrix": [4, 14], "x": 215, "y": 56 } + ] + } +} diff --git a/keyboards/drop/cstm65/keymaps/default/keymap.c b/keyboards/drop/cstm65/keymaps/default/keymap.c new file mode 100644 index 000000000000..28d7232bcfc8 --- /dev/null +++ b/keyboards/drop/cstm65/keymaps/default/keymap.c @@ -0,0 +1,20 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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_MUTE, + _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, KC_END, + _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, + _______, _______, _______, EE_CLR, KC_APP, _______, KC_HOME, KC_PGDN, KC_END + ) +}; diff --git a/keyboards/drop/cstm65/keymaps/via/config.h b/keyboards/drop/cstm65/keymaps/via/config.h new file mode 100644 index 000000000000..616f8e329102 --- /dev/null +++ b/keyboards/drop/cstm65/keymaps/via/config.h @@ -0,0 +1,5 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/drop/cstm65/keymaps/via/keymap.c b/keyboards/drop/cstm65/keymaps/via/keymap.c new file mode 100644 index 000000000000..28d7232bcfc8 --- /dev/null +++ b/keyboards/drop/cstm65/keymaps/via/keymap.c @@ -0,0 +1,20 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_65_ansi_blocker( + 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_MUTE, + _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, KC_END, + _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, KC_VOLD, + _______, _______, _______, EE_CLR, KC_APP, _______, KC_HOME, KC_PGDN, KC_END + ) +}; diff --git a/keyboards/yugo_m/model_m_101/keymaps/via/rules.mk b/keyboards/drop/cstm65/keymaps/via/rules.mk similarity index 100% rename from keyboards/yugo_m/model_m_101/keymaps/via/rules.mk rename to keyboards/drop/cstm65/keymaps/via/rules.mk diff --git a/keyboards/drop/cstm65/mcuconf.h b/keyboards/drop/cstm65/mcuconf.h new file mode 100644 index 000000000000..819aa70bf7fa --- /dev/null +++ b/keyboards/drop/cstm65/mcuconf.h @@ -0,0 +1,14 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef STM32_PLLM_VALUE +#define STM32_PLLM_VALUE 16 + +#undef STM32_PREDIV_VALUE +#define STM32_PREDIV_VALUE 2 + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/drop/cstm65/readme.md b/keyboards/drop/cstm65/readme.md new file mode 100644 index 000000000000..97520212362a --- /dev/null +++ b/keyboards/drop/cstm65/readme.md @@ -0,0 +1,24 @@ +# CSTM65 + +The CSTM65 is a 65% keyboard with customizable switch plates and weights, as well as a magnetically attached top case. + +* Keyboard Maintainer: [zvecr](https://github.com/zvecr) +* Hardware Availability: [Drop CSTM65 Mechanical Keyboard](https://drop.com/buy/drop-cstm65-mechanical-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make drop/cstm65:default + +Flashing example for this keyboard: + + make drop/cstm65:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Quickly double tap the button located under the spacebar +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/drop/cstm65/rules.mk b/keyboards/drop/cstm65/rules.mk new file mode 100644 index 000000000000..cd74a0c770f2 --- /dev/null +++ b/keyboards/drop/cstm65/rules.mk @@ -0,0 +1,4 @@ +UF2_DEVICE_TYPE_ID = 0x216d9c07 +UF2CONV_ARGS = --device-type $(UF2_DEVICE_TYPE_ID) + +SRC += lib/common.c diff --git a/keyboards/drop/cstm80/board.h b/keyboards/drop/cstm80/board.h new file mode 100644 index 000000000000..ed3ea4b1f776 --- /dev/null +++ b/keyboards/drop/cstm80/board.h @@ -0,0 +1,8 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef STM32_HSECLK +#define STM32_HSECLK 16000000U diff --git a/keyboards/drop/cstm80/config.h b/keyboards/drop/cstm80/config.h new file mode 100644 index 000000000000..3b3f6ae6b7e3 --- /dev/null +++ b/keyboards/drop/cstm80/config.h @@ -0,0 +1,16 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define I2C1_SCL_PIN B8 +#define I2C1_SDA_PIN B9 + +#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10101000 +#define EXTERNAL_EEPROM_WP_PIN B7 +#define EEPROM_I2C_24LC256 + +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_VCC_VCC +#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ + +#define RGB_MATRIX_CAPS_LOCK_INDEX 48 diff --git a/keyboards/drop/cstm80/cstm80.c b/keyboards/drop/cstm80/cstm80.c new file mode 100644 index 000000000000..75e7049c2007 --- /dev/null +++ b/keyboards/drop/cstm80/cstm80.c @@ -0,0 +1,96 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#ifdef RGB_MATRIX_ENABLE +# include "rgb_matrix.h" + +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { + { 0, E_1, D_1, F_1 }, + { 0, E_2, D_2, F_2 }, + { 0, E_3, D_3, F_3 }, + { 0, E_4, D_4, F_4 }, + { 0, E_5, D_5, F_5 }, + { 0, E_6, D_6, F_6 }, + { 0, E_7, D_7, F_7 }, + { 0, E_8, D_8, F_8 }, + { 0, E_9, D_9, F_9 }, + { 0, E_10, D_10, F_10 }, + { 0, E_11, D_11, F_11 }, + { 0, E_12, D_12, F_12 }, + { 0, E_13, D_13, F_13 }, + { 0, E_14, D_14, F_14 }, + { 0, E_15, D_15, F_15 }, + { 0, E_16, D_16, F_16 }, + { 0, H_1, G_1, I_1 }, + { 0, H_2, G_2, I_2 }, + { 0, H_3, G_3, I_3 }, + { 0, H_4, G_4, I_4 }, + { 0, H_5, G_5, I_5 }, + { 0, H_6, G_6, I_6 }, + { 0, H_7, G_7, I_7 }, + { 0, H_8, G_8, I_8 }, + { 0, H_9, G_9, I_9 }, + { 0, H_10, G_10, I_10 }, + { 0, H_11, G_11, I_11 }, + { 0, H_12, G_12, I_12 }, + { 0, H_13, G_13, I_13 }, + { 0, H_14, G_14, I_14 }, + { 0, H_15, G_15, I_15 }, + { 0, H_16, G_16, I_16 }, + { 0, K_1, J_1, L_1 }, + { 0, K_2, J_2, L_2 }, + { 0, K_3, J_3, L_3 }, + { 0, K_4, J_4, L_4 }, + { 0, K_5, J_5, L_5 }, + { 0, K_6, J_6, L_6 }, + { 0, K_7, J_7, L_7 }, + { 0, K_8, J_8, L_8 }, + { 0, K_9, J_9, L_9 }, + { 0, K_10, J_10, L_10 }, + { 0, K_11, J_11, L_11 }, + { 0, K_12, J_12, L_12 }, + { 0, K_13, J_13, L_13 }, + { 0, K_14, J_14, L_14 }, + { 0, K_15, J_15, L_15 }, + { 0, K_16, J_16, L_16 }, + { 1, B_1, A_1, C_1 }, + { 1, B_2, A_2, C_2 }, + { 1, B_3, A_3, C_3 }, + { 1, B_4, A_4, C_4 }, + { 1, B_5, A_5, C_5 }, + { 1, B_6, A_6, C_6 }, + { 1, B_7, A_7, C_7 }, + { 1, B_8, A_8, C_8 }, + { 1, B_9, A_9, C_9 }, + { 1, B_10, A_10, C_10 }, + { 1, B_11, A_11, C_11 }, + { 1, B_12, A_12, C_12 }, + { 1, B_13, A_13, C_13 }, + { 1, B_14, A_14, C_14 }, + { 1, B_15, A_15, C_15 }, + { 1, B_16, A_16, C_16 }, + { 1, E_1, D_1, F_1 }, + { 1, E_2, D_2, F_2 }, + { 1, E_3, D_3, F_3 }, + { 1, E_4, D_4, F_4 }, + { 1, E_5, D_5, F_5 }, + { 1, E_6, D_6, F_6 }, + { 1, E_7, D_7, F_7 }, + { 1, E_8, D_8, F_8 }, + { 1, E_9, D_9, F_9 }, + { 1, E_10, D_10, F_10 }, + { 1, E_11, D_11, F_11 }, + { 1, E_12, D_12, F_12 }, + { 1, E_13, D_13, F_13 }, + { 1, H_1, G_1, I_1 }, + { 1, H_2, G_2, I_2 }, + { 1, H_3, G_3, I_3 }, + { 1, H_4, G_4, I_4 }, + { 1, H_5, G_5, I_5 }, + { 1, H_6, G_6, I_6 }, + { 1, H_7, G_7, I_7 }, + { 1, H_8, G_8, I_8 }, + { 1, H_9, G_9, I_9 }, + { 1, H_10, G_10, I_10 }, + { 1, H_11, G_11, I_11 }, +}; +#endif diff --git a/keyboards/drop/cstm80/halconf.h b/keyboards/drop/cstm80/halconf.h new file mode 100644 index 000000000000..2677c2a654c8 --- /dev/null +++ b/keyboards/drop/cstm80/halconf.h @@ -0,0 +1,7 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/drop/cstm80/info.json b/keyboards/drop/cstm80/info.json new file mode 100644 index 000000000000..5ce4e666b176 --- /dev/null +++ b/keyboards/drop/cstm80/info.json @@ -0,0 +1,273 @@ +{ + "keyboard_name": "CSTM80", + "manufacturer": "Drop Inc.", + "maintainer": "zvecr", + "processor": "STM32F303", + "bootloader": "tinyuf2", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["C15", "C14", "C13", "C12", "C11", "C10", "C9", "C8", "C7", "C6", "C5", "C4", "C3", "C2", "C1", "C0", "D2"], + "rows": ["B15", "B14", "B13", "B12", "B11", "B10"] + }, + "usb": { + "vid": "0x359B", + "pid": "0x0004", + "device_version": "1.0.0" + }, + "eeprom": { + "driver": "i2c" + }, + "features": { + "rgb_matrix": true, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "community_layouts": ["tkl_f13_ansi"], + "layouts": { + "LAYOUT_tkl_f13_ansi": { + "layout": [ + { "matrix": [0, 0], "label":"Esc", "x":0, "y":0}, + { "matrix": [0, 1], "label":"F1", "x":1.25, "y":0}, + { "matrix": [0, 2], "label":"F2", "x":2.25, "y":0}, + { "matrix": [0, 3], "label":"F3", "x":3.25, "y":0}, + { "matrix": [0, 4], "label":"F4", "x":4.25, "y":0}, + { "matrix": [0, 5], "label":"F5", "x":5.5, "y":0}, + { "matrix": [0, 6], "label":"F6", "x":6.5, "y":0}, + { "matrix": [0, 7], "label":"F7", "x":7.5, "y":0}, + { "matrix": [0, 8], "label":"F8", "x":8.5, "y":0}, + { "matrix": [0, 9], "label":"F9", "x":9.75, "y":0}, + { "matrix": [0, 10], "label":"F10", "x":10.75, "y":0}, + { "matrix": [0, 11], "label":"F11", "x":11.75, "y":0}, + { "matrix": [0, 12], "label":"F12", "x":12.75, "y":0}, + { "matrix": [0, 13], "label":"F13", "x":14, "y":0}, + { "matrix": [0, 14], "label":"PrtSc", "x":15.25, "y":0}, + { "matrix": [0, 15], "label":"ScrLk", "x":16.25, "y":0}, + { "matrix": [0, 16], "label":"Pause", "x":17.25, "y":0}, + + { "matrix": [1, 0], "label":"~", "x":0, "y":1.25}, + { "matrix": [1, 1], "label":"!", "x":1, "y":1.25}, + { "matrix": [1, 2], "label":"@", "x":2, "y":1.25}, + { "matrix": [1, 3], "label":"#", "x":3, "y":1.25}, + { "matrix": [1, 4], "label":"$", "x":4, "y":1.25}, + { "matrix": [1, 5], "label":"%", "x":5, "y":1.25}, + { "matrix": [1, 6], "label":"^", "x":6, "y":1.25}, + { "matrix": [1, 7], "label":"&", "x":7, "y":1.25}, + { "matrix": [1, 8], "label":"*", "x":8, "y":1.25}, + { "matrix": [1, 9], "label":"(", "x":9, "y":1.25}, + { "matrix": [1, 10], "label":")", "x":10, "y":1.25}, + { "matrix": [1, 11], "label":"_", "x":11, "y":1.25}, + { "matrix": [1, 12], "label":"+", "x":12, "y":1.25}, + { "matrix": [1, 13], "label":"Bksp", "x":13, "y":1.25, "w":2}, + { "matrix": [1, 14], "label":"Insert", "x":15.25, "y":1.25}, + { "matrix": [1, 15], "label":"Home", "x":16.25, "y":1.25}, + { "matrix": [1, 16], "label":"Page Up", "x":17.25, "y":1.25}, + + { "matrix": [2, 0], "label":"Tab", "x":0, "y":2.25, "w":1.5}, + { "matrix": [2, 1], "label":"Q", "x":1.5, "y":2.25}, + { "matrix": [2, 2], "label":"W", "x":2.5, "y":2.25}, + { "matrix": [2, 3], "label":"E", "x":3.5, "y":2.25}, + { "matrix": [2, 4], "label":"R", "x":4.5, "y":2.25}, + { "matrix": [2, 5], "label":"T", "x":5.5, "y":2.25}, + { "matrix": [2, 6], "label":"Y", "x":6.5, "y":2.25}, + { "matrix": [2, 7], "label":"U", "x":7.5, "y":2.25}, + { "matrix": [2, 8], "label":"I", "x":8.5, "y":2.25}, + { "matrix": [2, 9], "label":"O", "x":9.5, "y":2.25}, + { "matrix": [2, 10], "label":"P", "x":10.5, "y":2.25}, + { "matrix": [2, 11], "label":"{", "x":11.5, "y":2.25}, + { "matrix": [2, 12], "label":"}", "x":12.5, "y":2.25}, + { "matrix": [2, 13], "label":"|", "x":13.5, "y":2.25, "w":1.5}, + { "matrix": [2, 14], "label":"Delete", "x":15.25, "y":2.25}, + { "matrix": [2, 15], "label":"End", "x":16.25, "y":2.25}, + { "matrix": [2, 16], "label":"Page Dn", "x":17.25, "y":2.25}, + + { "matrix": [3, 0], "label":"CapsLk", "x":0, "y":3.25, "w":1.75}, + { "matrix": [3, 1], "label":"A", "x":1.75, "y":3.25}, + { "matrix": [3, 2], "label":"S", "x":2.75, "y":3.25}, + { "matrix": [3, 3], "label":"D", "x":3.75, "y":3.25}, + { "matrix": [3, 4], "label":"F", "x":4.75, "y":3.25}, + { "matrix": [3, 5], "label":"G", "x":5.75, "y":3.25}, + { "matrix": [3, 6], "label":"H", "x":6.75, "y":3.25}, + { "matrix": [3, 7], "label":"J", "x":7.75, "y":3.25}, + { "matrix": [3, 8], "label":"K", "x":8.75, "y":3.25}, + { "matrix": [3, 9], "label":"L", "x":9.75, "y":3.25}, + { "matrix": [3, 10], "label":":", "x":10.75, "y":3.25}, + { "matrix": [3, 11], "label":"\"", "x":11.75, "y":3.25}, + { "matrix": [3, 13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + + { "matrix": [4, 0], "label":"Shift", "x":0, "y":4.25, "w":2.25}, + { "matrix": [4, 1], "label":"Z", "x":2.25, "y":4.25}, + { "matrix": [4, 2], "label":"X", "x":3.25, "y":4.25}, + { "matrix": [4, 3], "label":"C", "x":4.25, "y":4.25}, + { "matrix": [4, 4], "label":"V", "x":5.25, "y":4.25}, + { "matrix": [4, 5], "label":"B", "x":6.25, "y":4.25}, + { "matrix": [4, 6], "label":"N", "x":7.25, "y":4.25}, + { "matrix": [4, 7], "label":"M", "x":8.25, "y":4.25}, + { "matrix": [4, 8], "label":"<", "x":9.25, "y":4.25}, + { "matrix": [4, 9], "label":">", "x":10.25, "y":4.25}, + { "matrix": [4, 10], "label":"?", "x":11.25, "y":4.25}, + { "matrix": [4, 12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + { "matrix": [4, 15], "label":"\u2191", "x":16.25, "y":4.25}, + + { "matrix": [5, 0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + { "matrix": [5, 1], "label":"Win", "x":1.25, "y":5.25, "w":1.25}, + { "matrix": [5, 2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + { "matrix": [5, 6], "label":" ", "x":3.75, "y":5.25, "w":6.25}, + { "matrix": [5, 10], "label":"Alt", "x":10, "y":5.25, "w":1.25}, + { "matrix": [5, 11], "label":"Fn", "x":11.25, "y":5.25, "w":1.25}, + { "matrix": [5, 12], "label":"Menu", "x":12.5, "y":5.25, "w":1.25}, + { "matrix": [5, 13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + { "matrix": [5, 14], "label":"\u2190", "x":15.25, "y":5.25}, + { "matrix": [5, 15], "label":"\u2193", "x":16.25, "y":5.25}, + { "matrix": [5, 16], "label":"\u2192", "x":17.25, "y":5.25} + ] + } + }, + "rgb_matrix": { + "driver": "is31fl3733", + "sleep": true, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "layout": [ + { "flags": 4, "matrix": [0, 0], "x": 6, "y": 8 }, + { "flags": 4, "matrix": [0, 1], "x": 21, "y": 8 }, + { "flags": 4, "matrix": [0, 2], "x": 33, "y": 8 }, + { "flags": 4, "matrix": [0, 3], "x": 45, "y": 8 }, + { "flags": 4, "matrix": [0, 4], "x": 57, "y": 8 }, + { "flags": 4, "matrix": [0, 5], "x": 74, "y": 8 }, + { "flags": 4, "matrix": [0, 6], "x": 86, "y": 8 }, + { "flags": 4, "matrix": [0, 7], "x": 98, "y": 8 }, + { "flags": 4, "matrix": [0, 8], "x": 110, "y": 8 }, + { "flags": 4, "matrix": [0, 9], "x": 125, "y": 8 }, + { "flags": 4, "matrix": [0, 10], "x": 137, "y": 8 }, + { "flags": 4, "matrix": [0, 11], "x": 150, "y": 8 }, + { "flags": 4, "matrix": [0, 12], "x": 161, "y": 8 }, + { "flags": 4, "matrix": [0, 13], "x": 176, "y": 8 }, + { "flags": 4, "matrix": [0, 14], "x": 192, "y": 8 }, + { "flags": 4, "matrix": [0, 15], "x": 204, "y": 8 }, + + { "flags": 4, "matrix": [1, 0], "x": 6, "y": 21 }, + { "flags": 4, "matrix": [1, 1], "x": 18, "y": 21 }, + { "flags": 4, "matrix": [1, 2], "x": 30, "y": 21 }, + { "flags": 4, "matrix": [1, 3], "x": 43, "y": 21 }, + { "flags": 4, "matrix": [1, 4], "x": 55, "y": 21 }, + { "flags": 4, "matrix": [1, 5], "x": 67, "y": 21 }, + { "flags": 4, "matrix": [1, 6], "x": 79, "y": 21 }, + { "flags": 4, "matrix": [1, 7], "x": 92, "y": 21 }, + { "flags": 4, "matrix": [1, 8], "x": 104, "y": 21 }, + { "flags": 4, "matrix": [1, 9], "x": 116, "y": 21 }, + { "flags": 4, "matrix": [1, 10], "x": 128, "y": 21 }, + { "flags": 4, "matrix": [1, 11], "x": 141, "y": 21 }, + { "flags": 4, "matrix": [1, 12], "x": 153, "y": 21 }, + { "flags": 4, "matrix": [1, 13], "x": 171, "y": 21 }, + { "flags": 4, "matrix": [1, 14], "x": 192, "y": 21 }, + { "flags": 4, "matrix": [1, 15], "x": 204, "y": 21 }, + + { "flags": 4, "matrix": [2, 0], "x": 9, "y": 31 }, + { "flags": 4, "matrix": [2, 1], "x": 24, "y": 31 }, + { "flags": 4, "matrix": [2, 2], "x": 36, "y": 31 }, + { "flags": 4, "matrix": [2, 3], "x": 48, "y": 31 }, + { "flags": 4, "matrix": [2, 4], "x": 61, "y": 31 }, + { "flags": 4, "matrix": [2, 5], "x": 73, "y": 31 }, + { "flags": 4, "matrix": [2, 6], "x": 86, "y": 31 }, + { "flags": 4, "matrix": [2, 7], "x": 98, "y": 31 }, + { "flags": 4, "matrix": [2, 8], "x": 110, "y": 31 }, + { "flags": 4, "matrix": [2, 9], "x": 122, "y": 31 }, + { "flags": 4, "matrix": [2, 10], "x": 134, "y": 31 }, + { "flags": 4, "matrix": [2, 11], "x": 146, "y": 31 }, + { "flags": 4, "matrix": [2, 12], "x": 159, "y": 31 }, + { "flags": 4, "matrix": [2, 13], "x": 174, "y": 31 }, + { "flags": 4, "matrix": [2, 14], "x": 192, "y": 31 }, + { "flags": 4, "matrix": [2, 15], "x": 204, "y": 31 }, + + { "flags": 4, "matrix": [3, 0], "x": 11, "y": 41 }, + { "flags": 4, "matrix": [3, 1], "x": 27, "y": 41 }, + { "flags": 4, "matrix": [3, 2], "x": 40, "y": 41 }, + { "flags": 4, "matrix": [3, 3], "x": 52, "y": 41 }, + { "flags": 4, "matrix": [3, 4], "x": 64, "y": 41 }, + { "flags": 4, "matrix": [3, 5], "x": 76, "y": 41 }, + { "flags": 4, "matrix": [3, 6], "x": 88, "y": 41 }, + { "flags": 4, "matrix": [3, 7], "x": 100, "y": 41 }, + { "flags": 4, "matrix": [3, 8], "x": 113, "y": 41 }, + { "flags": 4, "matrix": [3, 9], "x": 124, "y": 41 }, + { "flags": 4, "matrix": [3, 10], "x": 137, "y": 41 }, + { "flags": 4, "matrix": [3, 11], "x": 150, "y": 41 }, + { "flags": 4, "matrix": [3, 13], "x": 170, "y": 41 }, + { "flags": 4, "matrix": [0, 16], "x": 217, "y": 8 }, + { "flags": 4, "matrix": [1, 16], "x": 217, "y": 21 }, + { "flags": 4, "matrix": [2, 16], "x": 217, "y": 31 }, + + { "flags": 4, "matrix": [4, 0], "x": 13, "y": 51 }, + { "flags": 4, "matrix": [4, 1], "x": 34, "y": 51 }, + { "flags": 4, "matrix": [4, 2], "x": 45, "y": 51 }, + { "flags": 4, "matrix": [4, 3], "x": 58, "y": 51 }, + { "flags": 4, "matrix": [4, 4], "x": 70, "y": 51 }, + { "flags": 4, "matrix": [4, 5], "x": 82, "y": 51 }, + { "flags": 4, "matrix": [4, 6], "x": 94, "y": 51 }, + { "flags": 4, "matrix": [4, 7], "x": 107, "y": 51 }, + { "flags": 4, "matrix": [4, 8], "x": 119, "y": 51 }, + { "flags": 4, "matrix": [4, 9], "x": 131, "y": 51 }, + { "flags": 4, "matrix": [4, 10], "x": 143, "y": 51 }, + { "flags": 4, "matrix": [4, 12], "x": 166, "y": 51 }, + { "flags": 4, "matrix": [4, 15], "x": 204, "y": 51 }, + + { "flags": 4, "matrix": [5, 0], "x": 8, "y": 61 }, + { "flags": 4, "matrix": [5, 1], "x": 23, "y": 61 }, + { "flags": 4, "matrix": [5, 2], "x": 38, "y": 61 }, + { "flags": 4, "matrix": [5, 6], "x": 84, "y": 61 }, + { "flags": 4, "matrix": [5, 10], "x": 129, "y": 61 }, + { "flags": 4, "matrix": [5, 11], "x": 144, "y": 61 }, + { "flags": 4, "matrix": [5, 12], "x": 160, "y": 61 }, + { "flags": 4, "matrix": [5, 13], "x": 175, "y": 61 }, + { "flags": 4, "matrix": [5, 14], "x": 192, "y": 61 }, + { "flags": 4, "matrix": [5, 15], "x": 204, "y": 61 }, + { "flags": 4, "matrix": [5, 16], "x": 217, "y": 61 } + ] + } +} diff --git a/keyboards/drop/cstm80/keymaps/default/keymap.c b/keyboards/drop/cstm80/keymaps/default/keymap.c new file mode 100644 index 000000000000..e820a0a74358 --- /dev/null +++ b/keyboards/drop/cstm80/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl││ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, + _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, EE_CLR, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/drop/cstm80/keymaps/via/config.h b/keyboards/drop/cstm80/keymaps/via/config.h new file mode 100644 index 000000000000..616f8e329102 --- /dev/null +++ b/keyboards/drop/cstm80/keymaps/via/config.h @@ -0,0 +1,5 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 diff --git a/keyboards/drop/cstm80/keymaps/via/keymap.c b/keyboards/drop/cstm80/keymaps/via/keymap.c new file mode 100644 index 000000000000..e820a0a74358 --- /dev/null +++ b/keyboards/drop/cstm80/keymaps/via/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ + * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││F13││PSc│Scr│Pse│ + * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Ins│Hom│PgU│ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││Del│End│PgD│ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ + * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl││ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + */ + [0] = LAYOUT_tkl_f13_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_f13_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, + _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, EE_CLR, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/drop/cstm80/keymaps/via/rules.mk b/keyboards/drop/cstm80/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/drop/cstm80/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/drop/cstm80/mcuconf.h b/keyboards/drop/cstm80/mcuconf.h new file mode 100644 index 000000000000..819aa70bf7fa --- /dev/null +++ b/keyboards/drop/cstm80/mcuconf.h @@ -0,0 +1,14 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next + +#undef STM32_PLLM_VALUE +#define STM32_PLLM_VALUE 16 + +#undef STM32_PREDIV_VALUE +#define STM32_PREDIV_VALUE 2 + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE diff --git a/keyboards/drop/cstm80/readme.md b/keyboards/drop/cstm80/readme.md new file mode 100644 index 000000000000..f0851cc045bf --- /dev/null +++ b/keyboards/drop/cstm80/readme.md @@ -0,0 +1,24 @@ +# CSTM80 + +The CSTM80 is a tenkeyless keyboard with customizable switch plates and weights, as well as a magnetically attached top case. + +* Keyboard Maintainer: [zvecr](https://github.com/zvecr) +* Hardware Availability: [Drop CSTM80 Mechanical Keyboard](https://drop.com/buy/drop-cstm80-mechanical-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make drop/cstm80:default + +Flashing example for this keyboard: + + make drop/cstm80:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Quickly double tap the button located under the spacebar +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/drop/cstm80/rules.mk b/keyboards/drop/cstm80/rules.mk new file mode 100644 index 000000000000..21d76468cf59 --- /dev/null +++ b/keyboards/drop/cstm80/rules.mk @@ -0,0 +1,4 @@ +UF2_DEVICE_TYPE_ID = 0x8bfa7750 +UF2CONV_ARGS = --device-type $(UF2_DEVICE_TYPE_ID) + +SRC += lib/common.c diff --git a/keyboards/drop/ctrl/keymaps/vial/config.h b/keyboards/drop/ctrl/keymaps/vial/config.h new file mode 100644 index 000000000000..77ee3ed79d78 --- /dev/null +++ b/keyboards/drop/ctrl/keymaps/vial/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 + +#define VIAL_KEYBOARD_UID {0xAB, 0x41, 0x47, 0xE5, 0x46, 0xD6, 0xB8, 0xC2} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } \ No newline at end of file diff --git a/keyboards/drop/ctrl/keymaps/vial/keymap.c b/keyboards/drop/ctrl/keymaps/vial/keymap.c new file mode 100644 index 000000000000..82b108892175 --- /dev/null +++ b/keyboards/drop/ctrl/keymaps/vial/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, + _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, + _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, EE_CLR, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/drop/ctrl/keymaps/vial/rules.mk b/keyboards/drop/ctrl/keymaps/vial/rules.mk new file mode 100644 index 000000000000..31bb6d699f9c --- /dev/null +++ b/keyboards/drop/ctrl/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes \ No newline at end of file diff --git a/keyboards/drop/ctrl/keymaps/vial/vial.json b/keyboards/drop/ctrl/keymaps/vial/vial.json new file mode 100644 index 000000000000..2fd5c28e8f8f --- /dev/null +++ b/keyboards/drop/ctrl/keymaps/vial/vial.json @@ -0,0 +1,210 @@ +{ + "name": "Drop CTRL V2", + "vendorId": "0x359B", + "productId": "0x0009", + "lighting": "vialrgb", + "matrix": { + "rows": 11, + "cols": 8 + }, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "x": 1, + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "x": 0.5 + }, + "0,5", + "0,6", + "0,7", + "6,0", + { + "x": 0.5 + }, + "6,1", + "6,2", + "6,3", + "6,4", + { + "x": 0.25 + }, + "6,5", + "6,6", + "6,7" + ], + [ + { + "y": 0.5 + }, + "1,0", + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "7,0", + "7,1", + "7,2", + "7,3", + "7,4", + { + "c": "#aaaaaa", + "w": 2 + }, + "7,5", + { + "x": 0.25, + "c": "#cccccc" + }, + "7,6", + "7,7", + "9,7" + ], + [ + { + "c": "#aaaaaa", + "w": 1.5 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "8,0", + "8,1", + "8,2", + "8,3", + "8,4", + { + "w": 1.5 + }, + "8,5", + { + "x": 0.25 + }, + "8,6", + "8,7", + "9,6" + ], + [ + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,1", + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "9,0", + "9,1", + "9,2", + "9,3", + { + "c": "#777777", + "w": 2.25 + }, + "9,4" + ], + [ + { + "c": "#aaaaaa", + "w": 2.25 + }, + "4,0", + { + "c": "#cccccc" + }, + "4,1", + "4,2", + "4,3", + "4,4", + "4,5", + "4,6", + "4,7", + "10,0", + "10,1", + "10,2", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "10,3", + { + "x": 1.25, + "c": "#777777" + }, + "9,5" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0", + { + "w": 1.25 + }, + "5,1", + { + "w": 1.25 + }, + "5,2", + { + "c": "#cccccc", + "w": 6.25 + }, + "5,3", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,4", + { + "w": 1.25 + }, + "5,5", + { + "w": 1.25 + }, + "5,6", + { + "w": 1.25 + }, + "5,7", + { + "x": 0.25, + "c": "#777777" + }, + "10,4", + "10,5", + "10,6" + ] + ] + } +} diff --git a/keyboards/drop/ctrl/v2/config.h b/keyboards/drop/ctrl/v2/config.h index 539c505cb38c..c0a259492ba0 100644 --- a/keyboards/drop/ctrl/v2/config.h +++ b/keyboards/drop/ctrl/v2/config.h @@ -14,16 +14,9 @@ #define EXTERNAL_EEPROM_WP_PIN B5 #define EEPROM_I2C_24LC256 -#define DRIVER_ADDR_1 0b1010011 -#define DRIVER_ADDR_2 0b1011111 -#define DRIVER_COUNT 2 -#define RGB_MATRIX_LED_COUNT 119 -#define ISSI_PWM_FREQUENCY 0b010 // 26k - -#define RGB_DISABLE_WHEN_USB_SUSPENDED -#define RGB_MATRIX_DEFAULT_VAL 100 -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_VCC +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_VCC_VCC +#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ #define RGB_MATRIX_CYCLE_ZONES_ENABLE #define RGB_MATRIX_CAPS_LOCK_INDEX 50 diff --git a/keyboards/drop/ctrl/v2/info.json b/keyboards/drop/ctrl/v2/info.json index 3d1135912089..f461800dde4d 100644 --- a/keyboards/drop/ctrl/v2/info.json +++ b/keyboards/drop/ctrl/v2/info.json @@ -125,6 +125,8 @@ }, "rgb_matrix": { "driver": "is31fl3733", + "max_brightness": 191, + "sleep": true, "animations": { "alphas_mods": true, "gradient_up_down": true, diff --git a/keyboards/drop/ctrl/v2/rules.mk b/keyboards/drop/ctrl/v2/rules.mk index 13c11c1833d2..02a766b5c317 100644 --- a/keyboards/drop/ctrl/v2/rules.mk +++ b/keyboards/drop/ctrl/v2/rules.mk @@ -1,4 +1,6 @@ UF2_DEVICE_TYPE_ID = 0x27b9a6ea UF2CONV_ARGS = --device-type $(UF2_DEVICE_TYPE_ID) -SRC += analog.c lib/common.c lib/mux.c +SRC += lib/common.c lib/mux.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/drop/ctrl/v2/v2.c b/keyboards/drop/ctrl/v2/v2.c index 6f3091035b7a..6b565efbe1bd 100644 --- a/keyboards/drop/ctrl/v2/v2.c +++ b/keyboards/drop/ctrl/v2/v2.c @@ -3,7 +3,7 @@ #ifdef RGB_MATRIX_ENABLE # include "rgb_matrix.h" -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 1, B_2, A_2, C_2 }, { 1, E_3, D_3, F_3 }, { 1, E_4, D_4, F_4 }, diff --git a/keyboards/drop/lib/common.c b/keyboards/drop/lib/common.c index b393e7650b4d..04845ed17a00 100644 --- a/keyboards/drop/lib/common.c +++ b/keyboards/drop/lib/common.c @@ -5,17 +5,15 @@ # include "quantum.h" # include "rgb_matrix.h" -# define LED_FLAG_ANY_SWITCH (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR) - # ifdef RGB_MATRIX_CAPS_LOCK_INDEX bool rgb_matrix_indicators_kb(void) { if (!rgb_matrix_indicators_user()) { return false; } - if (host_keyboard_led_state().caps_lock) { + if (host_keyboard_led_state().caps_lock && (rgb_matrix_get_flags() != LED_FLAG_NONE)) { rgb_matrix_set_color(RGB_MATRIX_CAPS_LOCK_INDEX, RGB_WHITE); - } else if ((rgb_matrix_get_flags() & LED_FLAG_ANY_SWITCH) == 0) { + } else if (rgb_matrix_get_flags() == LED_FLAG_UNDERGLOW) { rgb_matrix_set_color(RGB_MATRIX_CAPS_LOCK_INDEX, RGB_OFF); } return true; @@ -33,9 +31,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { case RGB_TOG: switch (rgb_matrix_get_flags()) { case LED_FLAG_ALL: - rgb_matrix_set_flags(LED_FLAG_ANY_SWITCH); + rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR); break; - case LED_FLAG_ANY_SWITCH: + case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); break; case LED_FLAG_UNDERGLOW: diff --git a/keyboards/drop/sense75/config.h b/keyboards/drop/sense75/config.h index b8d47c311c2b..448d223d4893 100644 --- a/keyboards/drop/sense75/config.h +++ b/keyboards/drop/sense75/config.h @@ -9,15 +9,9 @@ #define EXTERNAL_EEPROM_WP_PIN B7 #define EEPROM_I2C_24LC256 -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1011111 -#define DRIVER_COUNT 2 -#define RGB_MATRIX_LED_COUNT 111 -#define ISSI_PWM_FREQUENCY 0b010 // 26k - -#define RGB_DISABLE_WHEN_USB_SUSPENDED -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_VCC_VCC +#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ #define RGB_MATRIX_CYCLE_ZONES_ENABLE #define RGB_MATRIX_CAPS_LOCK_INDEX 62 diff --git a/keyboards/drop/sense75/info.json b/keyboards/drop/sense75/info.json index 2df7b0ae5a9d..052b494375ef 100644 --- a/keyboards/drop/sense75/info.json +++ b/keyboards/drop/sense75/info.json @@ -44,7 +44,7 @@ {"matrix": [0, 11], "label": "F11", "x": 11.75, "y": 0}, {"matrix": [0, 12], "label": "F12", "x": 12.75, "y": 0}, {"matrix": [0, 13], "label": "PrtSc", "x": 14, "y": 0}, - {"matrix": [0, 14], "label": "Mute", "x": 15.25, "y": 0}, + {"matrix": [0, 14], "encoder":0, "label": "Mute", "x": 15.25, "y": 0}, {"matrix": [1, 0], "label": "~", "x": 0, "y": 1.25}, {"matrix": [1, 1], "label": "!", "x": 1, "y": 1.25}, {"matrix": [1, 2], "label": "@", "x": 2, "y": 1.25}, @@ -117,6 +117,7 @@ }, "rgb_matrix": { "driver": "is31fl3733", + "sleep": true, "animations": { "alphas_mods": true, "gradient_up_down": true, diff --git a/keyboards/drop/sense75/sense75.c b/keyboards/drop/sense75/sense75.c index 40577054cc13..057e31074892 100644 --- a/keyboards/drop/sense75/sense75.c +++ b/keyboards/drop/sense75/sense75.c @@ -3,7 +3,7 @@ #ifdef RGB_MATRIX_ENABLE # include "rgb_matrix.h" -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { // top underglow sd2-sd17 { 0, B_2, A_2, C_2 }, { 0, B_3, A_3, C_3 }, diff --git a/keyboards/drop/shift/keymaps/vial/config.h b/keyboards/drop/shift/keymaps/vial/config.h new file mode 100644 index 000000000000..0d9c78f4b3a6 --- /dev/null +++ b/keyboards/drop/shift/keymaps/vial/config.h @@ -0,0 +1,10 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 8 + +#define VIAL_KEYBOARD_UID {0xDA, 0xBD, 0x37, 0xCF, 0x26, 0xD1, 0x13, 0x7A} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } \ No newline at end of file diff --git a/keyboards/drop/shift/keymaps/vial/keymap.c b/keyboards/drop/shift/keymaps/vial/keymap.c new file mode 100644 index 000000000000..371908bb482a --- /dev/null +++ b/keyboards/drop/shift/keymaps/vial/keymap.c @@ -0,0 +1,22 @@ +// Copyright 2023 Massdrop, Inc. +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_1800_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, + 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_NUM, KC_PSLS, KC_PAST, KC_PSCR, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ), + [1] = LAYOUT_1800_ansi( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_MPLY, KC_MSTP, KC_VOLU, KC_MUTE, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_SCRL, + _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, EE_CLR, KC_APP, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/drop/shift/keymaps/vial/rules.mk b/keyboards/drop/shift/keymaps/vial/rules.mk new file mode 100644 index 000000000000..31bb6d699f9c --- /dev/null +++ b/keyboards/drop/shift/keymaps/vial/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes +VIALRGB_ENABLE = yes \ No newline at end of file diff --git a/keyboards/drop/shift/keymaps/vial/vial.json b/keyboards/drop/shift/keymaps/vial/vial.json new file mode 100644 index 000000000000..61d7dfc647dc --- /dev/null +++ b/keyboards/drop/shift/keymaps/vial/vial.json @@ -0,0 +1,243 @@ +{ + "name": "Drop SHIFT V2", + "vendorId": "0x359B", + "productId": "0x000C", + "lighting": "vialrgb", + "matrix": { + "rows": 8, + "cols": 13 + }, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "x": 0.25, + "c": "#cccccc" + }, + "0,1", + "0,2", + "1,2", + "0,3", + { + "x": 0.25 + }, + "0,4", + "0,5", + "0,6", + "1,6", + { + "x": 0.25 + }, + "0,7", + "1,7", + "0,8", + "1,8", + { + "x": 0.25 + }, + "1,9", + { + "x": 0.5 + }, + "0,10", + "1,10", + "0,11", + "1,11" + ], + [ + { + "y": 0.25 + }, + "1,0", + "1,1", + "2,1", + "2,2", + "3,2", + "1,3", + "2,3", + "1,4", + "1,5", + "2,5", + "2,6", + "3,6", + "2,7", + { + "c": "#aaaaaa", + "w": 2 + }, + "2,8", + { + "x": 0.5 + }, + "2,9", + "2,10", + "2,11", + "2,12" + ], + [ + { + "w": 1.5 + }, + "2,0", + { + "c": "#cccccc" + }, + "3,1", + "4,1", + "4,2", + "3,3", + "4,3", + "2,4", + "3,4", + "3,5", + "4,5", + "4,6", + "3,7", + "3,8", + { + "w": 1.5 + }, + "4,8", + { + "x": 0.5 + }, + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa" + }, + "3,12" + ], + [ + { + "w": 1.75 + }, + "3,0", + { + "c": "#cccccc" + }, + "5,1", + "6,1", + "5,2", + "5,3", + "6,3", + "4,4", + "5,4", + "5,5", + "5,6", + "4,7", + "5,8", + { + "c": "#777777", + "w": 2.25 + }, + "6,8", + { + "x": 0.5, + "c": "#cccccc" + }, + "4,9", + "4,10", + "4,11", + { + "c": "#aaaaaa" + }, + "4,12" + ], + [ + { + "w": 2.25 + }, + "4,0", + { + "c": "#cccccc" + }, + "7,1", + "6,2", + "7,2", + "7,3", + "6,4", + "7,5", + "6,5", + "6,6", + "5,7", + "6,7", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "7,8", + { + "x": 1.5, + "c": "#cccccc" + }, + "5,9", + "5,10", + "5,11", + { + "c": "#777777", + "h": 2 + }, + "5,12" + ], + [ + { + "y": -0.75, + "x": 14.25 + }, + "6,9" + ], + [ + { + "y": -0.25, + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0", + { + "w": 1.25 + }, + "6,0", + { + "w": 1.25 + }, + "7,0", + { + "c": "#cccccc", + "w": 6.25 + }, + "7,4", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "7,6", + { + "w": 1.5 + }, + "7,7", + { + "x": 3.5, + "c": "#cccccc" + }, + "6,11", + "6,12" + ], + [ + { + "y": -0.75, + "x": 13.25, + "c": "#777777" + }, + "7,9", + "7,10", + "6,10" + ] + ] + } +} diff --git a/keyboards/drop/shift/v2/config.h b/keyboards/drop/shift/v2/config.h index 6c651d1f83a1..e912e3805f82 100644 --- a/keyboards/drop/shift/v2/config.h +++ b/keyboards/drop/shift/v2/config.h @@ -14,16 +14,9 @@ #define EXTERNAL_EEPROM_WP_PIN B5 #define EEPROM_I2C_24LC256 -#define DRIVER_ADDR_1 0b1010011 -#define DRIVER_ADDR_2 0b1011111 -#define DRIVER_ADDR_3 0b1010000 -#define DRIVER_COUNT 3 -#define RGB_MATRIX_LED_COUNT 166 -#define ISSI_PWM_FREQUENCY 0b010 // 26k - -#define RGB_DISABLE_WHEN_USB_SUSPENDED -#define RGB_MATRIX_DEFAULT_VAL 100 -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_VCC +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_VCC_VCC +#define IS31FL3733_I2C_ADDRESS_3 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_PWM_FREQUENCY IS31FL3733_PWM_FREQUENCY_26K7_HZ #define RGB_MATRIX_CYCLE_ZONES_ENABLE diff --git a/keyboards/drop/shift/v2/info.json b/keyboards/drop/shift/v2/info.json index 44a3a5fc984e..212263d71c57 100644 --- a/keyboards/drop/shift/v2/info.json +++ b/keyboards/drop/shift/v2/info.json @@ -133,6 +133,8 @@ }, "rgb_matrix": { "driver": "is31fl3733", + "max_brightness": 191, + "sleep": true, "animations": { "alphas_mods": true, "gradient_up_down": true, diff --git a/keyboards/drop/shift/v2/rules.mk b/keyboards/drop/shift/v2/rules.mk index aec83326d075..f4f3ce149874 100644 --- a/keyboards/drop/shift/v2/rules.mk +++ b/keyboards/drop/shift/v2/rules.mk @@ -1,4 +1,6 @@ UF2_DEVICE_TYPE_ID = 0x9bc1e968 UF2CONV_ARGS = --device-type $(UF2_DEVICE_TYPE_ID) -SRC += analog.c lib/common.c lib/mux.c +SRC += lib/common.c lib/mux.c + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/drop/shift/v2/v2.c b/keyboards/drop/shift/v2/v2.c index 326c41827940..8565a0cb269b 100644 --- a/keyboards/drop/shift/v2/v2.c +++ b/keyboards/drop/shift/v2/v2.c @@ -4,7 +4,7 @@ # include "host.h" # include "rgb_matrix.h" -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 0, K_1, J_1, L_1 },// LED1 { 0, K_2, J_2, L_2 }, { 0, K_3, J_3, L_3 }, diff --git a/keyboards/duck/octagon/v2/info.json b/keyboards/duck/octagon/v2/info.json index c1512f806b90..be552c7b57aa 100644 --- a/keyboards/duck/octagon/v2/info.json +++ b/keyboards/duck/octagon/v2/info.json @@ -35,9 +35,12 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", - "community_layouts": ["75_ansi"], + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "community_layouts": ["75_ansi", "75_iso"], "layouts": { - "LAYOUT": { + "LAYOUT_all": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, @@ -223,7 +226,101 @@ {"matrix": [5, 13], "x": 13, "y": 5}, {"matrix": [5, 14], "x": 14, "y": 5}, {"matrix": [5, 15], "x": 15, "y": 5} - ] + ] + }, + "LAYOUT_75_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 16], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [1, 12], "x": 12, "y": 1}, + {"matrix": [1, 14], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [2, 12], "x": 12.5, "y": 2}, + {"matrix": [2, 15], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3}, + {"matrix": [3, 2], "x": 2.75, "y": 3}, + {"matrix": [3, 3], "x": 3.75, "y": 3}, + {"matrix": [3, 4], "x": 4.75, "y": 3}, + {"matrix": [3, 5], "x": 5.75, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 8.75, "y": 3}, + {"matrix": [3, 9], "x": 9.75, "y": 3}, + {"matrix": [3, 10], "x": 10.75, "y": 3}, + {"matrix": [3, 11], "x": 11.75, "y": 3}, + {"matrix": [3, 12], "x": 12.75, "y": 3}, + {"matrix": [3, 14], "x": 13.75, "y": 2, "w": 1.25, "h": 2}, + {"matrix": [3, 15], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4}, + {"matrix": [4, 7], "x": 7.25, "y": 4}, + {"matrix": [4, 8], "x": 8.25, "y": 4}, + {"matrix": [4, 9], "x": 9.25, "y": 4}, + {"matrix": [4, 10], "x": 10.25, "y": 4}, + {"matrix": [4, 12], "x": 11.25, "y": 4}, + {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + + {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [5, 8], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5}, + {"matrix": [5, 11], "x": 11, "y": 5}, + {"matrix": [5, 12], "x": 12, "y": 5}, + {"matrix": [5, 13], "x": 13, "y": 5}, + {"matrix": [5, 14], "x": 14, "y": 5}, + {"matrix": [5, 15], "x": 15, "y": 5} + ] } } } diff --git a/keyboards/ducky/one2mini/1861st/config.h b/keyboards/ducky/one2mini/1861st/config.h index 92448f54d167..1bb511107db3 100644 --- a/keyboards/ducky/one2mini/1861st/config.h +++ b/keyboards/ducky/one2mini/1861st/config.h @@ -17,6 +17,4 @@ along with this program. If not, see . #pragma once -#define DIP_SWITCH_MATRIX_GRID { {0,14}, {1,14}, {2,14}, {3,14} } - #define GPIO_INPUT_PIN_DELAY (NUC123_HCLK / 6 / 1000000L) diff --git a/keyboards/ducky/one2mini/1861st/info.json b/keyboards/ducky/one2mini/1861st/info.json index 1f1783f635d5..4eb7c4941ed4 100644 --- a/keyboards/ducky/one2mini/1861st/info.json +++ b/keyboards/ducky/one2mini/1861st/info.json @@ -12,6 +12,9 @@ "rows": ["D11", "B4", "B5", "B6", "B7"] }, "diode_direction": "COL2ROW", + "dip_switch": { + "matrix_grid": [ [0,14], [1,14], [2,14], [3,14] ] + }, "layout_aliases": { "LAYOUT_iso": "LAYOUT_60_iso" }, diff --git a/keyboards/ducky/one2sf/1967st/config.h b/keyboards/ducky/one2sf/1967st/config.h index 92448f54d167..1bb511107db3 100644 --- a/keyboards/ducky/one2sf/1967st/config.h +++ b/keyboards/ducky/one2sf/1967st/config.h @@ -17,6 +17,4 @@ along with this program. If not, see . #pragma once -#define DIP_SWITCH_MATRIX_GRID { {0,14}, {1,14}, {2,14}, {3,14} } - #define GPIO_INPUT_PIN_DELAY (NUC123_HCLK / 6 / 1000000L) diff --git a/keyboards/ducky/one2sf/1967st/info.json b/keyboards/ducky/one2sf/1967st/info.json index 72ba3c8ae856..3774be1bc060 100644 --- a/keyboards/ducky/one2sf/1967st/info.json +++ b/keyboards/ducky/one2sf/1967st/info.json @@ -13,6 +13,9 @@ "rows": ["D11", "B4", "B5", "B6", "B7"] }, "diode_direction": "COL2ROW", + "dip_switch": { + "matrix_grid": [ [0,14], [1,14], [2,14], [3,14] ] + }, "layouts": { "LAYOUT_all": { "layout": [ diff --git a/keyboards/dumbpad/v0x/v0x.c b/keyboards/dumbpad/v0x/v0x.c index 6c89edaa110c..d7e3841d760b 100644 --- a/keyboards/dumbpad/v0x/v0x.c +++ b/keyboards/dumbpad/v0x/v0x.c @@ -22,10 +22,14 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } // Shutdown LEDs writePinLow(LED_00); writePinLow(LED_01); + return true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c index 6c89edaa110c..d7e3841d760b 100644 --- a/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c +++ b/keyboards/dumbpad/v0x_dualencoder/v0x_dualencoder.c @@ -22,10 +22,14 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } // Shutdown LEDs writePinLow(LED_00); writePinLow(LED_01); + return true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/dumbpad/v0x_right/v0x_right.c b/keyboards/dumbpad/v0x_right/v0x_right.c index 6c89edaa110c..d7e3841d760b 100644 --- a/keyboards/dumbpad/v0x_right/v0x_right.c +++ b/keyboards/dumbpad/v0x_right/v0x_right.c @@ -22,10 +22,14 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } // Shutdown LEDs writePinLow(LED_00); writePinLow(LED_01); + return true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c b/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c deleted file mode 100644 index 96a98b11c5a7..000000000000 --- a/keyboards/dumbpad/v1x/keymaps/imchipwood/keymap.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Copyright 2020 imchipwood - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "imchipwood.h" - -enum custom_layers { - _BASE, - _SUB, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* - BASE LAYER - /-----------------------------------------------------` - | | 7 | 8 | 9 | Bkspc | - | |---------|---------|---------|---------| - | | 4 | 5 | 6 | + | - | |---------|---------|---------|---------| - | | 1 | 2 | 3 | * | - |-------------|---------|---------|---------|---------| - | Play/Pause | TT(SUB) | 0 | . | Enter | - \-----------------------------------------------------' - */ - [_BASE] = LAYOUT( - KC_P7, KC_P8, KC_P9, KC_BSPC, - KC_P4, KC_P5, KC_P6, KC_KP_PLUS, - KC_P1, KC_P2, KC_P3, KC_KP_ASTERISK, - MEH_T(KC_MPLY), TT(_SUB), KC_P0, KC_PDOT, KC_KP_ENTER - ), - /* - SUB LAYER - /-----------------------------------------------------` - | | F7 | F8 | F9 | Del/NLK | - | |---------|---------|---------|---------| - | | F4 | F5 | F6 | - | - | |---------|---------|---------|---------| - | | F1 | F2 | F3 | / | - |-------------|---------|---------|---------|---------| - | MUTE | | LSFT | LCTL | = | - \-----------------------------------------------------' - */ - [_SUB] = LAYOUT( - TD(ALT_F7), KC_F8, KC_F9, TD(DEL_NLCK), - KC_F4, TD(CTL_F5), KC_F6, KC_KP_MINUS, - KC_F1, TD(ALT_F2), KC_F3, KC_KP_SLASH, - KC_MUTE, _______, OSM(MOD_LSFT), OSM(MOD_LCTL), KC_KP_EQUAL - ) -}; - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - switch (get_highest_layer(layer_state)) { - case _BASE: - // main layer - volume up/down - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - - case _SUB: - // sub layer - next/previous track - if (clockwise) { - tap_code(KC_MNXT); - } else { - tap_code(KC_MPRV); - } - break; - - default: - // default - volume up/down - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - } - } - return true; -} diff --git a/keyboards/dumbpad/v1x/v1x.c b/keyboards/dumbpad/v1x/v1x.c index f1b1d66c7ff7..1022ad060534 100644 --- a/keyboards/dumbpad/v1x/v1x.c +++ b/keyboards/dumbpad/v1x/v1x.c @@ -23,11 +23,15 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } // Shutdown LEDs writePinLow(LED_00); writePinLow(LED_01); writePinLow(LED_02); + return true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c index f1b1d66c7ff7..1022ad060534 100644 --- a/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c +++ b/keyboards/dumbpad/v1x_dualencoder/v1x_dualencoder.c @@ -23,11 +23,15 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } // Shutdown LEDs writePinLow(LED_00); writePinLow(LED_01); writePinLow(LED_02); + return true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/dumbpad/v1x_right/v1x_right.c b/keyboards/dumbpad/v1x_right/v1x_right.c index f1b1d66c7ff7..1022ad060534 100644 --- a/keyboards/dumbpad/v1x_right/v1x_right.c +++ b/keyboards/dumbpad/v1x_right/v1x_right.c @@ -23,11 +23,15 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } // Shutdown LEDs writePinLow(LED_00); writePinLow(LED_01); writePinLow(LED_02); + return true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/dumbpad/v3x/v3x.c b/keyboards/dumbpad/v3x/v3x.c index d0acca1947fd..89f13684f264 100644 --- a/keyboards/dumbpad/v3x/v3x.c +++ b/keyboards/dumbpad/v3x/v3x.c @@ -54,11 +54,15 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -void shutdown_user(void) { +bool shutdown_kb(bool jump_to_bootloader) { + if (!shutdown_user(jump_to_bootloader)) { + return false; + } // Shutdown LEDs writePinLow(LED_00); writePinLow(LED_01); writePinLow(LED_02); + return true; } layer_state_t layer_state_set_kb(layer_state_t state) { diff --git a/keyboards/durgod/dgk6x/config.h b/keyboards/durgod/dgk6x/config.h index beb580a58818..7c85f977ba89 100644 --- a/keyboards/durgod/dgk6x/config.h +++ b/keyboards/durgod/dgk6x/config.h @@ -34,21 +34,9 @@ #define LED_MR_LOCK_PIN LED_SCROLL_LOCK_PIN #ifdef RGB_MATRIX_ENABLE -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC -// ADDR1 represents A1:A0 of the 7-bit address. -// ADDR2 represents A3:A2 of the 7-bit address. -// The result is: 0b101(ADDR2)(ADDR1) +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_VCC -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1010011 - -#define DRIVER_COUNT 2 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) /* I2C Alternate function settings */ diff --git a/keyboards/durgod/dgk6x/galaxy/galaxy.c b/keyboards/durgod/dgk6x/galaxy/galaxy.c index 9d0d25f82371..aa903c3a0a0f 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 PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c b/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c index fb54c95667b0..2d1907f4dbb0 100644 --- a/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c +++ b/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c @@ -19,7 +19,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/durgod/dgk6x/hades_iso/hades_iso.c b/keyboards/durgod/dgk6x/hades_iso/hades_iso.c index 5f7a724aea81..42f43645f580 100644 --- a/keyboards/durgod/dgk6x/hades_iso/hades_iso.c +++ b/keyboards/durgod/dgk6x/hades_iso/hades_iso.c @@ -19,7 +19,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/durgod/dgk6x/venus/venus.c b/keyboards/durgod/dgk6x/venus/venus.c index 8c5ba712b1c1..d48e95fb212a 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 PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/durgod/k320/keymaps/moults31/config.h b/keyboards/durgod/k320/keymaps/moults31/config.h deleted file mode 100644 index 01f47b8c1096..000000000000 --- a/keyboards/durgod/k320/keymaps/moults31/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2021 moults31 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/durgod/k320/keymaps/moults31/keymap.c b/keyboards/durgod/k320/keymaps/moults31/keymap.c deleted file mode 100644 index cdda3964e8ce..000000000000 --- a/keyboards/durgod/k320/keymaps/moults31/keymap.c +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright 2021 moults31 - * Adapted from kuenhlee and Don Kjer and Coirault - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "moults31.h" - -// Layer shorthand -enum _layer { - _BASE, - _FUNC, - _LAYER3 -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap _BASE: Base Layer (Default Layer) - * ,-----------------------------------------------------------. ,--------------. - * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus| - * |-----------------------------------------------------------| |--------------| - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp| - * |-----------------------------------------------------------| |--------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | | Del| End|PgDn| - * |------------------------------------------------------ Ret | `--------------' - * |CAPS | A| S| D| F| G| H| J| K| L| ;| '| #| | - * |-----------------------------------------------------------| ,----. - * |Shift| \| Z| X| C| V| B| N| M| ,| .| /|Shift | | Up | - * |-----------------------------------------------------------| ,-------------. - * |Ctrl|Gui |Alt | Space |Alt | Fn |App |Ctrl| |Lft| Dn |Rig | - * `-----------------------------------------------------------' `-------------' - */ - [_BASE] = LAYOUT_tkl_ansi( /* Base Layer */ - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - /* Keymap _FUNC: Function Layer - * ,-----------------------------------------------------------. ,--------------. - * | |Play|Stop|Prev|Next| |Mute|Vol+|Vol-| | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| |--------------| - * | | | | | | | | | | | | | | | | | | | - * |------------------------------------------------------- | `--------------' - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,----. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| ,-------------. - * | | | | | |Func | | | | | | | - * `-----------------------------------------------------------' `-------------' - */ - [_FUNC] = LAYOUT_tkl_ansi( /* Function Layer */ - _______, KC_MPLY, KC_MSTP, KC_MRWD, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, M_VSC_MVEDTRPRVGRP, _______, M_VSC_MVEDTRNXTGRP - ), - [_LAYER3] = LAYOUT_tkl_ansi( /* Function Layer */ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; - diff --git a/keyboards/durgod/k320/keymaps/moults31/readme.md b/keyboards/durgod/k320/keymaps/moults31/readme.md deleted file mode 100644 index e3a3f150f3a2..000000000000 --- a/keyboards/durgod/k320/keymaps/moults31/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# The default keymap for Durgod Taurus K320. - -Layer 0 : Standard Keys TKL layout - -Layer 1 : Media control and VScode navigation -- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7 - -## Supported PCBs - -This keymap intended for use on Durgod K320 ANSI diff --git a/keyboards/dyz/dyz40/config.h b/keyboards/dyz/dyz40/config.h deleted file mode 100644 index 7e7ca8b69490..000000000000 --- a/keyboards/dyz/dyz40/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021 dayatz - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/dyz60/config.h b/keyboards/dyz/dyz60/config.h deleted file mode 100644 index 7e7ca8b69490..000000000000 --- a/keyboards/dyz/dyz60/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021 dayatz - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/dyz60_hs/config.h b/keyboards/dyz/dyz60_hs/config.h deleted file mode 100644 index 7e7ca8b69490..000000000000 --- a/keyboards/dyz/dyz60_hs/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021 dayatz - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/dyz_tkl/config.h b/keyboards/dyz/dyz_tkl/config.h deleted file mode 100644 index 7e7ca8b69490..000000000000 --- a/keyboards/dyz/dyz_tkl/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021 dayatz - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/selka40/config.h b/keyboards/dyz/selka40/config.h deleted file mode 100644 index 7e7ca8b69490..000000000000 --- a/keyboards/dyz/selka40/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021 dayatz - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dyz/synthesis60/config.h b/keyboards/dyz/synthesis60/config.h deleted file mode 100644 index d70ad316b63d..000000000000 --- a/keyboards/dyz/synthesis60/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2022 dayatz - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/dz60/keymaps/billypython/config.h b/keyboards/dz60/keymaps/billypython/config.h deleted file mode 100644 index 4b511eb8484f..000000000000 --- a/keyboards/dz60/keymaps/billypython/config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#define LAYER_FN diff --git a/keyboards/dz60/keymaps/billypython/keymap.c b/keyboards/dz60/keymaps/billypython/keymap.c deleted file mode 100644 index 66ce559c1a21..000000000000 --- a/keyboards/dz60/keymaps/billypython/keymap.c +++ /dev/null @@ -1,46 +0,0 @@ -#include QMK_KEYBOARD_H -#include "billypython.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ - * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ - * │LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSC│ ↑ │Del│ - * ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤ - * │LCtl│LGui│LAlt│ Space │RAl│FnL│ ← │ ↓ │ → │ - * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ - */ - [L_BASE] = LAYOUT_directional( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - FN_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, RSF_RCT, KC_UP, KC_DEL, - KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC, XXXXXXX, KC_RALT, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* Function layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │PSc│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │PgU│ ↑ │PgD│Ply│Prv│Nxt│Clear│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │ │M← │M↓ │M→ │MW↑│ │Hom│ ← │ ↓ │ → │End│ │ │ - * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤ - * │ │MA0│MA2│MW←│MW→│ │ │ │Vo-│Vo+│Mut│App│PgU│Ins│ - * ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤ - * │ │ │ │ MW↓ │ │ │Hom│PgD│End│ - * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ - */ - [L_FN] = LAYOUT_directional( - _______, 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_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, KC_PGUP, KC_UP, KC_PGDN, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______, _______, - _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_APP, KC_PGUP, KC_INS, - _______, _______, _______, XXXXXXX, KC_WH_D, XXXXXXX, _______, _______, KC_HOME, KC_PGDN, KC_END - ), -}; diff --git a/keyboards/dz60/keymaps/billypython/rules.mk b/keyboards/dz60/keymaps/billypython/rules.mk deleted file mode 100644 index 3b7016f57007..000000000000 --- a/keyboards/dz60/keymaps/billypython/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite -COMMAND_ENABLE = yes -CONSOLE_ENABLE = yes -EXTRAKEY_ENABLE = yes -MOUSEKEY_ENABLE = yes -RGBLIGHT_ENABLE = no -TAP_DANCE_ENABLE = yes diff --git a/keyboards/dz60/keymaps/doogle999/keymap.c b/keyboards/dz60/keymaps/doogle999/keymap.c deleted file mode 100644 index 60fe258e2547..000000000000 --- a/keyboards/dz60/keymaps/doogle999/keymap.c +++ /dev/null @@ -1,74 +0,0 @@ -#include QMK_KEYBOARD_H - -#include "doogle999.h" - -#define ______ KC_NO - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Base layer - * ,-----------------------------------------------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | - * |-----------------------------------------------------------------------------------------+ - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | - * |-----------------------------------------------------------------------------------------+ - * | Fn | A | S | D | F | G | H | J | K | L | ; | ' | Enter | - * |-----------------------------------------------------------------------------------------+ - * | Shift | Z | X | C | V | B | N | M | , | . | Shift | U | Del | - * |-----------------------------------------------------------------------------------------+ - * | Ctrl | Cmd | Alt | Space | / | Fn | L | D | R | - * `-----------------------------------------------------------------------------------------' - */ - - LAYOUT_directional( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, ______, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, ______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DELETE, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SLSH, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT - ), - -/* Fn layer - * ,-----------------------------------------------------------------------------------------. - * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | f7 | F8 | F9 | F10 | F11 | F12 | Backspace | - * |-----------------------------------------------------------------------------------------+ - * | Reset | NP1 | NP2 | NP3 | NP4 | NP5 | NP6 | NP7 | NP8 | NP9 | NP0 |VolD |VolU | Mute | - * |-----------------------------------------------------------------------------------------+ - * | | | | | | | | | | BlD | BlI | BlT | Menu | - * |-----------------------------------------------------------------------------------------+ - * | Shift | Cyc+| Cyc-| Val+| Val-| Hue+| Hue-| Sat+| Sat-| Tog | Shift | Pup | Ins | - * |-----------------------------------------------------------------------------------------+ - * | Ctrl | Cmd | Alt | Space |HwCal| |Home | Pdn | End | - * `-----------------------------------------------------------------------------------------' - */ - - LAYOUT_directional( - 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_CALC, - QK_BOOT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, KC_VOLD, KC_VOLU, KC_MUTE, - ______, ______, ______, ______, ______, ______, ______, ______, ______, BL_DOWN,BL_UP, BL_TOGG, KC_APP, - KC_LSFT, ______, RGB_MOD, RGB_RMOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_TOG, KC_RSFT, KC_PGUP, KC_INSERT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, TO(2), ______, KC_HOME, KC_PGDN, KC_END - ), - - /* Hardware calculator layer - * ,-----------------------------------------------------------------------------------------. - * |EndCa| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | - * |-----------------------------------------------------------------------------------------+ - * | | Q | | E | | T | | | | | P | | | | - * |-----------------------------------------------------------------------------------------+ - * | | | S | | | | | | | L | | | Calc | - * |-----------------------------------------------------------------------------------------+ - * | Shift | | | | C | | | | | . | Shift | | | - * |-----------------------------------------------------------------------------------------+ - * | | | | | / | | | | | - * `-----------------------------------------------------------------------------------------' - */ - - LAYOUT_directional( - ENDCALC, 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_Q, ______, KC_E, ______, KC_T, ______, ______, ______, ______, KC_P, ______, ______, ______, - ______, ______, KC_S, ______, ______, ______, ______, ______, ______, KC_L, ______, ______, CALC, - KC_LSFT, ______, ______, ______, KC_C, ______, ______, ______, ______, ______, KC_DOT, KC_RSFT, ______, ______, - ______, ______, ______, ______, ______, ______, KC_SLSH, ______, ______, ______, ______ - ), -}; \ No newline at end of file diff --git a/keyboards/dz60/keymaps/draevin/keymap.c b/keyboards/dz60/keymaps/draevin/keymap.c deleted file mode 100644 index b22dfb5561b0..000000000000 --- a/keyboards/dz60/keymaps/draevin/keymap.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright 2020 Draevin Luke @draevin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "draevin.h" - -#define LAYOUT_wrapped(...) LAYOUT(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_CM] = LAYOUT_wrapped ( - HYPR_T(KC_ESC), ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_LBRC, KC_RBRC, KC_BSLS, - KC_BSPC, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, KC_ENT, - TD(TD_CAPS), XXXXXXX, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, KC_RSFT, MO(_FN), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_RCTL, KC_RALT, XXXXXXX, KC_RGUI, KC_HYPR - ), - - [_QW] = LAYOUT_wrapped ( - HYPR_T(KC_ESC), ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, KC_BSLS, - KC_BSPC, _________________QWERTY_L2_________________, _________________QWERTY_L2_________________, KC_QUOT, KC_ENT, - TD(TD_CAPS), XXXXXXX, _________________QWERTY_L3_________________, _________________QWERTY_L3_________________, KC_RSFT, MO(_FN), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_RCTL, KC_RALT, XXXXXXX, KC_RGUI, KC_HYPR - ), - - [_FN] = LAYOUT_wrapped ( - KC_GRV, _________________FROW_LEFT_________________, _________________FROW_RIGHT________________, KC_F11, KC_F12, _______, _______, - _______, ___________________FN_L1___________________, ___________________FN_R1___________________, _______, _______, KC_MAKE, - _______, ___________________FN_L2___________________, ___________________FN_R2___________________, _______, _______, - _______, XXXXXXX, ___________________BLANK___________________, ___________________FN_R3___________________, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CM_QW - ) -}; diff --git a/keyboards/dz60/keymaps/jarred/keymap.c b/keyboards/dz60/keymaps/jarred/keymap.c deleted file mode 100644 index 32ad434f6f16..000000000000 --- a/keyboards/dz60/keymaps/jarred/keymap.c +++ /dev/null @@ -1,21 +0,0 @@ -#include QMK_KEYBOARD_H - -#define _QW 0 -#define _NV 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QW] = 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, XXXXXXX, 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, - MO(_NV), 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, XXXXXXX,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT,XXXXXXX, - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT,KC_RGUI, XXXXXXX,KC_APP, KC_RCTL), - - [_NV] = 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 ,XXXXXXX,_______, - _______,RGB_TOG,RGB_MOD,_______,KC_DEL ,KC_BSPC,_______,KC_HOME,KC_UP ,KC_END ,KC_INS ,_______,_______,_______, - _______,RGB_HUI,RGB_HUD,KC_LSFT,KC_LCTL,KC_ENT ,_______,KC_LEFT,KC_DOWN,KC_RGHT,KC_DEL ,KC_DEL , _______, - _______,XXXXXXX,RGB_SAD,RGB_SAI,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,_______,_______,XXXXXXX, - _______,RGB_VAD,RGB_VAI, _______,_______,_______, _______,_______,XXXXXXX, QK_BOOT,_______) -}; diff --git a/keyboards/dz60/keymaps/jdelkins/config.h b/keyboards/dz60/keymaps/jdelkins/config.h deleted file mode 100644 index 9d50abd3ecb1..000000000000 --- a/keyboards/dz60/keymaps/jdelkins/config.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright 2020 Joel Elkins - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General 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 - -/* My hhkb variant - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ - * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3e │ - * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┤ - * │40 │41 │43 │44 │46 │48 │4a │4b │4c │4d │4e │ - * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘ - */ - -#define LAYOUT_hhkb_split( \ - 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, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \ - k40, k41, k43, k44, k46, k48, 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, KC_NO, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k3d, k3e }, \ - { k40, k41, KC_NO, k43, k44, KC_NO, k46, KC_NO, k48, KC_NO, k4a, k4b, k4c, k4d, k4e } \ -} - -#define AUTO_SHIFT_TIMEOUT 160 -#define AUTO_SHIFT_REPEAT -#define RGBLIGHT_LAYERS -#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF -#define LEADER_TIMEOUT 400 -#define LEADER_PER_KEY_TIMING -#define USB_MAX_POWER_CONSUMPTION 100 diff --git a/keyboards/dz60/keymaps/jdelkins/keymap.c b/keyboards/dz60/keymaps/jdelkins/keymap.c deleted file mode 100644 index 2a989fe545dd..000000000000 --- a/keyboards/dz60/keymaps/jdelkins/keymap.c +++ /dev/null @@ -1,352 +0,0 @@ -/* - Copyright 2020 Joel Elkins - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General 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 "jdelkins.h" - -#undef LAYOUT -#define LAYOUT LAYOUT_hhkb_split - -#define IDLE_TIMEOUT 360 - -uint16_t rgb_idle_seconds = 0; -uint16_t rgb_timer; -uint16_t bspc_timer; -bool rgb_was_enabled; - -enum { - MY_BSPC = USER_SAFE_RANGE, -}; - -// Tap Dance - -int ctl_state = 0; - -void ctl_finished(tap_dance_state_t *state, void *user_data) { - ctl_state = cur_dance(state); - switch (ctl_state) { - case SINGLE_TAP: leader_start(); break; - case SINGLE_HOLD: register_code(KC_LCTL); break; - case DOUBLE_TAP: tap_code(KC_RCTL); break; - case DOUBLE_HOLD: register_code(KC_RCTL); break; - case TRIPLE_TAP: tap_code(KC_RCTL); tap_code(KC_RCTL); break; - case TRIPLE_HOLD: tap_code(KC_RCTL); register_code(KC_RCTL); break; - } -} - -void ctl_reset(tap_dance_state_t *state, void *user_data) { - switch (ctl_state) { - case SINGLE_HOLD: unregister_code(KC_LCTL); break; - case DOUBLE_HOLD: - case TRIPLE_HOLD: unregister_code(KC_RCTL); break; - } - ctl_state = 0; -} - -void g_finished(tap_dance_state_t *state, void *user_data) { - switch (cur_dance(state)) { - case SINGLE_TAP: - tap_code16(C(KC_END)); - break; - case DOUBLE_TAP: - tap_code16(C(KC_HOME)); - break; - } -} - -int kp_state = 0; - -void kp_finished(tap_dance_state_t *state, void *user_data) { - kp_state = hold_cur_dance(state); - switch (kp_state) { - case SINGLE_TAP: - tap_code(KC_SPC); - break; - default: - layer_invert(_KP); - break; - } -} - -void kp_reset(tap_dance_state_t *state, void *user_data) { - switch (kp_state) { - case SINGLE_HOLD: - case DOUBLE_HOLD: - case TRIPLE_HOLD: - layer_invert(_KP); - break; - } -} - -enum { - TD_LDCTL, - TD_G, - TD_KP, -}; - -tap_dance_action_t tap_dance_actions[] = { - [TD_LDCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_finished, ctl_reset), - [TD_G] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, g_finished, NULL), - [TD_KP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, kp_finished, kp_reset), -}; - -// Layers - -const uint16_t PROGMEM keymaps[_LAYER_MAX][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = 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_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MY_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_ADJUST), - TD(TD_LDCTL), MY_GUI, MY_ALT, MY_BSPC, TD(TD_KP), MY_SPC, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT - ), - [_RPT] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_GAME] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_LALT, KC_SPC, KC_LALT, _______, _______, _______, _______, _______, _______ - ), - [_FUNC] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_F13, - _______, _______, FW_WRD, KB_EOL, TG(_RPT), _______, KB_COPY, KC_PGUP, _______, _______, KB_PASTE, KC_SCRL, _______, MY_CALC, - KC_RCTL, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, - _______, _______, KC_DEL, _______, _______, BK_WRD, _______, _______, _______, _______, _______, _______, KC_NO, - KC_RCTL, MY_RGUI, MY_RALT, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END - ), - [_KP] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_ASTERISK, _______, _______, _______, _______, _______, _______, - KC_NUM, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, _______, _______, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______, TG(_KP), - _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, _______, _______, _______, _______ - ), - [_ADJUST] = 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_SCRL, KC_F13, - _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_BRID, KC_BRIU, KC_MUTE, - KC_RCTL, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, TG(_KP), _______, _______, _______, KC_MPLY, - _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, _______, _______, - KC_RCTL, MY_RGUI, MY_RALT, KC_DEL, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT - ), -}; - -const rgblight_segment_t PROGMEM rpt_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {8, 8, HSV_PINK} -); - -const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 1, HSV_RED}, - {7, 2, HSV_RED}, - {15, 1, HSV_RED} -); - -const rgblight_segment_t PROGMEM func_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 16, HSV_GREEN} -); - -const rgblight_segment_t PROGMEM kp_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 16, HSV_ORANGE} -); - -const rgblight_segment_t PROGMEM adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 16, HSV_BLUE} -); - -const rgblight_segment_t PROGMEM capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {10, 4, HSV_WHITE} -); - -const rgblight_segment_t PROGMEM numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 2, HSV_PURPLE}, - {14, 2, HSV_PURPLE} -); - - -enum rgb_layer_index { - L_RPT, - L_GAME, - L_FUNC, - L_KP, - L_ADJUST, - L_CAPSLOCK, - L_NUMLOCK, -}; - -const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( - [L_RPT] = rpt_layer, - [L_GAME] = game_layer, - [L_FUNC] = func_layer, - [L_KP] = kp_layer, - [L_ADJUST] = adjust_layer, - [L_CAPSLOCK] = capslock_layer, - [L_NUMLOCK] = numlock_layer -); - -layer_state_t layer_state_set_keymap(layer_state_t state) { - rgblight_set_layer_state(L_RPT, layer_state_cmp(state, _RPT)); - rgblight_set_layer_state(L_GAME, layer_state_cmp(state, _GAME)); - rgblight_set_layer_state(L_FUNC, layer_state_cmp(state, _FUNC)); - rgblight_set_layer_state(L_KP, layer_state_cmp(state, _KP)); - rgblight_set_layer_state(L_ADJUST, layer_state_cmp(state, _ADJUST)); - rgblight_set_layer_state(L_CAPSLOCK, CAPSLOCK_ON); - rgblight_set_layer_state(L_NUMLOCK, NUMLOCK_ON && layer_state_cmp(state, _KP)); - if (layer_state_cmp(state, _GAME) || layer_state_cmp(state, _RPT)) - autoshift_disable(); - else - autoshift_enable(); - return state; -} - -bool led_update_user(led_t led_state) { - rgblight_set_layer_state(L_CAPSLOCK, led_state.caps_lock); - rgblight_set_layer_state(L_NUMLOCK, led_state.num_lock && layer_state_is(_KP)); - return true; -} - -void keyboard_post_init_keymap(void) { - rgblight_layers = my_rgb_layers; - rgb_was_enabled = rgblight_is_enabled(); - bspc_timer = 0; -} - -void leader_end_user(void) { - // layer navigation - if (leader_sequence_one_key(KC_R)) { layer_invert(_RPT); } - if (leader_sequence_one_key(KC_G)) { layer_invert(_GAME); } - if (leader_sequence_one_key(KC_K)) { layer_invert(_KP); } - if (leader_sequence_one_key(KC_KP_5)) { layer_invert(_KP); } - - // tmux navigation - if (leader_sequence_one_key(KC_L)) { SEND_STRING(SS_LCTL("a") "n"); } - if (leader_sequence_one_key(KC_H)) { SEND_STRING(SS_LCTL("a") "p"); } - if (leader_sequence_one_key(KC_N)) { SEND_STRING(SS_LCTL("a") "c"); } - if (leader_sequence_one_key(KC_W)) { SEND_STRING(SS_LCTL("a") "x"); } - if (leader_sequence_one_key(KC_MINS)) { SEND_STRING(SS_LCTL("a") "-"); } - if (leader_sequence_one_key(KC_QUOT)) { SEND_STRING(SS_LCTL("a") "\""); } - if (leader_sequence_one_key(KC_1)) { SEND_STRING(SS_LCTL("a") "1"); } - if (leader_sequence_one_key(KC_2)) { SEND_STRING(SS_LCTL("a") "2"); } - if (leader_sequence_one_key(KC_3)) { SEND_STRING(SS_LCTL("a") "3"); } - if (leader_sequence_one_key(KC_4)) { SEND_STRING(SS_LCTL("a") "4"); } - if (leader_sequence_one_key(KC_5)) { SEND_STRING(SS_LCTL("a") "5"); } - if (leader_sequence_one_key(KC_6)) { SEND_STRING(SS_LCTL("a") "6"); } - if (leader_sequence_one_key(KC_7)) { SEND_STRING(SS_LCTL("a") "7"); } - if (leader_sequence_one_key(KC_8)) { SEND_STRING(SS_LCTL("a") "8"); } - if (leader_sequence_one_key(KC_9)) { SEND_STRING(SS_LCTL("a") "9"); } - - // secrets - if (leader_sequence_two_keys(KC_SCLN, KC_M)) { send_secret_string(0); } - if (leader_sequence_two_keys(KC_SCLN, KC_COMM)) { send_secret_string(1); } - if (leader_sequence_two_keys(KC_SCLN, KC_DOT)) { send_secret_string(2); } - if (leader_sequence_two_keys(KC_SCLN, KC_J)) { send_secret_string(3); } - if (leader_sequence_two_keys(KC_SCLN, KC_K)) { send_secret_string(4); } - if (leader_sequence_two_keys(KC_SCLN, KC_L)) { send_secret_string(5); } - - // fast control-C - if (leader_sequence_one_key(KC_C)) { tap_code16(C(KC_C)); } - - // neovim: terminal escape - if (leader_sequence_one_key(KC_BSLS)) { - tap_code16(C(KC_BSLS)); - tap_code16(C(KC_N)); - } -} - -void matrix_scan_keymap(void) { - if (rgblight_is_enabled() && timer_elapsed(rgb_timer) > 1000) { - rgb_idle_seconds++; - rgb_timer = timer_read(); - } - if (rgb_idle_seconds > IDLE_TIMEOUT) { - rgb_was_enabled = rgblight_is_enabled(); - rgblight_disable_noeeprom(); - rgb_idle_seconds = 0; - } - // if MY_BSPC is held down too long, pretend like it wasn't and start - // pressing backspace - if (bspc_timer > 0 && timer_elapsed(bspc_timer) > LEADER_TIMEOUT) { - layer_off(_FUNC); - bspc_timer = 0; - register_code(KC_BSPC); - } -} - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - static bool bspc_del = false; - static bool bspc_initiated_func = false; - bool rc = true; - - rgb_idle_seconds = 0; - if (!rgblight_is_enabled() && rgb_was_enabled) - rgblight_enable_noeeprom(); - - switch (keycode) { - case MY_BSPC: - if (record->event.pressed) { - if (IS_LAYER_ON(_FUNC)) { - // special case: if _FUNC was turned on by another key, - // treat this as KC_DEL and don't do anything else - bspc_del = true; - register_code(KC_DEL); - return false; - } else { - bspc_timer = timer_read(); - bspc_initiated_func = true; - layer_on(_FUNC); - } - } else { - if (bspc_del) { - // special case: if _FUNC was turned on by another key, - // treat this as KC_DEL and don't do anything else - unregister_code(KC_DEL); - bspc_del = false; - return false; - } - - if (bspc_initiated_func) { - layer_off(_FUNC); - bspc_initiated_func = false; - } - - if (bspc_timer > 0) { - // here the key was pressed and released before the timer - // expired, so treat as a backspace tap and pretend we - // never activated _FUNC - bspc_timer = 0; - tap_code(KC_BSPC); - } else { - // the timer went off, so KC_BSPC was registered in - // matrix_scan_keymap. unregister it now - unregister_code(KC_BSPC); - } - } - return false; // special case, return now without resetting timer - // other paths should set rc and break - break; - } - - // if something was pressed while MY_BSPC was held down, keep it pressed by - // disabling the timer - bspc_timer = 0; - return rc; -} - diff --git a/keyboards/dz60/keymaps/jdelkins/rules.mk b/keyboards/dz60/keymaps/jdelkins/rules.mk deleted file mode 100644 index 2eacc54ea108..000000000000 --- a/keyboards/dz60/keymaps/jdelkins/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -LEADER_ENABLE = yes -MOUSEKEY_ENABLE = no -CONSOLE_ENABLE = no -NKRO_ENABLE = no -TAP_DANCE_ENABLE = yes -AUTO_SHIFT_ENABLE = yes -LTO_ENABLE = yes diff --git a/keyboards/dz60/keymaps/konstantin_b/config.h b/keyboards/dz60/keymaps/konstantin_b/config.h deleted file mode 100644 index 4b511eb8484f..000000000000 --- a/keyboards/dz60/keymaps/konstantin_b/config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#define LAYER_FN diff --git a/keyboards/dz60/keymaps/konstantin_b/keymap.c b/keyboards/dz60/keymaps/konstantin_b/keymap.c deleted file mode 100644 index 3718669fa541..000000000000 --- a/keyboards/dz60/keymaps/konstantin_b/keymap.c +++ /dev/null @@ -1,46 +0,0 @@ -#include QMK_KEYBOARD_H -#include "konstantin.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ - * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │RSft /│ ↑ │FnF│ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ - * │LCtl│LGui│LAlt│ Space │RAG│RCt│ ← │ ↓ │ → │ - * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ - */ - [L_BASE] = LAYOUT_60_b_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - FN_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, RSF_SLS, KC_UP, FN_FNLK, - KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, KC_SPC, XXXXXXX, RAL_RGU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* Fn layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ - * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │ │ │Stp│Ply│Prv│Nxt│ Del │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ - * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ - * │ │MA0│MA2│MW←│MW→│ │ │App│Vo-│Vo+│ Mute │PgU│ │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ - * │ │DtPR│DtNA│ MW↓ │ │ │Hom│PgD│End│ - * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘ - */ - [L_FN] = LAYOUT_60_b_ansi( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_INS, - KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, _______, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_DEL, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, KC_PGUP, _______, - _______, DST_P_R, DST_N_A, XXXXXXX, KC_WH_D, XXXXXXX, _______, _______, KC_HOME, KC_PGDN, KC_END - ), -}; diff --git a/keyboards/dz60/keymaps/konstantin_b/rules.mk b/keyboards/dz60/keymaps/konstantin_b/rules.mk deleted file mode 100644 index 18ea01311fcb..000000000000 --- a/keyboards/dz60/keymaps/konstantin_b/rules.mk +++ /dev/null @@ -1,21 +0,0 @@ -USER_NAME := konstantin - -# Generic features -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -COMMAND_ENABLE = yes -CONSOLE_ENABLE = yes -EXTRAKEY_ENABLE = yes -MOUSEKEY_ENABLE = yes -NKRO_ENABLE = yes -TAP_DANCE_ENABLE = yes -UNICODEMAP_ENABLE = no - -# Keyboard-specific features -BACKLIGHT_ENABLE = no -RGBLIGHT_ENABLE = no -VIA_ENABLE = yes - -# Firmware size reduction -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no -SPACE_CADET_ENABLE = no diff --git a/keyboards/dz60/keymaps/mechmerlin/config.h b/keyboards/dz60/keymaps/mechmerlin/config.h deleted file mode 100644 index 92d4cfb50a3a..000000000000 --- a/keyboards/dz60/keymaps/mechmerlin/config.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -// Turn off RGB when computer goes to sleep -#ifdef RGBLIGHT_ENABLE -#define RGBLIGHT_SLEEP -#endif // RGBLIGHT_ENABLE diff --git a/keyboards/dz60/keymaps/mechmerlin/keymap.c b/keyboards/dz60/keymaps/mechmerlin/keymap.c deleted file mode 100644 index 795ba24798b8..000000000000 --- a/keyboards/dz60/keymaps/mechmerlin/keymap.c +++ /dev/null @@ -1,40 +0,0 @@ -#include QMK_KEYBOARD_H - -enum keyboard_layers { - _BL = 0, // Base Layer - _FL, // Function Layer - _CL // Control Layer -}; - -// Custom #defined keycodes (shorter macros for readability) -#define KC_CTCP LCTL_T(KC_CAPS) -#define KC_RSSH RSFT_T(KC_SLSH) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_BL] = LAYOUT_60_b_ansi( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_CTCP, 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_RSSH, KC_UP, KC_DEL, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - - [_FL] = LAYOUT_60_b_ansi( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_PGUP, MO(_CL), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END), - - [_CL] = LAYOUT_60_b_ansi( - QK_BOOT, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) -}; - -// Set underglow RGB leds to yellow -// Find the list of available colors in quantum/color.h -void matrix_init_user(void) { - rgblight_sethsv_noeeprom(HSV_YELLOW); -} diff --git a/keyboards/dz60/keymaps/mechmerlin/readme.md b/keyboards/dz60/keymaps/mechmerlin/readme.md deleted file mode 100644 index bb8fbf84b3af..000000000000 --- a/keyboards/dz60/keymaps/mechmerlin/readme.md +++ /dev/null @@ -1,68 +0,0 @@ -# MechMerlin's DZ60 Keymap - -The purpose of this keymap is to provide examples on how to do some common QMK features. - -Make example for this keyboard (after setting up your build environment): - - make dz60:mechmerlin - -## Merlin's DZ60 Hardware Info ---- - -The DZ60 is a 60% pcb produced by KBDFans. It comes in two variants, USB Mini B and USB C. It supports many many layouts. It also supports both backlight and RGB underglow. The USB C variant does not have a hardware reset switch. USB C to C is not supported. - -Merlin's DZ60 uses -- Layout B, in QMK this is LAYOUT_60_b_ansi. -- USB C -- 50g Zilents -- Arrows are 78g Zilents -- KPRepublic XD64 Case - -## Layers ---- - -Merlin's keymap has three different layers. To switch layers you can use the `MO(X)` keycode, where `X` is the layer you want to switch to. - -### _BL - -This is the base layer also known as layer 0. It is a standard QWERTY layout. It has the `_FL` layer switch key. - -### _FL - -This is the function layer also known as layer 1. It utiizes the following: -- Function Keys -- Navigation Keys -- Audio keys such as Mute, Volume Down and Volume Up. -- `_CL` layer switch key - -### _CL - -This is the control layer also known as layer 2. It utilizes the following: -- RGB Controls -- `RESET` key - -## Non Standard Keycodes ---- -### RESET - -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) - -Layout B is missing the `?` key and is instead replaced with a `right shift`. This keycode makes it so that the key can be tapped for `?` and held for `right shift`. - -### LCTL_T(KC_CAPS) - -`Caps Lock` is only ever used by tapping, why not use it as a `control` key when held? This keycode makes it so that the key can be tapped for `caps lock` and held for `control`. - - -## RGB Lighting ---- - -### RGBLIGHT_SLEEP - -This is set in `mechmerlin/config.h` so that when the computer goes to sleep, the RGB lights will also go to sleep on the keyboard. They will turn back on when the computer wakes. - -### RGB Underglow Color: Yellow - -This is set in `mechmerlin/keymap.c` in the `matrix_init_user` function. The list of available colors can be found in [`quantum/color.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h). diff --git a/keyboards/dz60/keymaps/spotpuff/keymap.c b/keyboards/dz60/keymaps/spotpuff/keymap.c deleted file mode 100644 index c4f5cd955502..000000000000 --- a/keyboards/dz60/keymaps/spotpuff/keymap.c +++ /dev/null @@ -1,95 +0,0 @@ - /* Copyright 2020 Philip Chan - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -//Layers -enum layer_names { - _QWERTY, - _FN, - _MEDIA, -}; - -//Custom Keymap Definitions -#define KC_CAD LALT(LCTL(KC_DEL)) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty Base layer - * ,-----------------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BSpc| Del | - * |-----------------------------------------------------------------------------------------+ - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | - * |-----------------------------------------------------------------------------------------+ - * | `/_Media| A | S | D | F | G | H | J | K | L | ; | ' | Enter | - * |-----------------------------------------------------------------------------------------+ - * | Shift | Z | X | C | V | B | N | M | , | . | / |PgUp | Up |PgDn | - * |-----------------------------------------------------------------------------------------+ - * | LCtrl | LGui | LAlt | Space | Fn | Space |Home | End |Left |Down |Right| - * `----------------------------------------------------------------------------------------' - */ - - [_QWERTY] = LAYOUT_directional( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - LT(_MEDIA,KC_GRV), 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_PGUP, KC_UP, KC_PGDN, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_HOME, KC_END, KC_LEFT, KC_DOWN, KC_RGHT - ), - -/* F-Key/Lighting/whatever layer - * ,-----------------------------------------------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F0 | F11 | F12 | | Ins | - * |-----------------------------------------------------------------------------------------+ - * | |R_Tog|R_HUI|R_SAI|R_VAI| | | | | | | | | KC_CAD | - * |-----------------------------------------------------------------------------------------+ - * | Caps | |R_HUD|R_SAD| | | | | | | SLCK|PAUSE| Print Screen| - * |-----------------------------------------------------------------------------------------+ - * | Trns |R_M_P|R_M_B|R_M_R|R_M_SW|R_M_S|R_M_K|R_M_X|R_M_G| | | |BLUP | | - * |-----------------------------------------------------------------------------------------+ - * | Trns | Trns | Trns | | Trns | | | |BLTog|BLDN |BLInc| - * `----------------------------------------------------------------------------------------' - */ - - [_FN] = LAYOUT_directional( - XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_INS, - XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAD, - KC_CAPS, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCRL, KC_PAUS, KC_PSCR, - _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, XXXXXXX, XXXXXXX, XXXXXXX, BL_UP, XXXXXXX, - _______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, BL_DOWN, BL_STEP - ), - -/* SFX/Multimedia/Numpad layer - * ,-----------------------------------------------------------------------------------------. - * | | | | | | |NumLk| | / | * | - | = | |Trns |Trns | - * |-----------------------------------------------------------------------------------------+ - * | | | Prev | Play| Next| | | 7 | 8 | 9 | + | | | QK_BOOT | - * |-----------------------------------------------------------------------------------------+ - * | Trns | |Mute | VUp | VDn | | | 4 | 5 | 6 | + | | Trns | - * |-----------------------------------------------------------------------------------------+ - * | Trns | | | | | | | 1 | 2 | 3 |NumEN| | | | - * |-----------------------------------------------------------------------------------------+ - * | Trns | Trns | Trns | Trns | Trns | 0 | . | | | | | - * `----------------------------------------------------------------------------------------' - */ - - [_MEDIA] = LAYOUT_directional( - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUM, XXXXXXX, KC_PSLS, KC_PAST, KC_PMNS, KC_PEQL, XXXXXXX, _______, _______, - XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX, XXXXXXX, QK_BOOT, - _______, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PPLS, XXXXXXX, _______, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, _______, _______, _______, KC_P0, KC_PDOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ) -}; diff --git a/keyboards/dz60/keymaps/spotpuff/rules.mk b/keyboards/dz60/keymaps/spotpuff/rules.mk deleted file mode 100644 index 7b4abdbc1bae..000000000000 --- a/keyboards/dz60/keymaps/spotpuff/rules.mk +++ /dev/null @@ -1 +0,0 @@ -BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/config.h b/keyboards/dz60/keymaps/twschum_b_4_10/config.h deleted file mode 100644 index 15cabda36400..000000000000 --- a/keyboards/dz60/keymaps/twschum_b_4_10/config.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -// number of taps for TT Tap-Toggle keys to toggle -#ifdef TAPPING_TOGGLE -#undef TAPPING_TOGGLE -#endif -#define TAPPING_TOGGLE 2 - -// time in ms that counts as a "tap" for various features -#ifdef TAPPING_TERM -#undef TAPPING_TERM -#endif -#define TAPPING_TERM 100 - -// https://docs.qmk.fm/features/mouse-keys#configuring-the-behavior-of-mousekeys -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 10 -#define MOUSEKEY_TIME_TO_MAX 15 -#define MOUSEKEY_WHEEL_MAX_SPEED 1 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 255 - -// flags from user/twschum/ -#define TWSCHUM_TAPPING_CTRL_PREFIX 1 diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c b/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c deleted file mode 100644 index a2cba4fe678e..000000000000 --- a/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c +++ /dev/null @@ -1,123 +0,0 @@ -#include QMK_KEYBOARD_H -#include "twschum.h" - -/* DZ60 layout using following options (from layouts diagram on KBDfans): - * - plate B (2.25u lshift) - * - opt 4 (1.75, 1, 1 on rshift) - * - opt 10 (2.75, 1.25, 2.25 on space, 5x1u bottom right keys) - * http://www.keyboard-layout-editor.com/#/gists/225f0f4dcf6671405f744fabe314627c - */ - - -#define LAYOUT_b_4_10( \ - K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \ - K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \ - K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \ - K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \ - K400, K401, K403, K404, K406, K408, K410, K411, K412, K413, K414 \ - ) { \ - { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, XXXXXXX, K014 }, \ - { K100, XXXXXXX, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \ - { K200, XXXXXXX, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, XXXXXXX }, \ - { K300, XXXXXXX, K302, K303, K304, K305, K306, K307, K308, K309, K310, XXXXXXX, K312, K313, K314 }, \ - { K400, K401, XXXXXXX, K403, K404, XXXXXXX, K406, XXXXXXX, K408, XXXXXXX, K410, K411, K412, K413, K414 } \ -} - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* base 60% qwerty */ - LAYOUT_b_4_10( - // |--------|----1---|----2---|----3---|---4----|---5----|---6----|---7----|---8----|---9----|---0----|-- - ---|-- = ---||------2.0-------| - 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, - // |--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------||----------------| - // - // |----1.5-----||---Q----|---W----|---E----|---R----|---T----|---Y----|---U----|---I----|---O----|---P----|---[----|---]----|----1.5-----| - 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, - // |------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------| - // - // |----1.75------||---A----|---S----|---D----|---F----|---G----|---H----|---J----|---K----|---L----|---;----|---'----|------2.25--------|| - 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, - // |--------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------------|| - // - // |------2.25--------|---Z----|---X----|---C----|---V----|---B----|---N----|---M----|---,----|---.----||----1.75------|--------|--------|| - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, /*SFT_T*/KC_SLSH, KC_UP, VIM_START, - // |------------------|--------|--------|--------|--------|--------|--------|--------|--------|--------||--------------|--------|--------|| - // - // |---1.25---|---1.25---||---1.25---||--------2.75----------||---1.25---|------2.25--------||--------|--------|--------|--------|--------| - MO(_Fn), KC_LALT, KC_LGUI, KC_SPC, TT(_Nav), MO(_Fn), TG(_Num), TT(_Cfg), KC_LEFT, KC_DOWN, KC_RGHT - // |----------|----------||----------||----------------------||----------|------------------||--------|--------|--------|--------|--------| - ), - - /* vim mode */ - LAYOUT_b_4_10( - VIM_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, VIM_W, VIM_E, KC_R, _______, VIM_Y, VIM_U, VIM_I, VIM_O, VIM_P, _______, _______, _______, - _______, VIM_A, VIM_S, VIM_D, _______, VIM_G, VIM_H, VIM_J, VIM_K, VIM_L, _______, _______, _______, - VIM_SHIFT, _______, VIM_X, VIM_C, VIM_V, VIM_B, _______, _______, VIM_COMMA, VIM_PERIOD, _______, _______, VIM_ESC, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - /* primary fn layer */ - LAYOUT_b_4_10( - // |--------|----1---|----2---|----3---|---4----|---5----|---6----|---7----|---8----|---9----|---0----|-- - ---|-- = ---||------2.0-------| - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - // |--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------||----------------| - // - // |----1.5-----||---Q----|---W----|---E----|---R----|---T----|---Y----|---U----|---I----|---O----|---P----|---[----|---]----|----1.5-----| - KC_TAB, CODE_PASTE, KC_HOME, KC_UP, KC_END, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, LESS_PD, XXXXXXX, XXXXXXX, CODE_PASTE, - // |------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------| - // - // |----1.75------||---A----|---S----|---D----|---F----|---G----|---H----|---J----|---K----|---L----|---;----|---'----|------2.25--------|| - KC_CAPS, SALT_CMD, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, KC_ENT, - // |--------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------------|| - // - // |------2.25--------|---Z----|---X----|---C----|---V----|---B----|---N----|---M----|---,----|---.----||----1.75------|--------|--------|| - KC_LSFT, KC_MPRV, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______, XXXXXXX, XXXXXXX, QK_LOCK, KC_PGUP, KC_INS, - // |------------------|--------|--------|--------|--------|--------|--------|--------|--------|--------||--------------|--------|--------|| - // - // |---1.25---|---1.25---||---1.25---||--------2.75----------||---1.25---|------2.25--------||--------|--------|--------|--------|--------| - KC_MEH, KC_LALT, KC_LGUI, KC_MEDIA_PLAY_PAUSE, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END - // |----------|----------||----------||----------------------||----------|------------------||--------|--------|--------|--------|--------| - ), - - /* mouse navigation */ - LAYOUT_b_4_10( - TO(_Base), KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, XXXXXXX, XXXXXXX, KC_SLEP, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LCTL, KC_MS_BTN3, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, XXXXXXX, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, - KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_BTN1, _______, _______, _______, _______, _______, _______, _______ - ), - - /* numpad layer */ - LAYOUT_b_4_10( - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_KP_PLUS, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_SLASH, KC_KP_ASTERISK, XXXXXXX, KC_ENT, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_DOT, KC_KP_ENTER, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_0, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX - ), - - - /* RGB lighting controls and keyboard config, reset */ - LAYOUT_b_4_10( - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_L0_RGB, XXXXXXX, XXXXXXX, TO(_None), - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, - EN_CTRL_SHORTCUTS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_LAYER_RGB, RGB_MODE_PLAIN, RGB_MODE_FORWARD, KC_RSFT, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MAKE, XXXXXXX, XXXXXXX, RGB_TOG, RGB_VAI, RGB_HUI, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_VAD, RGB_SAI - ), - - /* soft "off" state where none of the keystroke register */ - LAYOUT_b_4_10( - 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, XXXXXXX, XXXXXXX, TO(_Base), - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - ), -}; - -uint8_t vim_cmd_layer(void) { - return _Vim; -} diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/layout.json b/keyboards/dz60/keymaps/twschum_b_4_10/layout.json deleted file mode 100644 index cd484f9d89c7..000000000000 --- a/keyboards/dz60/keymaps/twschum_b_4_10/layout.json +++ /dev/null @@ -1,4877 +0,0 @@ -{ - "configKeymap":{ - "keys":[ - "K00", - "K01", - "K02", - "K03", - "K04", - "K05", - "K06", - "K07", - "K08", - "K09", - "K0A", - "K0B", - "K0C", - "K0D", - "K2D", - "K10", - "K11", - "K12", - "K13", - "K14", - "K15", - "K16", - "K17", - "K18", - "K19", - "K1A", - "K1B", - "K1C", - "K1D", - "K20", - "K21", - "K22", - "K23", - "K24", - "K25", - "K26", - "K27", - "K28", - "K29", - "K2A", - "K2B", - "K2C", - "K30", - "K31", - "K32", - "K33", - "K34", - "K35", - "K36", - "K37", - "K38", - "K39", - "K3A", - "K3B", - "K3C", - "K3D", - "K40", - "K41", - "K42", - "K44", - "K45", - "K46", - "K48", - "K49", - "K4A", - "K4B", - "K4C" - ], - "positions":[ - [ - "K00", - "K01", - "K02", - "K03", - "K04", - "K05", - "K06", - "K07", - "K08", - "K09", - "K0A", - "K0B", - "K0C", - "K0D" - ], - [ - "K10", - "K11", - "K12", - "K13", - "K14", - "K15", - "K16", - "K17", - "K18", - "K19", - "K1A", - "K1B", - "K1C", - "K1D" - ], - [ - "K20", - "K21", - "K22", - "K23", - "K24", - "K25", - "K26", - "K27", - "K28", - "K29", - "K2A", - "K2B", - "K2C", - "K2D" - ], - [ - "K30", - "K31", - "K32", - "K33", - "K34", - "K35", - "K36", - "K37", - "K38", - "K39", - "K3A", - "K3B", - "K3C", - "K3D" - ], - [ - "K40", - "K41", - "K42", - "KC_NO", - "K44", - "K45", - "K46", - "KC_NO", - "K48", - "K49", - "K4A", - "K4B", - "K4C", - "KC_NO" - ] - ] - }, - "keySections":[ - { - "row1":[ - { - "id":"k00", - "value":"ESC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k01", - "value":"1", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k02", - "value":"2", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k03", - "value":"3", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k04", - "value":"4", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k05", - "value":"5", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k06", - "value":"6", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k07", - "value":"7", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k08", - "value":"8", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k09", - "value":"9", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0A", - "value":"0", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0B", - "value":"MINS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0C", - "value":"EQL", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "backspace":[ - [ - { - "id":"k0D", - "value":"BSPC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k200", - "zone":"Backspace" - }, - { - "id":"k2D", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k0D", - "value":"PSCR", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Backspace" - }, - { - "id":"k2D", - "value":"PAUS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Backspace" - } - ] - ], - "row2":[ - { - "id":"k10", - "value":"TAB", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k11", - "value":"Q", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k12", - "value":"W", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k13", - "value":"E", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k14", - "value":"R", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k15", - "value":"T", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k16", - "value":"Y", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k17", - "value":"U", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k18", - "value":"I", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k19", - "value":"O", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1A", - "value":"P", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1B", - "value":"LBRC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1C", - "value":"RBRC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "row2pipe":[ - [ - { - "id":"k1D", - "value":"BSLS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150", - "zone":"Enter" - } - ], - [ - { - "id":"k1D", - "value":"ENT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"kISO", - "zone":"Enter" - } - ] - ], - "caps":[ - [ - { - "id":"k20", - "value":"LCTL", - "type":"normal", - "secondary":"LCTL", - "showMenu":false, - "shape":"k175", - "zone":"Caps Lock" - } - ], - [ - { - "id":"k20", - "value":"CAPS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175stepped", - "zone":"Caps Lock" - } - ] - ], - "row3":[ - { - "id":"k21", - "value":"A", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k22", - "value":"S", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k23", - "value":"D", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k24", - "value":"F", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k25", - "value":"G", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k26", - "value":"H", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k27", - "value":"J", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k28", - "value":"K", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k29", - "value":"L", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2A", - "value":"SCLN", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2B", - "value":"QUOT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "enter":[ - [ - { - "id":"k2C", - "value":"ENT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225", - "zone":"Enter" - } - ], - [ - { - "id":"k2C", - "value":"NUHS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Enter" - } - ] - ], - "leftShift":[ - [ - { - "id":"k30", - "value":"LSFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225", - "zone":"Left Shift" - }, - { - "id":"k31", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k30", - "value":"LSFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Left Shift" - }, - { - "id":"k31", - "value":"NUBS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Left Shift" - } - ] - ], - "row4":[ - { - "id":"k32", - "value":"Z", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k33", - "value":"X", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k34", - "value":"C", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k35", - "value":"V", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k36", - "value":"B", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k37", - "value":"N", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k38", - "value":"M", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k39", - "value":"COMM", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3A", - "value":"DOT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "rightShift":[ - [ - { - "id":"k3B", - "value":"SLSH", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Right Shift" - }, - { - "id":"k3C", - "value":"RSFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275", - "zone":"Right Shift" - }, - { - "id":"k3D", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k3B", - "value":"SLSH", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Right Shift" - }, - { - "id":"k3C", - "value":"RSFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175", - "zone":"Right Shift" - }, - { - "id":"k3D", - "value":"L1", - "type":"momentary", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Right Shift" - } - ], - [ - { - "id":"k3B", - "value":"SLSH", - "type":"tapkey", - "secondary":"RSFT", - "showMenu":false, - "shape":"k175", - "zone":"Right Shift" - }, - { - "id":"k3C", - "value":"UP", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Right Shift" - }, - { - "id":"k3D", - "value":"HYPR", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Right Shift" - } - ] - ], - "row5":[ - [ - { - "id":"k40", - "value":"MEH", - "type":"normal", - "secondary":"MEH", - "showMenu":false, - "shape":"k125", - "zone":"Bottom Row" - }, - { - "id":"k41", - "value":"LALT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Bottom Row" - }, - { - "id":"k42", - "value":"LGUI", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Bottom Row" - } - ], - [ - { - "id":"k40", - "value":"LCTL", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150", - "zone":"Bottom Row" - }, - { - "id":"k41", - "value":"LGUI", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Row" - }, - { - "id":"k42", - "value":"LALT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150", - "zone":"Bottom Row" - } - ] - ], - "space":[ - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"SPC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k625", - "zone":"Space" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"SPC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275", - "zone":"Space" - }, - { - "id":"k45", - "value":"L2", - "type":"taptoggle", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Space" - }, - { - "id":"k46", - "value":"L1", - "type":"momentary", - "secondary":null, - "showMenu":false, - "shape":"k225", - "zone":"Space" - } - ], - [ - { - "id":"k44", - "value":"ENT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225", - "zone":"Space" - }, - { - "id":"k45", - "value":"BL_STEP", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Space" - }, - { - "id":"k46", - "value":"SPC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275", - "zone":"Space" - } - ] - ], - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"SPC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k700", - "zone":"Space" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"ENT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275", - "zone":"Space" - }, - { - "id":"k45", - "value":"BL_STEP", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150", - "zone":"Space" - }, - { - "id":"k46", - "value":"SPC", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275", - "zone":"Space" - } - ] - ] - ], - "bottomRight":[ - [ - [ - { - "id":"k48", - "value":"RGUI", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Bottom Right" - }, - { - "id":"k49", - "value":"RALT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Bottom Right" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"APP", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Bottom Right" - }, - { - "id":"k4C", - "value":"RCTL", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125", - "zone":"Bottom Right" - } - ], - [ - { - "id":"k48", - "value":"L3", - "type":"taptoggle", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k49", - "value":"L4", - "type":"direct", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k4A", - "value":"LEFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k4B", - "value":"DOWN", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k4C", - "value":"RIGHT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - } - ] - ], - [ - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"RALT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150", - "zone":"Bottom Right" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"APP", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k4C", - "value":"RCTL", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150", - "zone":"Bottom Right" - } - ], - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"RALT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k4A", - "value":"LEFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k4B", - "value":"DOWN", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - }, - { - "id":"k4C", - "value":"RIGHT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100", - "zone":"Bottom Right" - } - ] - ] - ] - }, - { - "row1":[ - { - "id":"k00", - "value":"GRV", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k01", - "value":"F1", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k02", - "value":"F2", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k03", - "value":"F3", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k04", - "value":"F4", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k05", - "value":"F5", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k06", - "value":"F6", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k07", - "value":"F7", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k08", - "value":"F8", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k09", - "value":"F9", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0A", - "value":"F10", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0B", - "value":"F11", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0C", - "value":"F12", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "backspace":[ - [ - { - "id":"k0D", - "value":"DEL", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k200" - }, - { - "id":"k2D", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k0D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row2":[ - { - "id":"k10", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k11", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k12", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k13", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k14", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k15", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k16", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k17", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k18", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k19", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "row2pipe":[ - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"kISO" - } - ] - ], - "caps":[ - [ - { - "id":"k20", - "value":"CAPS", - "type":"normal", - "secondary":"LCTL", - "showMenu":false, - "shape":"k175" - } - ], - [ - { - "id":"k20", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175stepped" - } - ] - ], - "row3":[ - { - "id":"k21", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k22", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k23", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k24", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k25", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k26", - "value":"LEFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k27", - "value":"DOWN", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k28", - "value":"UP", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k29", - "value":"RIGHT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "enter":[ - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "leftShift":[ - [ - { - "id":"k30", - "value":"LSFT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k31", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k30", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k31", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row4":[ - { - "id":"k32", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k33", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k34", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k35", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k36", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k37", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k38", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k39", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "rightShift":[ - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k3D", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":"RSFT", - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row5":[ - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":"MEH", - "showMenu":false, - "shape":"k125" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ] - ], - "space":[ - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k625" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ], - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k700" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ] - ], - "bottomRight":[ - [ - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - [ - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ] - ] - }, - { - "row1":[ - { - "id":"k00", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k01", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k02", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k03", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k04", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k05", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k06", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k07", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k08", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k09", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "backspace":[ - [ - { - "id":"k0D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k200" - }, - { - "id":"k2D", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k0D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row2":[ - { - "id":"k10", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k11", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k12", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k13", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k14", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k15", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k16", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k17", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k18", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k19", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "row2pipe":[ - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"kISO" - } - ] - ], - "caps":[ - [ - { - "id":"k20", - "value":"TRNS", - "type":"normal", - "secondary":"LCTL", - "showMenu":false, - "shape":"k175" - } - ], - [ - { - "id":"k20", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175stepped" - } - ] - ], - "row3":[ - { - "id":"k21", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k22", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k23", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k24", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k25", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k26", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k27", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k28", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k29", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "enter":[ - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "leftShift":[ - [ - { - "id":"k30", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k31", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k30", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k31", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row4":[ - { - "id":"k32", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k33", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k34", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k35", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k36", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k37", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k38", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k39", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "rightShift":[ - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k3D", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":"RSFT", - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row5":[ - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":"MEH", - "showMenu":false, - "shape":"k125" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ] - ], - "space":[ - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k625" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ], - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k700" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ] - ], - "bottomRight":[ - [ - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - [ - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ] - ] - }, - { - "row1":[ - { - "id":"k00", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k01", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k02", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k03", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k04", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k05", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k06", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k07", - "value":"PSLS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k08", - "value":"PAST", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k09", - "value":"PEQL", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "backspace":[ - [ - { - "id":"k0D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k200" - }, - { - "id":"k2D", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k0D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row2":[ - { - "id":"k10", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k11", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k12", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k13", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k14", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k15", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k16", - "value":"P7", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k17", - "value":"P8", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k18", - "value":"P8", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k19", - "value":"PMNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "row2pipe":[ - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"kISO" - } - ] - ], - "caps":[ - [ - { - "id":"k20", - "value":"TRNS", - "type":"normal", - "secondary":"LCTL", - "showMenu":false, - "shape":"k175" - } - ], - [ - { - "id":"k20", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175stepped" - } - ] - ], - "row3":[ - { - "id":"k21", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k22", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k23", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k24", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k25", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k26", - "value":"P4", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k27", - "value":"P5", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k28", - "value":"P6", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k29", - "value":"PPLS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "enter":[ - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "leftShift":[ - [ - { - "id":"k30", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k31", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k30", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k31", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row4":[ - { - "id":"k32", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k33", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k34", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k35", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k36", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k37", - "value":"P1", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k38", - "value":"P2", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k39", - "value":"P3", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3A", - "value":"PDOT", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "rightShift":[ - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k3D", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - [ - { - "id":"k3B", - "value":"PENT", - "type":"normal", - "secondary":"RSFT", - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row5":[ - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":"MEH", - "showMenu":false, - "shape":"k125" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ] - ], - "space":[ - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k625" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"P0", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ], - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k700" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ] - ], - "bottomRight":[ - [ - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - [ - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ] - ] - }, - { - "row1":[ - { - "id":"k00", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k01", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k02", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k03", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k04", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k05", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k06", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k07", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k08", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k09", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k0C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "backspace":[ - [ - { - "id":"k0D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k200" - }, - { - "id":"k2D", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k0D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row2":[ - { - "id":"k10", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k11", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k12", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k13", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k14", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k15", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k16", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k17", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k18", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k19", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k1C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "row2pipe":[ - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k1D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"kISO" - } - ] - ], - "caps":[ - [ - { - "id":"k20", - "value":"TRNS", - "type":"normal", - "secondary":"LCTL", - "showMenu":false, - "shape":"k175" - } - ], - [ - { - "id":"k20", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175stepped" - } - ] - ], - "row3":[ - { - "id":"k21", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k22", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k23", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k24", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k25", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k26", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k27", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k28", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k29", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k2B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "enter":[ - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k2C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "leftShift":[ - [ - { - "id":"k30", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k31", - "value":"NO", - "type":"nodisplay", - "showMenu":false - } - ], - [ - { - "id":"k30", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k31", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row4":[ - { - "id":"k32", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k33", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k34", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k35", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k36", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k37", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k38", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k39", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - "rightShift":[ - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k3D", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3D", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ], - [ - { - "id":"k3B", - "value":"TRNS", - "type":"normal", - "secondary":"RSFT", - "showMenu":false, - "shape":"k175" - }, - { - "id":"k3C", - "value":"HOME", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k3D", - "value":"PGUP", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - "row5":[ - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":"MEH", - "showMenu":false, - "shape":"k125" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k40", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k41", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k42", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ] - ], - "space":[ - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k625" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k225" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ], - [ - [ - { - "id":"k44", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k700" - }, - { - "id":"k46", - "value":"NO", - "type":"nodisplay" - } - ], - [ - { - "id":"k44", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - }, - { - "id":"k45", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k46", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k275" - } - ] - ] - ], - "bottomRight":[ - [ - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k125" - } - ], - [ - { - "id":"k48", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"DEL", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"HOME", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"PGDN", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ], - [ - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - }, - { - "id":"k4A", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k150" - } - ], - [ - { - "id":"k48", - "value":"NO", - "type":"nodisplay" - }, - { - "id":"k49", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4A", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4B", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - }, - { - "id":"k4C", - "value":"TRNS", - "type":"normal", - "secondary":null, - "showMenu":false, - "shape":"k100" - } - ] - ] - ] - } - ], - "layoutName":"twschum_DZ60_b_4_10_v1.2", - "timestamp":1525116588644 -} diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk b/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk deleted file mode 100644 index 932a64748d93..000000000000 --- a/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk +++ /dev/null @@ -1,15 +0,0 @@ -# Build Options -# override the options specified in dz60/rules.mk -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 -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -KEY_LOCK_ENABLE = yes - -# Enables including users/twschum/twschum.h -USER_NAME := twschum diff --git a/keyboards/dz60/keymaps/xtonhasvim/config.h b/keyboards/dz60/keymaps/xtonhasvim/config.h deleted file mode 100644 index b1f549e0ba55..000000000000 --- a/keyboards/dz60/keymaps/xtonhasvim/config.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef CONFIG_KEYMAP_H -#define CONFIG_KEYMAP_H - -#include "../../config.h" - -// help for fast typist+dual function keys? -#define PERMISSIVE_HOLD - -/* speed up mousekeys a bit */ -#define MOUSEKEY_DELAY 50 -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 8 -#define MOUSEKEY_TIME_TO_MAX 30 -#define MOUSEKEY_WHEEL_MAX_SPEED 8 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 40 - -#endif diff --git a/keyboards/dz60/keymaps/xtonhasvim/keymap.c b/keyboards/dz60/keymaps/xtonhasvim/keymap.c deleted file mode 100644 index 997ae9154766..000000000000 --- a/keyboards/dz60/keymaps/xtonhasvim/keymap.c +++ /dev/null @@ -1,87 +0,0 @@ -#include QMK_KEYBOARD_H -#include "xtonhasvim.h" - -enum layers { - _QWERTY, - _FUN, - _MOVE, - _MOUSE, - _CMD -}; - -extern uint8_t vim_cmd_layer(void) { return _CMD; } - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT( - 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_NO, 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, - LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(_MOVE,KC_SCLN), KC_QUOT, KC_ENT, - KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, - LSFT(KC_LALT), KC_LALT, KC_LGUI, VIM_START, TG(_MOUSE), KC_SPC, KC_RGUI, KC_RALT, X_____X, KC_RCTL, MO(_FUN)), - - [_FUN] = 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, - _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, QK_BOOT, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, BL_DOWN,BL_TOGG, BL_UP, BL_STEP, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY)), - - [_MOVE] = LAYOUT( - X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, - X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, KC_HOME, KC_PGDN, KC_PGUP, KC_END, X_____X, X_____X, X_____X, X_____X, - X_____X, X_____X, LGUI(KC_LBRC), LGUI(LSFT(KC_LBRC)), LGUI(LSFT(KC_RBRC)), LGUI(KC_RBRC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, X_____X, X_____X, X_____X, - _______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY)), - - - [_MOUSE] = LAYOUT( - X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, - X_____X, X_____X, X_____X, KC_MS_UP, X_____X, X_____X, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, X_____X, X_____X, X_____X, X_____X, - X_____X, X_____X,KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, X_____X, X_____X, KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, X_____X, X_____X, X_____X, - _______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY)), - - [_CMD] = LAYOUT( - X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, - X_____X, X_____X, VIM_W, VIM_E, X_____X, X_____X, VIM_Y, VIM_U, VIM_I, VIM_O, VIM_P, X_____X, X_____X, X_____X, - VIM_ESC, VIM_A, VIM_S, VIM_D, X_____X, VIM_G, VIM_H, VIM_J, VIM_K, VIM_L, X_____X, X_____X, X_____X, - VIM_SHIFT, X_____X, X_____X, VIM_X, VIM_C, VIM_V, VIM_B, X_____X, X_____X, VIM_COMMA, VIM_PERIOD, X_____X, VIM_SHIFT,X_____X, - _______, _______, _______, TO(_QWERTY), X_____X, X_____X, _______, _______, _______, _______, TO(_QWERTY)), - -}; - -#define LED_BIT 1 << 2 -#define LED_MASK ~(1 << 2) - -void user_led_on(void) { - DDRB |= LED_BIT; - PORTB &= LED_MASK; -} - -void user_led_off(void) { - DDRB &= ~LED_BIT; - PORTB &= LED_MASK; -} - -void matrix_init_user(void) { - user_led_off(); -} - -layer_state_t layer_state_set_user(layer_state_t state) { - static uint32_t last_state = 0; - - if(last_state != state) { - switch (get_highest_layer(state)) { - case _CMD: - user_led_on(); - break; - default: - user_led_off(); - break; - } - last_state = state; - } - return state; -} diff --git a/keyboards/dz60/keymaps/xtonhasvim/readme.md b/keyboards/dz60/keymaps/xtonhasvim/readme.md deleted file mode 100644 index 5d0e38a3ebc4..000000000000 --- a/keyboards/dz60/keymaps/xtonhasvim/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# Xton has a DZ60 and it's Vimtastic! - -Mine has a split spacebar, no arrowkeys and an opaque case. Changes from the default layout: - -* Vim mode toggled by hitting left spacebar (see `users/xtonhasvim`). Reusing the capslock LED to indicate VIM is on. -* Momentary directional control by holding down `;`. -* Mousekeys toggled with middle space button. -* Escape is dual-function with control (which replaces capslock AS IT SHOULD BE). -* Bottom left key is the "halp my kb doesn't work" key that always dumps you back to QWERTY. - diff --git a/keyboards/dztech/dz60rgb/dz60rgb.c b/keyboards/dztech/dz60rgb/dz60rgb.c index 811dd0cd9123..826e3502ebf5 100644 --- a/keyboards/dztech/dz60rgb/dz60rgb.c +++ b/keyboards/dztech/dz60rgb/dz60rgb.c @@ -1,7 +1,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 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/moults31/keymap.c b/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c deleted file mode 100644 index a659770f8237..000000000000 --- a/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2021 moults31 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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, - CTL_T(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_DOT, KC_SLSH, KC_RSHFT, KC_UP, LT(2, KC_DEL), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_COMM, MO(1), KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_HOME, KC_END, QK_BOOT, - _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, EE_CLR, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE, - _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT - ), - [2] = LAYOUT( - RGB_MOD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, QK_BOOT, - _______, RGB_SAD, RGB_HUD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, _______, - _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_VAD, RGB_SPD - ), -}; diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md b/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md deleted file mode 100644 index 19bccf13e6c8..000000000000 --- a/keyboards/dztech/dz60rgb/keymaps/moults31/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# moults31 DZ60RBG V2 Layout - -Similar to the default dz60rgb v2 layout with some minor changes for quality of life in programming. - -Brief summary of improvements over default: -* More intuitive media keys in layer 1 -* More intuitive RGB control keys in layer 2 -* Standard left-alt -* Anne Pro 2 style home/end placement in layer 1 -* Grave key moved to right-alt position for easier ctrl-grave vscode shortcut -* Removed layer 4 (mac layout?) diff --git a/keyboards/dztech/dz60rgb/v1/config.h b/keyboards/dztech/dz60rgb/v1/config.h index 82d7b6d1e1de..af7267892279 100644 --- a/keyboards/dztech/dz60rgb/v1/config.h +++ b/keyboards/dztech/dz60rgb/v1/config.h @@ -55,7 +55,6 @@ // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 63 #endif diff --git a/keyboards/dztech/dz60rgb/v2/config.h b/keyboards/dztech/dz60rgb/v2/config.h index 094478f34d8d..2470e7b3f9af 100644 --- a/keyboards/dztech/dz60rgb/v2/config.h +++ b/keyboards/dztech/dz60rgb/v2/config.h @@ -53,7 +53,6 @@ // # define ENABLE_RGB_MATRIX_SOLID_SPLASH // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 63 #endif diff --git a/keyboards/dztech/dz60rgb/v2_1/config.h b/keyboards/dztech/dz60rgb/v2_1/config.h index a753832ed1d0..05cfa7d4e122 100644 --- a/keyboards/dztech/dz60rgb/v2_1/config.h +++ b/keyboards/dztech/dz60rgb/v2_1/config.h @@ -69,7 +69,6 @@ // # define ENABLE_RGB_MATRIX_SOLID_SPLASH // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 63 #endif diff --git a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c index b607a58a4ec3..5c0692202856 100644 --- a/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c +++ b/keyboards/dztech/dz60rgb_ansi/dz60rgb_ansi.c @@ -1,7 +1,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 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/keymaps/badger/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/badger/keymap.c deleted file mode 100644 index 3de7e1c19486..000000000000 --- a/keyboards/dztech/dz60rgb_ansi/keymaps/badger/keymap.c +++ /dev/null @@ -1,60 +0,0 @@ -/* -Copyright 2020 Dan White - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "badger.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY_MAC] = LAYOUT_60_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MOVE_MAC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, ADJUST, KC_RGUI, KC_RALT, MAC_POP), - - [_MOVE_MAC] = LAYOUT_60_ansi( - MAC_FRC, MM_LEFT, MM_RGHT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_0, IJ_TOP, IJ_BOTT, KC_DEL, - KC_BACK, IJ_STEP, IJ_INTO, IJ_OUT, IJ_RUN, IJ_STOP, _______, WD_BACK, KC_HOME, KC_END, WD_FRWD, IJ_BACK, IJ_FWD, KC_NEXT, - _______, MM_LH, MM_MAX, MM_RH, IJ_FIND, IJ_IMPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CM_RIGHT, CM_DOWN, _______, - _______, MM_UH, MM_BH, MAC_CPY, MAC_PST, IJ_IMPH, _______, IJ_REN, IJ_IMPL, IJ_DECL, IJ_USAG, _______, - _______, _______, _______, _______, _______, _______, _______, _______), - - [_QWERTY_LINUX] = LAYOUT_60_ansi( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - MOVE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, ADJUST, KC_LALT, KC_RGUI, KC_RCTL), - - [_MOVE_LINUX] = LAYOUT_60_ansi( - KC_GRV, VD_1, VD_2, VD_3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - KC_BACK, WM_VD1, WM_UH, WM_VD2, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, - _______, WM_LH, WM_MAX, WM_RH, WD_FRWD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, - _______, WM_VD3, WM_BH, OS_COPY, OS_PAST, WD_BACK, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______), - - [_ADJUST] = LAYOUT_60_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, _______, _______, _______, KC_WREF, KC_MSTP, KC_MPLY, KC_PGUP, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_INS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, DF_1, DF_2, KC_CAPS, _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, KC_WSCH, _______, - _______, _______, _______, _______, _______, _______, _______, MO(_CONFIG)), - - [_CONFIG] = LAYOUT_60_ansi( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, - _______, NK_ON, NK_OFF, EE_CLR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, - _______, GE_SWAP, GE_NORM, DB_TOGG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, RGB_M_B, _______, _______, RGB_TOG, _______, - _______, LAG_SWP, LAG_NRM, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, RGB_M_K, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______) -}; - diff --git a/keyboards/dztech/dz60rgb_ansi/v1/config.h b/keyboards/dztech/dz60rgb_ansi/v1/config.h index 5405d671a52d..674871ec49c5 100644 --- a/keyboards/dztech/dz60rgb_ansi/v1/config.h +++ b/keyboards/dztech/dz60rgb_ansi/v1/config.h @@ -55,7 +55,6 @@ // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 61 #endif diff --git a/keyboards/dztech/dz60rgb_ansi/v2/config.h b/keyboards/dztech/dz60rgb_ansi/v2/config.h index 545aa64eeaf7..0b458818bca2 100644 --- a/keyboards/dztech/dz60rgb_ansi/v2/config.h +++ b/keyboards/dztech/dz60rgb_ansi/v2/config.h @@ -53,7 +53,6 @@ # define ENABLE_RGB_MATRIX_SOLID_SPLASH // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 61 #endif diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h index 90b6c71e67f3..75ccef8193c2 100644 --- a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h +++ b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h @@ -69,7 +69,6 @@ // # define ENABLE_RGB_MATRIX_SOLID_SPLASH // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 61 #endif diff --git a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c index 5a55bacefc86..d6506389a680 100644 --- a/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c +++ b/keyboards/dztech/dz60rgb_wkl/dz60rgb_wkl.c @@ -1,7 +1,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 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 cfe82a7323d6..ac79efd26cde 100644 --- a/keyboards/dztech/dz60rgb_wkl/v1/config.h +++ b/keyboards/dztech/dz60rgb_wkl/v1/config.h @@ -55,7 +55,6 @@ // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 62 #endif diff --git a/keyboards/dztech/dz60rgb_wkl/v2/config.h b/keyboards/dztech/dz60rgb_wkl/v2/config.h index 38a1aa2c76d5..a341a18e0d60 100644 --- a/keyboards/dztech/dz60rgb_wkl/v2/config.h +++ b/keyboards/dztech/dz60rgb_wkl/v2/config.h @@ -50,7 +50,6 @@ # define ENABLE_RGB_MATRIX_SOLID_SPLASH // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 62 #endif diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h index 5bcfb21cf73b..13169e21f5e2 100644 --- a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h +++ b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h @@ -69,7 +69,6 @@ # define ENABLE_RGB_MATRIX_SOLID_SPLASH // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 62 #endif diff --git a/keyboards/dztech/dz60v2/info.json b/keyboards/dztech/dz60v2/info.json new file mode 100644 index 000000000000..bd1479b77c08 --- /dev/null +++ b/keyboards/dztech/dz60v2/info.json @@ -0,0 +1,2441 @@ +{ + "manufacturer": "DZTECH", + "keyboard_name": "DZ60v2", + "maintainer": "DZTECH", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "indicators": { + "caps_lock": "E6" + }, + "matrix_pins": { + "cols": ["F1", "D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4", "F7", "C7", "C6", "B6", "B5"], + "rows": ["F0", "B3", "F6", "F4", "F5"] + }, + "processor": "atmega32u4", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "brightness_steps": 10, + "hue_steps": 10, + "led_count": 16, + "saturation_steps": 10 + }, + "ws2812": { + "pin": "B2" + }, + "usb": { + "device_version": "0.0.2", + "pid": "0x2261", + "vid": "0x445A" + }, + "community_layouts": [ + "60_abnt2", + "60_ansi", + "60_ansi_arrow", + "60_ansi_arrow_split_bs_7u_spc", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan", + "60_tsangan_hhkb", + "64_ansi", + "64_iso" + ], + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_2_function": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.5, "x": 10, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "w": 1.5, "x": 11.5, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_abnt2": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 13.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "w": 1.75, "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_arrow_split_bs_7u_spc": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "w": 1.75, "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_ansi_split": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_split_space_rshift": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_b_ansi": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "w": 1.75, "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_b_iso": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "w": 1.75, "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_calbatr0ss": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 12.5, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_4th_row_all_1u": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_5x1u": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_5x1u_split_bs_rshift_spc": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_5x1u_split_rshift": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "h": 2, "label": "k20", "matrix": [2, 0], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k22", "matrix": [2, 2], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 1.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 2.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 3.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 4.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 5.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 6.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 7.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 8.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 9.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 10.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_arrow_one_bksp": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "w": 1.75, "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_60_iso_split": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_split_space_bs_rshift": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_tsangan": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 12.5, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_64_ansi": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_64_ansi_split_bs": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "k30", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_64_iso_split_bs": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k1e", "matrix": [1, 14], "x": 12.75, "y": 2 }, + { "h": 2, "label": "k2d", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "k30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "k30", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_directional": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "x": 13, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "k44", "matrix": [4, 4], "w": 2.25, "x": 3.75, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 1.25, "x": 6, "y": 4 }, + { "label": "k48", "matrix": [4, 8], "w": 2.75, "x": 7.25, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_olivierko": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 2, "x": 0, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11, "y": 3 }, + { "label": "k3c", "matrix": [3, 12], "x": 12, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 2, "x": 13, "y": 3 }, + { "label": "k40", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11, "y": 4 }, + { "label": "k4c", "matrix": [4, 12], "x": 12, "y": 4 }, + { "label": "k4d", "matrix": [4, 13], "x": 13, "y": 4 }, + { "label": "k4e", "matrix": [4, 14], "x": 14, "y": 4 } + ] + }, + "LAYOUT_true_hhkb": { + "layout": [ + { "label": "k00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "k01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "k02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "k03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "k04", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "k05", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "k06", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "k07", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "k08", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "k09", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": "k0a", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "k0b", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "k0c", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "k0d", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "k0e", "matrix": [0, 14], "x": 14, "y": 0 }, + { "label": "k10", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "k12", "matrix": [1, 2], "x": 1.5, "y": 1 }, + { "label": "k13", "matrix": [1, 3], "x": 2.5, "y": 1 }, + { "label": "k14", "matrix": [1, 4], "x": 3.5, "y": 1 }, + { "label": "k15", "matrix": [1, 5], "x": 4.5, "y": 1 }, + { "label": "k16", "matrix": [1, 6], "x": 5.5, "y": 1 }, + { "label": "k17", "matrix": [1, 7], "x": 6.5, "y": 1 }, + { "label": "k18", "matrix": [1, 8], "x": 7.5, "y": 1 }, + { "label": "k19", "matrix": [1, 9], "x": 8.5, "y": 1 }, + { "label": "k1a", "matrix": [1, 10], "x": 9.5, "y": 1 }, + { "label": "k1b", "matrix": [1, 11], "x": 10.5, "y": 1 }, + { "label": "k1c", "matrix": [1, 12], "x": 11.5, "y": 1 }, + { "label": "k1d", "matrix": [1, 13], "x": 12.5, "y": 1 }, + { "label": "k1e", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "k20", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "k22", "matrix": [2, 2], "x": 1.75, "y": 2 }, + { "label": "k23", "matrix": [2, 3], "x": 2.75, "y": 2 }, + { "label": "k24", "matrix": [2, 4], "x": 3.75, "y": 2 }, + { "label": "k25", "matrix": [2, 5], "x": 4.75, "y": 2 }, + { "label": "k26", "matrix": [2, 6], "x": 5.75, "y": 2 }, + { "label": "k27", "matrix": [2, 7], "x": 6.75, "y": 2 }, + { "label": "k28", "matrix": [2, 8], "x": 7.75, "y": 2 }, + { "label": "k29", "matrix": [2, 9], "x": 8.75, "y": 2 }, + { "label": "k2a", "matrix": [2, 10], "x": 9.75, "y": 2 }, + { "label": "k2b", "matrix": [2, 11], "x": 10.75, "y": 2 }, + { "label": "k2c", "matrix": [2, 12], "x": 11.75, "y": 2 }, + { "label": "k2d", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "k30", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "k31", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "k32", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "k33", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "k34", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "k35", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "k36", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "k37", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "k38", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "k39", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": "k3a", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "k3b", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "k3d", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "k3e", "matrix": [3, 14], "x": 14, "y": 3 }, + { "label": "k41", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "k43", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "k46", "matrix": [4, 6], "w": 6, "x": 4, "y": 4 }, + { "label": "k4a", "matrix": [4, 10], "w": 1.5, "x": 10, "y": 4 }, + { "label": "k4b", "matrix": [4, 11], "x": 11.5, "y": 4 } + ] + } + } +} + diff --git a/keyboards/dztech/dz60v2/keymaps/default/keymap.c b/keyboards/dztech/dz60v2/keymaps/default/keymap.c new file mode 100644 index 000000000000..f3372b151ca6 --- /dev/null +++ b/keyboards/dztech/dz60v2/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2023 dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_all( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + 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, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dztech/dz60v2/keymaps/via/keymap.c b/keyboards/dztech/dz60v2/keymaps/via/keymap.c new file mode 100644 index 000000000000..f3372b151ca6 --- /dev/null +++ b/keyboards/dztech/dz60v2/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2023 dztech + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_all( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_UP, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + 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, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, BL_DOWN, BL_TOGG, BL_UP, BL_STEP, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/dztech/dz60v2/keymaps/via/rules.mk b/keyboards/dztech/dz60v2/keymaps/via/rules.mk new file mode 100644 index 000000000000..ca9fed0e6b53 --- /dev/null +++ b/keyboards/dztech/dz60v2/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +LTO_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/dztech/dz60v2/readme.md b/keyboards/dztech/dz60v2/readme.md new file mode 100644 index 000000000000..51ccd9a12bb2 --- /dev/null +++ b/keyboards/dztech/dz60v2/readme.md @@ -0,0 +1,26 @@ +# DZ60 60% Mechanical Keyboard PCB + +## A Customizable 60% Mechanical Keyboard PCB + +* Keyboard Maintainer: QMK Community +* Hardware Supported: DZ60 60% Mechanical Keyboard PCB +* Hardware Availability: [KBDfans](https://kbdfans.com/collections/60/products/dz60-60-pcb) + +There are two versions of the DZ60 PCB. Please use the appropriate firmware for your board. + +* V1: 1.6mm thickness PCB; +* V2: 1.2mm thickness PCB + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + +Make example for this keyboard (after setting up your build environment): + + make dztech/dz60v2: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/dztech/dz60v2/rules.mk b/keyboards/dztech/dz60v2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/dztech/dz60v2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/dztech/dz64rgb/config.h b/keyboards/dztech/dz64rgb/config.h index 43e1b1c609a0..edfc7b71716b 100644 --- a/keyboards/dztech/dz64rgb/config.h +++ b/keyboards/dztech/dz64rgb/config.h @@ -48,8 +48,7 @@ #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL #define ENABLE_RGB_MATRIX_TYPING_HEATMAP #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_COUNT 1 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define RGB_MATRIX_LED_COUNT 64 #endif #define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 diff --git a/keyboards/dztech/dz64rgb/dz64rgb.c b/keyboards/dztech/dz64rgb/dz64rgb.c index 5fa08a3ee8c6..561a9727e50d 100644 --- a/keyboards/dztech/dz64rgb/dz64rgb.c +++ b/keyboards/dztech/dz64rgb/dz64rgb.c @@ -17,7 +17,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { { 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/dz65rgb/keymaps/haervig/keymap.c b/keyboards/dztech/dz65rgb/keymaps/haervig/keymap.c deleted file mode 100644 index f2ccd311e874..000000000000 --- a/keyboards/dztech/dz65rgb/keymaps/haervig/keymap.c +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2021 Jakob Hærvig - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "haervig.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_65_ansi( - QK_GESC, DK_1, CU_2, DK_3, CU_4, DK_5, CU_6, CU_7, CU_8, CU_9, CU_0, CU_MINS, CU_EQL, CU_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, CU_LBRC, CU_RBRC, CU_BSLS, KC_PGUP, - CTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, CU_SCLN, CU_QUOT, KC_ENT, KC_PGDN, - CU_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, CU_COMM, CU_DOT, CU_SLSH, CU_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_65_ansi( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/dztech/dz65rgb/keymaps/haervig/rules.mk b/keyboards/dztech/dz65rgb/keymaps/haervig/rules.mk deleted file mode 100644 index 676050bfcec7..000000000000 --- a/keyboards/dztech/dz65rgb/keymaps/haervig/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -# Userspace defines -DANISH_ENABLE = yes # Enable Custom US Ansi Keycodes for PC with Danish set as input language -RGB_MATRIX_ENABLE = no # Disable the ugly RGB light \ No newline at end of file diff --git a/keyboards/dztech/dz65rgb/v1/config.h b/keyboards/dztech/dz65rgb/v1/config.h index 4a8449897529..b9203346dd77 100644 --- a/keyboards/dztech/dz65rgb/v1/config.h +++ b/keyboards/dztech/dz65rgb/v1/config.h @@ -70,9 +70,8 @@ // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b1110100 -# define DRIVER_ADDR_2 0b1110111 -# define DRIVER_COUNT 2 +# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC # define DRIVER_1_LED_TOTAL 35 # define DRIVER_2_LED_TOTAL 33 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/dztech/dz65rgb/v1/v1.c b/keyboards/dztech/dz65rgb/v1/v1.c index a3b7bdfb5bf8..a0a355e1209e 100644 --- a/keyboards/dztech/dz65rgb/v1/v1.c +++ b/keyboards/dztech/dz65rgb/v1/v1.c @@ -16,7 +16,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { { 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 04700c84ed53..600687c2451b 100644 --- a/keyboards/dztech/dz65rgb/v2/config.h +++ b/keyboards/dztech/dz65rgb/v2/config.h @@ -70,9 +70,8 @@ // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b1110100 -# define DRIVER_ADDR_2 0b1110111 -# define DRIVER_COUNT 2 +# define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC # define DRIVER_1_LED_TOTAL 35 # define DRIVER_2_LED_TOTAL 33 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/dztech/dz65rgb/v2/v2.c b/keyboards/dztech/dz65rgb/v2/v2.c index 31599ad4b825..7754bc4ee511 100644 --- a/keyboards/dztech/dz65rgb/v2/v2.c +++ b/keyboards/dztech/dz65rgb/v2/v2.c @@ -16,7 +16,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { { 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 421ae8277c21..1398a378f860 100755 --- a/keyboards/dztech/dz65rgb/v3/config.h +++ b/keyboards/dztech/dz65rgb/v3/config.h @@ -72,8 +72,7 @@ # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b0110000 -# define DRIVER_COUNT 1 +# define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND # define RGB_MATRIX_LED_COUNT 68 # define DRIVER_INDICATOR_LED_TOTAL 0 #endif diff --git a/keyboards/dztech/dz65rgb/v3/v3.c b/keyboards/dztech/dz65rgb/v3/v3.c index ceb5c30f3e1e..0fb8ba49de75 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 PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3741_led_t PROGMEM g_is31fl3741_leds[RGB_MATRIX_LED_COUNT] = { {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/info.json b/keyboards/dztech/dz96/info.json index 47ceaebcd285..c1d3b84623ea 100644 --- a/keyboards/dztech/dz96/info.json +++ b/keyboards/dztech/dz96/info.json @@ -25,8 +25,13 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", + "layout_aliases": { + "LAYOUT_default": "LAYOUT_96_ansi", + "LAYOUT_iso": "LAYOUT_96_iso" + }, + "community_layouts": ["96_ansi", "96_iso"], "layouts": { - "LAYOUT_default": { + "LAYOUT_96_ansi": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, @@ -357,7 +362,7 @@ {"matrix": [5, 12], "x": 18, "y": 5} ] }, - "LAYOUT_iso": { + "LAYOUT_96_iso": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, {"matrix": [0, 1], "x": 1, "y": 0}, diff --git a/keyboards/dztech/dz96/matrix_diagram.md b/keyboards/dztech/dz96/matrix_diagram.md new file mode 100644 index 000000000000..e54cceee76d3 --- /dev/null +++ b/keyboards/dztech/dz96/matrix_diagram.md @@ -0,0 +1,23 @@ +# Matrix Diagram for Dztech Dz96 + +``` +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │60 │61 │62 │63 │05 │06 │07 │08 │72 │09 │0A │0B │0C │7C │ +├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ ┌───────┐ +│10 │11 │12 │13 │14 │64 │65 │66 │67 │15 │16 │17 │18 │70 │71 │19 │1A │1B │1C │ │71 │ 2u BackSpace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤ └─┬─────┤ ┌───┐ +│20 │21 │22 │23 │24 │68 │69 │6A │6B │25 │26 │27 │28 │73 │29 │2A │2B │2C │ │ │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┼───┤ ┌──┴┐38 │ ISO Enter │2C │ Numpad "+" 2u +│30 │31 │32 │33 │34 │6C │75 │76 │77 │35 │36 │37 │38 │39 │3A │3B │3C │ │73 │ │ │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤ └───┴────┘ ├───┤ +│40 │41 │42 │43 │44 │78 │79 │7A │7B │45 │46 │47 │48 │74 │49 │4A │4B │4C │ │ │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┼───┤ │4C │ Numpad Enter 2U +│50 │51 │52 │59 │55 │56 │57 │58 │53 │54 │5A │5B │5C │ │ │ +└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ └───┘ +┌────────┐ +│40 │ 2.25u LShift +└────────┘ +┌─────┬─────┬───────────────────────────┬─────┬─────┐ +│50 │51 │59 │55 │57 │ 2 Mod +└─────┴─────┴───────────────────────────┴─────┴─────┘ +``` diff --git a/keyboards/dztech/og60/info.json b/keyboards/dztech/og60/info.json deleted file mode 100644 index 52c4e0b18920..000000000000 --- a/keyboards/dztech/og60/info.json +++ /dev/null @@ -1,448 +0,0 @@ -{ - "manufacturer": "KBDFans", - "keyboard_name": "Og60", - "maintainer": "moyi4681", - "bootloader": "rp2040", - "diode_direction": "COL2ROW", - "features": { - "bootmagic": true, - "command": false, - "console": false, - "extrakey": true, - "mousekey": true, - "nkro": true - }, - "indicators": { - "caps_lock": "GP28" - }, - "matrix_pins": { - "cols": ["GP2", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP18", "GP19", "GP20", "GP21", "GP22", "GP23"], - "rows": ["GP4", "GP3", "GP17", "GP24", "GP25"] - }, - "processor": "RP2040", - "usb": { - "device_version": "0.0.1", - "pid": "0x6071", - "vid": "0x4B42" - }, - "community_layouts": ["60_ansi", "60_hhkb", "60_iso", "60_ansi_tsangan", "60_tsangan_hhkb"], - "layouts": { - "LAYOUT_60_ansi": { - "layout": [ - {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, - {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, - {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, - {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, - {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, - {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, - {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, - {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, - {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, - {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, - - {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, - {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, - - {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, - - {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, - {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, - {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, - {"label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, - {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, - {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, - {"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, - {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} - ] - }, - "LAYOUT_60_hhkb": { - "layout": [ - {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, - {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, - {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, - {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, - {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, - {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, - {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, - {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, - {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, - {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, - {"label": "Backspace", "matrix": [2, 12], "x": 14, "y": 0}, - - {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, - {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, - - {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, - {"label": "Ctrl", "matrix": [4, 1], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, - {"label": "Ctrl", "matrix": [4, 12], "x": 12.5, "y": 4} - ] - }, - "LAYOUT_60_iso": { - "layout": [ - {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, - {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, - {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, - {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, - {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, - {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, - {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, - {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, - {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, - {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, - - {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, - - {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, - {"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2}, - {"label": "~", "matrix": [1, 13], "x": 12.75, "y": 2}, - {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, - - {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, - {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, - {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, - - {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, - {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, - {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, - {"label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, - {"label": "AltGr", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, - {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, - {"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, - {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} - ] - }, - "LAYOUT_60_ansi_tsangan": { - "layout": [ - {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, - {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, - {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, - {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, - {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, - {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, - {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, - {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, - {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, - {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, - - {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, - {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, - - {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, - - {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, - {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, - {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_60_tsangan_hhkb": { - "layout": [ - {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, - {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, - {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, - {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, - {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, - {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, - {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, - {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, - {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, - {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, - {"label": "Backspace", "matrix": [2, 12], "x": 14, "y": 0}, - - {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, - {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, - - {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, - {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, - - {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, - {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, - {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, - {"label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, - {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, - {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, - {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} - ] - }, - "LAYOUT_all": { - "layout": [ - {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, - {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, - {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, - {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, - {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, - {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, - {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, - {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, - {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, - {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, - {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, - {"label": "Del", "matrix": [2, 12], "x": 13, "y": 0}, - {"label": "Backspace", "matrix": [0, 13], "x": 14, "y": 0}, - - {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, - {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, - {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, - {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, - {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, - {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, - {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, - {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, - {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, - {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, - {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, - {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, - {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, - {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, - - {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, - {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, - {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, - {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, - {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, - {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, - {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, - {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, - {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, - {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, - {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, - - {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, - {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, - {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, - {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, - {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, - {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, - {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, - {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, - {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, - {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, - {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, - {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, - {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, - {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, - - {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, - {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, - {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, - {"label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, - {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, - {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, - {"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, - {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} - ] - } - } -} - diff --git a/keyboards/dztech/og60/keymaps/vial/config.h b/keyboards/dztech/og60/keymaps/vial/config.h new file mode 100644 index 000000000000..5f1b48efaf31 --- /dev/null +++ b/keyboards/dztech/og60/keymaps/vial/config.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x71, 0xBB, 0xFD, 0x03, 0x12, 0xCF, 0xC5, 0x03} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 } + +#define VIAL_UNLOCK_COMBO_COLS { 0, 13 } diff --git a/keyboards/dztech/og60/keymaps/vial/keymap.c b/keyboards/dztech/og60/keymaps/vial/keymap.c new file mode 100644 index 000000000000..203b7568e0d6 --- /dev/null +++ b/keyboards/dztech/og60/keymaps/vial/keymap.c @@ -0,0 +1,29 @@ +/* Copyright 2022 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, 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_NUHS, + 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_INS, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL + ) +}; + + diff --git a/keyboards/dztech/og60/keymaps/vial/rules.mk b/keyboards/dztech/og60/keymaps/vial/rules.mk new file mode 100644 index 000000000000..6bc7063adc21 --- /dev/null +++ b/keyboards/dztech/og60/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dztech/og60/keymaps/vial/vial.json b/keyboards/dztech/og60/keymaps/vial/vial.json new file mode 100644 index 000000000000..fd43e65272c9 --- /dev/null +++ b/keyboards/dztech/og60/keymaps/vial/vial.json @@ -0,0 +1,226 @@ +{ + "name": "OG60", + "vendorId": "0x4B42", + "productId": "0x6071", + "lighting": "none", + "matrix": { + "rows": 5, + "cols": 14 + }, + "layouts": { + "labels": [ + ["Backspace", "Default", "Split"], + ["Enter Key", "ANSI", "ISO"], + ["Left Shift", "Default", "Split"], + ["Spacebar", "Standard", "7u"], + ["Right Shift", "Default", "Split"] + ], + "keymap": [ + [ + { + "x": 3, + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13\n\n\n0,0", + "2,12\n\n\n0,1", + "0,13\n\n\n0,1" + ], + [ + { + "x": 3, + "c": "#aaaaaa", + "w": 1.5 + }, + "1,0", + { + "c": "#cccccc" + }, + "1,1", + "1,2", + "1,3", + "1,4", + "1,5", + "1,6", + "1,7", + "1,8", + "1,9", + "1,10", + "1,11", + "1,12", + { + "w": 1.5 + }, + "1,13\n\n\n1,0", + { + "x": 1.5, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13\n\n\n1,1" + ], + [ + { + "x": 3, + "c": "#aaaaaa", + "w": 1.75 + }, + "2,0", + { + "c": "#cccccc" + }, + "2,1", + "2,2", + "2,3", + "2,4", + "2,5", + "2,6", + "2,7", + "2,8", + "2,9", + "2,10", + "2,11", + { + "c": "#777777", + "w": 2.25 + }, + "2,13\n\n\n1,0", + { + "c": "#cccccc", + "x": 0.5 + }, + "1,13\n\n\n1,1" + ], + [ + { + "x": 0.75, + "c": "#aaaaaa", + "w": 1.25 + }, + "3,0\n\n\n2,1", + { + "c": "#cccccc" + }, + "3,1\n\n\n2,1", + { + "c": "#aaaaaa", + "w": 2.25 + }, + "3,0\n\n\n2,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "3,12\n\n\n4,0", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12\n\n\n4,1", + "3,13\n\n\n4,1" + ], + [ + { + "x": 3, + "c": "#aaaaaa", + "w": 1.25 + }, + "4,0\n\n\n3,0", + { + "w": 1.25 + }, + "4,1\n\n\n3,0", + { + "w": 1.25 + }, + "4,2\n\n\n3,0", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,7\n\n\n3,0", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,10\n\n\n3,0", + { + "w": 1.25 + }, + "4,11\n\n\n3,0", + { + "w": 1.25 + }, + "4,12\n\n\n3,0", + { + "w": 1.25 + }, + "4,13\n\n\n3,0" + ], + [ + { + "x": 3, + "c": "#aaaaaa", + "w": 1.5 + }, + "4,0\n\n\n3,1", + "4,1\n\n\n3,1", + { + "w": 1.5 + }, + "4,2\n\n\n3,1", + { + "c": "#cccccc", + "w": 7 + }, + "4,7\n\n\n3,1", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "4,11\n\n\n3,1", + "4,12\n\n\n3,1", + { + "w": 1.5 + }, + "4,13\n\n\n3,1" + ] + ] + } +} diff --git a/keyboards/dztech/og60/readme.md b/keyboards/dztech/og60/readme.md deleted file mode 100644 index 07d6e6a658b0..000000000000 --- a/keyboards/dztech/og60/readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# OG60 -A customizable 60% HotSwap keyboard. - -* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) -* Hardware Supported: OG60 -* Hardware Availability: [KBDfans](https://kbdfans.com/) - -## Bootloader mode - -Enter the bootloader in 3 ways: - -* Bootmagic reset: Hold down the left top key then plug in the USB cable. -* Physical reset button: Double tap the reset button. -* Keycode in layout: Press the key mapped to QK_BOOT if it is available. - -## Making firmware - -Make example for this keyboard (after setting up your build environment): - - make dztech/og60: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/dztech/pluto/info.json b/keyboards/dztech/pluto/info.json index ab201befa314..d64e941346e0 100644 --- a/keyboards/dztech/pluto/info.json +++ b/keyboards/dztech/pluto/info.json @@ -1,191 +1,1142 @@ { - "manufacturer": "DZTECH", - "keyboard_name": "PLUTO", - "maintainer": "moyi4681", - "bootloader": "rp2040", - "diode_direction": "COL2ROW", - "features": { - "bootmagic": true, - "command": false, - "console": false, - "extrakey": true, - "mousekey": true, - "nkro": true - }, - "matrix_pins": { - "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP16", "GP15", "GP14", "GP13", "GP0"], - "rows": ["GP1", "GP18", "GP17", "GP12", "GP11"] - }, - "processor": "RP2040", - "usb": { - "device_version": "1.0.0", - "pid": "0x0006", - "vid": "0x445A" - }, - "layouts": { - "LAYOUT_all": { - "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1, "y": 0 }, - { "matrix": [0, 2], "x": 2, "y": 0 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 5], "x": 5, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, - { "matrix": [0, 7], "x": 7, "y": 0 }, - { "matrix": [0, 8], "x": 8, "y": 0 }, - { "matrix": [0, 9], "x": 9, "y": 0 }, - { "matrix": [0, 10], "x": 10, "y": 0 }, - { "matrix": [0, 11], "x": 11, "y": 0 }, - { "matrix": [0, 12], "x": 12, "y": 0 }, - { "matrix": [0, 13], "x": 13, "y": 0 }, - { "matrix": [0, 14], "x": 14, "y": 0 }, - { "matrix": [0, 15], "x": 15.25, "y": 0 }, - { "matrix": [2, 12], "x": 16.25, "y": 0 }, - { "matrix": [2, 13], "x": 17.25, "y": 0 }, - - { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "matrix": [1, 13], "x": 12.75, "y": 2 }, - { "matrix": [1, 15], "x": 15.25, "y": 1 }, - { "matrix": [2, 14], "x": 16.25, "y": 1 }, - { "matrix": [2, 15], "x": 17.25, "y": 1 }, - - { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "matrix": [1, 14], "w": 1.25, "x": 12.75, "y": 1 }, - - { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, - { "matrix": [3, 1], "x": 1.25, "y": 3 }, - { "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, - { "matrix": [3, 13], "x": 15.25, "y": 3 }, - { "matrix": [3, 14], "x": 16.25, "y": 3 }, - - { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, - { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, - { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, - { "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, - { "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, - { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, - { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, - { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }, - { "matrix": [3, 15], "x": 15.25, "y": 4 }, - { "matrix": [4, 14], "x": 16.25, "y": 4 }, - { "matrix": [4, 15], "x": 17.25, "y": 4 } - ] - }, - "LAYOUT_iso": { - "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1, "y": 0 }, - { "matrix": [0, 2], "x": 2, "y": 0 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 5], "x": 5, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, - { "matrix": [0, 7], "x": 7, "y": 0 }, - { "matrix": [0, 8], "x": 8, "y": 0 }, - { "matrix": [0, 9], "x": 9, "y": 0 }, - { "matrix": [0, 10], "x": 10, "y": 0 }, - { "matrix": [0, 11], "x": 11, "y": 0 }, - { "matrix": [0, 12], "x": 12, "y": 0 }, - { "matrix": [0, 13], "x": 13, "y": 0 }, - { "matrix": [0, 14], "x": 14, "y": 0 }, - { "matrix": [0, 15], "x": 15.25, "y": 0 }, - { "matrix": [2, 12], "x": 16.25, "y": 0 }, - { "matrix": [2, 13], "x": 17.25, "y": 0 }, - - { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "h": 2, "matrix": [1, 14], "w": 1.25, "x": 13.75, "y": 1 }, - { "matrix": [1, 15], "x": 15.25, "y": 1 }, - { "matrix": [2, 14], "x": 16.25, "y": 1 }, - { "matrix": [2, 15], "x": 17.25, "y": 1 }, - - { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "matrix": [1, 13], "x": 12.75, "y": 2 }, - - { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, - { "matrix": [3, 1], "x": 1.25, "y": 3 }, - { "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, - { "matrix": [3, 13], "x": 15.25, "y": 3 }, - { "matrix": [3, 14], "x": 16.25, "y": 3 }, - - { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, - { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, - { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, - { "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, - { "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, - { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, - { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, - { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }, - { "matrix": [3, 15], "x": 15.25, "y": 4 }, - { "matrix": [4, 14], "x": 16.25, "y": 4 }, - { "matrix": [4, 15], "x": 17.25, "y": 4 } - ] + "manufacturer": "DZTECH", + "keyboard_name": "PLUTO", + "maintainer": "moyi4681", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP16", "GP15", "GP14", "GP13", "GP0"], + "rows": ["GP1", "GP18", "GP17", "GP12", "GP11"] + }, + "processor": "RP2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x0006", + "vid": "0x445A" + }, + "community_layouts": ["tkl_nofrow_ansi", "tkl_nofrow_iso"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15.25, "y": 0}, + {"matrix": [2, 12], "x": 16.25, "y": 0}, + {"matrix": [2, 13], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [1, 15], "x": 15.25, "y": 1}, + {"matrix": [2, 14], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [1, 13], "x": 12.75, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 16.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [3, 15], "x": 15.25, "y": 4}, + {"matrix": [4, 14], "x": 16.25, "y": 4}, + {"matrix": [4, 15], "x": 17.25, "y": 4} + ] + } } - } } diff --git a/keyboards/dztech/pluto/keymaps/default/keymap.c b/keyboards/dztech/pluto/keymaps/default/keymap.c index 9edd2f178f05..4824a87a4831 100644 --- a/keyboards/dztech/pluto/keymaps/default/keymap.c +++ b/keyboards/dztech/pluto/keymaps/default/keymap.c @@ -18,10 +18,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, 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_NUHS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_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_NUHS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) }; diff --git a/keyboards/dztech/pluto/keymaps/via/keymap.c b/keyboards/dztech/pluto/keymaps/via/keymap.c index 9edd2f178f05..4824a87a4831 100644 --- a/keyboards/dztech/pluto/keymaps/via/keymap.c +++ b/keyboards/dztech/pluto/keymaps/via/keymap.c @@ -18,10 +18,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, 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_NUHS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_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_NUHS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ) }; diff --git a/keyboards/dztech/pluto/matrix_diagram.md b/keyboards/dztech/pluto/matrix_diagram.md new file mode 100644 index 000000000000..576dea9578c4 --- /dev/null +++ b/keyboards/dztech/pluto/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for DZTECH PLUTO + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E ││0F │2C │2D │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D ││1F │2E │2F │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴┐1E │ ISO Enter +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │1E │ │1D │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3E │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───┐ +│40 │41 │42 │47 │4A │4B │4C │4D ││3F │4E │4F │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ +┌────────┐ ┌──────────┐ +│30 │ 2.25u LShift 2.75u RShift │3C │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │42 │47 │4B │4C │4D │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +``` diff --git a/keyboards/dztech/tofu/ii/v1/config.h b/keyboards/dztech/tofu/ii/v1/config.h index 67a4c757af7f..36741e116800 100644 --- a/keyboards/dztech/tofu/ii/v1/config.h +++ b/keyboards/dztech/tofu/ii/v1/config.h @@ -79,9 +79,8 @@ # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_ADDR_2 0b1011111 -# define DRIVER_COUNT 2 +# define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND +# define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC # define DRIVER_1_LED_TOTAL 46 # define DRIVER_2_LED_TOTAL 20 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/dztech/tofu/ii/v1/v1.c b/keyboards/dztech/tofu/ii/v1/v1.c index bb15f3d4a13b..8baf0235bd2f 100644 --- a/keyboards/dztech/tofu/ii/v1/v1.c +++ b/keyboards/dztech/tofu/ii/v1/v1.c @@ -17,7 +17,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = { { 1, K_12, J_12, L_12 }, { 1, K_11, J_11, L_11 }, { 1, K_10, J_10, L_10 }, diff --git a/keyboards/dztech/tofu/jr/readme.md b/keyboards/dztech/tofu/jr/readme.md deleted file mode 100644 index 579929c5d7bd..000000000000 --- a/keyboards/dztech/tofu/jr/readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# TOFU_JR -A customizable 65% RGB keyboard. - -* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) -* Hardware Supported: TOFU_JR -* Hardware Availability: [KBDfans](https://kbdfans.com/) - -## Bootloader mode - -Enter the bootloader in 3 ways: - -* Bootmagic reset: Hold down the left top key then plug in the USB cable. -* Physical reset button: Double tap the reset button. -* Keycode in layout: Press the key mapped to QK_BOOT if it is available. - -## Making firmware - -Make example for this keyboard (after setting up your build environment): - - make dztech/tofu/jr: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/dztech/tofu/jr/v1/config.h b/keyboards/dztech/tofu/jr/v1/config.h index a05cdacf7995..74e5ed084843 100644 --- a/keyboards/dztech/tofu/jr/v1/config.h +++ b/keyboards/dztech/tofu/jr/v1/config.h @@ -79,9 +79,8 @@ # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255 # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_ADDR_2 0b1011111 -# define DRIVER_COUNT 2 +# define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND +# define IS31FL3737_I2C_ADDRESS_2 IS31FL3737_I2C_ADDRESS_VCC # define DRIVER_1_LED_TOTAL 48 # define DRIVER_2_LED_TOTAL 20 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/dztech/tofu/jr/v1/readme.md b/keyboards/dztech/tofu/jr/v1/readme.md new file mode 100644 index 000000000000..f17b9aea900a --- /dev/null +++ b/keyboards/dztech/tofu/jr/v1/readme.md @@ -0,0 +1,22 @@ +# TOFU_JR_V1 +A customizable 65% RGB keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: TOFU_JR_V1 +* Hardware Availability: [KBDfans](https://kbdfans.com/) + +## Bootloader mode + +Enter the bootloader in 3 ways: + +* Bootmagic reset: Hold down the left top key then plug in the USB cable. +* Physical reset button: Double tap the reset button. +* Keycode in layout: Press the key mapped to QK_BOOT if it is available. + +## Making firmware + +Make example for this keyboard (after setting up your build environment): + + make dztech/tofu/jr: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/dztech/tofu/jr/v1/v1.c b/keyboards/dztech/tofu/jr/v1/v1.c index 4b7d7c957e92..474134cb5efb 100644 --- a/keyboards/dztech/tofu/jr/v1/v1.c +++ b/keyboards/dztech/tofu/jr/v1/v1.c @@ -18,7 +18,7 @@ #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = { { 1, K_12, J_12, L_12 }, { 1, K_11, J_11, L_11 }, { 1, K_10, J_10, L_10 }, diff --git a/keyboards/dztech/tofu/jr/v2/config.h b/keyboards/dztech/tofu/jr/v2/config.h new file mode 100644 index 000000000000..935a2ab4376b --- /dev/null +++ b/keyboards/dztech/tofu/jr/v2/config.h @@ -0,0 +1,24 @@ +/* Copyright 2023 DZTECH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 RGBLIGHT_DEFAULT_MODE (RGBLIGHT_EFFECT_RAINBOW_MOOD + 8) + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + + diff --git a/keyboards/dztech/tofu/jr/v2/info.json b/keyboards/dztech/tofu/jr/v2/info.json new file mode 100644 index 000000000000..6a60565b22af --- /dev/null +++ b/keyboards/dztech/tofu/jr/v2/info.json @@ -0,0 +1,124 @@ +{ + "bootloader": "rp2040", + "processor": "RP2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["GP25", "GP24", "GP23", "GP1", "GP7", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP15", "GP14", "GP13", "GP12"], + "rows": ["GP29", "GP28", "GP27", "GP26", "GP22"] + }, + "indicators": { + "caps_lock": "GP11" + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x1425", + "vid": "0x445A" + }, + "rgblight": { + "brightness_steps": 10, + "hue_steps": 10, + "led_count": 16, + "saturation_steps": 10, + "sleep": true, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "ws2812": { + "pin": "GP2", + "driver": "vendor" + }, + "community_layouts": ["65_ansi"], + "layouts": { + "LAYOUT_65_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "w": 2, "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1}, + {"matrix": [1, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 11], "w": 1.75, "x": 12.25, "y": 3}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + {"matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4}, + {"matrix": [4, 8], "x": 10, "y": 4}, + {"matrix": [4, 9], "x": 11, "y": 4}, + {"matrix": [4, 10], "x": 12, "y": 4}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/dztech/tofu/jr/v2/readme.md b/keyboards/dztech/tofu/jr/v2/readme.md new file mode 100644 index 000000000000..8523a3f32a18 --- /dev/null +++ b/keyboards/dztech/tofu/jr/v2/readme.md @@ -0,0 +1,22 @@ +# TOFU_JR_V2 +A customizable 65% hotswap with RGB backlight keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: TOFU_JR_V2 +* Hardware Availability: [KBDfans](https://kbdfans.com/) + +## Bootloader mode + +Enter the bootloader in 3 ways: + +* Bootmagic reset: Hold down the left top key then plug in the USB cable. +* Physical reset button: Double tap the reset button. +* Keycode in layout: Press the key mapped to QK_BOOT if it is available. + +## Making firmware + +Make example for this keyboard (after setting up your build environment): + + make dztech/tofu/jr/v2: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/dztech/tofu/jr/v2/rules.mk b/keyboards/dztech/tofu/jr/v2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/dztech/tofu/jr/v2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/dztech/tofu60/info.json b/keyboards/dztech/tofu60/info.json new file mode 100644 index 000000000000..57c57604d135 --- /dev/null +++ b/keyboards/dztech/tofu60/info.json @@ -0,0 +1,740 @@ +{ + "manufacturer": "KBDFans", + "keyboard_name": "TOFU60", + "maintainer": "moyi4681", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "GP28" + }, + "matrix_pins": { + "cols": ["GP2", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP18", "GP19", "GP20", "GP21", "GP22", "GP23"], + "rows": ["GP4", "GP3", "GP17", "GP24", "GP25"] + }, + "processor": "RP2040", + "usb": { + "device_version": "0.0.1", + "pid": "0x6071", + "vid": "0x4B42" + }, + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_hhkb", + "60_iso", + "60_iso_split_bs_rshift", + "60_iso_tsangan", + "60_tsangan_hhkb" + ], + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + { "label": "~", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2 }, + + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 }, + + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75 }, + + { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25 }, + { "label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25 } + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [2, 12], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + { "label": "~", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Del", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "Backspace", "matrix": [2, 12], "x": 14, "y": 0 }, + + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 }, + + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5 }, + { "label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7 }, + { "label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5 }, + { "label": "Ctrl", "matrix": [4, 12], "x": 12.5, "y": 4 } + ] + }, + "LAYOUT_60_iso": { + "layout": [ + { "label": "~", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2 }, + + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "@", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "~", "matrix": [1, 13], "x": 12.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2 }, + + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25 }, + { "label": "|", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75 }, + + { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "AltGr", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25 }, + { "label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25 } + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + { "label": "~", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2 }, + + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 }, + + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75 }, + + { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5 }, + { "label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7 }, + { "label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5 }, + { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5 } + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + { "label": "~", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Del", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "Backspace", "matrix": [2, 12], "x": 14, "y": 0 }, + + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 }, + + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, + + { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5 }, + { "label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7 }, + { "label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5 }, + { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5 } + ] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [2, 12], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [1, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "AltGr", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [1, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_60_iso_tsangan_split_bs_rshift": { + "layout": [ + {"label": "~", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Del", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "Backspace", "matrix": [2, 12], "x": 14, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "~", "matrix": [1, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "K47", "matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "~", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Del", "matrix": [2, 12], "x": 13, "y": 0 }, + { "label": "Backspace", "matrix": [0, 13], "x": 14, "y": 0 }, + + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 }, + + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 }, + + { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25 }, + { "label": "|", "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75 }, + { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, + + { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 }, + { "label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 }, + { "label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25 }, + { "label": "K47", "matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25 }, + { "label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25 }, + { "label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25 }, + { "label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25 }, + { "label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25 } + ] + } + } +} + diff --git a/keyboards/dztech/og60/keymaps/default/keymap.c b/keyboards/dztech/tofu60/keymaps/default/keymap.c similarity index 100% rename from keyboards/dztech/og60/keymaps/default/keymap.c rename to keyboards/dztech/tofu60/keymaps/default/keymap.c diff --git a/keyboards/dztech/og60/keymaps/via/keymap.c b/keyboards/dztech/tofu60/keymaps/via/keymap.c similarity index 100% rename from keyboards/dztech/og60/keymaps/via/keymap.c rename to keyboards/dztech/tofu60/keymaps/via/keymap.c diff --git a/keyboards/dztech/tofu60/keymaps/via/rules.mk b/keyboards/dztech/tofu60/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dztech/tofu60/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dztech/tofu60/matrix_diagram.md b/keyboards/dztech/tofu60/matrix_diagram.md new file mode 100644 index 000000000000..0bbd201945fe --- /dev/null +++ b/keyboards/dztech/tofu60/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for Dztech Tofu60 + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2C │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │1D │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ +│40 │41 │42 │47 │4A │4B │4C │4D │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌────────┐ ┌──────────┐ +│31 │ 2.25u LShift 2.75u RShift │3C │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │42 │47 │4B │4C │4D │ Tsangan/WKL/HHKB +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +``` diff --git a/keyboards/dztech/tofu60/readme.md b/keyboards/dztech/tofu60/readme.md new file mode 100644 index 000000000000..2cd4de58bf89 --- /dev/null +++ b/keyboards/dztech/tofu60/readme.md @@ -0,0 +1,22 @@ +# TOFU60 +A customizable 60% HotSwap keyboard. + +* Keyboard Maintainer: [moyi4681](https://github.com/moyi4681) +* Hardware Supported: TOFU60 +* Hardware Availability: [KBDfans](https://kbdfans.com/) + +## Bootloader mode + +Enter the bootloader in 3 ways: + +* Bootmagic reset: Hold down the left top key then plug in the USB cable. +* Physical reset button: Double tap the reset button. +* Keycode in layout: Press the key mapped to QK_BOOT if it is available. + +## Making firmware + +Make example for this keyboard (after setting up your build environment): + + make dztech/tofu60: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/users/mguterl/config.h b/keyboards/dztech/tofu60/rules.mk similarity index 100% rename from users/mguterl/config.h rename to keyboards/dztech/tofu60/rules.mk diff --git a/keyboards/eason/aeroboard/config.h b/keyboards/eason/aeroboard/config.h index ff00df878f20..2c7d4687b4df 100644 --- a/keyboards/eason/aeroboard/config.h +++ b/keyboards/eason/aeroboard/config.h @@ -3,7 +3,7 @@ #pragma once -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 /* disable debug print */ diff --git a/keyboards/eason/aeroboard/info.json b/keyboards/eason/aeroboard/info.json index 2ee29f792db8..c8046d40e4f3 100644 --- a/keyboards/eason/aeroboard/info.json +++ b/keyboards/eason/aeroboard/info.json @@ -34,7 +34,8 @@ }, "diode_direction": "COL2ROW", "processor": "STM32F103", - "bootloader": "stm32duino", + "bootloader": "uf2boot", + "board": "STM32_F103_STM32DUINO" "layouts": { "LAYOUT_7u_space": { "layout": [ diff --git a/keyboards/eco/keymaps/bcat/config.h b/keyboards/eco/keymaps/bcat/config.h deleted file mode 100644 index 1a3fd81199f3..000000000000 --- a/keyboards/eco/keymaps/bcat/config.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2020 Jonathan Rascher - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 BCAT_ORTHO_LAYERS - -/* WS2812B RGB LED strip hand wired to Elite-C. */ -#define WS2812_DI_PIN B7 -#define RGBLED_NUM 15 -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE diff --git a/keyboards/eco/keymaps/bcat/keymap.c b/keyboards/eco/keymaps/bcat/keymap.c deleted file mode 100644 index 610610f5a511..000000000000 --- a/keyboards/eco/keymaps/bcat/keymap.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2020 Jonathan Rascher - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "bcat.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // clang-format off - /* Default layer: http://www.keyboard-layout-editor.com/#/gists/2c11371c7a5f7cd08a0132631d3d3281 */ - [LAYER_DEFAULT] = LAYOUT( - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - XXXXXXX, XXXXXXX, KC_LALT, KC_LCTL, LY_LWR, KC_SPC, XXXXXXX, XXXXXXX, KC_ENT, LY_RSE, KC_RALT, KC_RGUI, XXXXXXX, XXXXXXX - ), - /* Lower layer: http://www.keyboard-layout-editor.com/#/gists/11256970dc0552886a82382ee02fa415 */ - [LAYER_LOWER] = LAYOUT( - MC_ALTT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, - KY_CSPC, KY_ZMRST, KY_ZMOUT, KY_ZMIN, KC_WBAK, KC_WFWD, _______, _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TILD, - _______, KC_APP, KC_PSCR, KC_SCRL, KC_PAUS, KC_LGUI, _______, _______, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_GRV, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - /* Raise layer: http://www.keyboard-layout-editor.com/#/gists/308a8be75e0b85902dc18db1b2546862 */ - [LAYER_RAISE] = LAYOUT( - KC_CAPS, 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_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F11, KC_DEL, - _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F12, KC_INS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - /* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21 */ - [LAYER_ADJUST] = LAYOUT( - _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EE_CLR, QK_BOOT, _______, _______, _______, _______, - _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_SPI, _______, - _______, _______, _______, KC_MUTE, _______, _______, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, _______ - ), - // clang-format on -}; diff --git a/keyboards/eco/keymaps/bcat/readme.md b/keyboards/eco/keymaps/bcat/readme.md deleted file mode 100644 index fd9e1bea7332..000000000000 --- a/keyboards/eco/keymaps/bcat/readme.md +++ /dev/null @@ -1,44 +0,0 @@ -# bcat's Eco layout - -This is a cute little 4x14 ortholinear keyboard. I've set it up using an -unsplit, ortho version of my [split 3x6 + 3 thumb -keys](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/split_3x6_3/bcat) -(Crkbd) layout, with the following changes: - -* The alpha keys are separated by an extra two columns in the middle to provide -a little more hand separation, similar to a split keyboard. - -* The top three rows of the extra middle columns feature navigation keys and -brackets/braces. I don't really use dedicated keys for these, but I had the -keycaps, so I figured I may as well put them there. - -* I have a Left Alt and Right Super key on the bottom row just like my -[Lily58](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/bcat). - -* The two keys in each bottom corner are unbound, as is the 2U spacebar in the -center of the bottom row. These keys are too inconvenient to reach, and there's -nothing really useful to bind them to anyway. - -## Default layer - -![Default layer layout](https://i.imgur.com/uRUT2cY.png) - -([KLE](http://www.keyboard-layout-editor.com/#/gists/2c11371c7a5f7cd08a0132631d3d3281)) - -## Lower layer - -![Lower layer layout](https://i.imgur.com/8SR0M9x.png) - -([KLE](http://www.keyboard-layout-editor.com/#/gists/11256970dc0552886a82382ee02fa415)) - -## Raise layer - -![Raise layer layout](https://i.imgur.com/U7KERR3.png) - -([KLE](http://www.keyboard-layout-editor.com/#/gists/308a8be75e0b85902dc18db1b2546862)) - -## Adjust layer - -![Adjust layer layout](https://i.imgur.com/63vm0ke.png) - -([KLE](http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21)) diff --git a/keyboards/eco/keymaps/bcat/rules.mk b/keyboards/eco/keymaps/bcat/rules.mk deleted file mode 100644 index 684d8e4e850e..000000000000 --- a/keyboards/eco/keymaps/bcat/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -BOOTLOADER = atmel-dfu # Elite-C - -RGBLIGHT_ENABLE = yes diff --git a/keyboards/eco/keymaps/that_canadian/keymap.c b/keyboards/eco/keymaps/that_canadian/keymap.c index 0c8b53385dfa..edd88b184ed6 100644 --- a/keyboards/eco/keymaps/that_canadian/keymap.c +++ b/keyboards/eco/keymaps/that_canadian/keymap.c @@ -124,14 +124,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef AUDIO_ENABLE - -float tone_startup[][2] = SONG(STARTUP_SOUND); float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); - -float tone_goodbye[][2] = SONG(GOODBYE_SOUND); #endif @@ -174,36 +169,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick - PLAY_SONG(tone_startup); -} - -void shutdown_user(void) -{ - PLAY_SONG(tone_goodbye); - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif diff --git a/keyboards/eek/info.json b/keyboards/eek/info.json index edcf445c326e..27441a293ea8 100644 --- a/keyboards/eek/info.json +++ b/keyboards/eek/info.json @@ -41,54 +41,5 @@ }, "processor": "atmega32u4", "bootloader": "qmk-dfu", - "community_layouts": ["split_3x5_3"], - "layouts": { - "LAYOUT_split_3x5_3": { - "layout": [ - {"x": 0, "y": 0.88}, - {"x": 1, "y": 0.38}, - {"x": 2, "y": 0}, - {"x": 3, "y": 0.38}, - {"x": 4, "y": 0.5}, - - {"x": 6, "y": 0.5}, - {"x": 7, "y": 0.38}, - {"x": 8, "y": 0}, - {"x": 9, "y": 0.38}, - {"x": 10, "y": 0.88}, - - {"x": 0, "y": 1.88}, - {"x": 1, "y": 1.38}, - {"x": 2, "y": 1}, - {"x": 3, "y": 1.38}, - {"x": 4, "y": 1.5}, - - {"x": 6, "y": 1.5}, - {"x": 7, "y": 1.38}, - {"x": 8, "y": 1}, - {"x": 9, "y": 1.38}, - {"x": 10, "y": 1.88}, - - {"x": 0, "y": 2.88}, - {"x": 1, "y": 2.38}, - {"x": 2, "y": 2}, - {"x": 3, "y": 2.38}, - {"x": 4, "y": 2.5}, - - {"x": 6, "y": 2.5}, - {"x": 7, "y": 2.38}, - {"x": 8, "y": 2}, - {"x": 9, "y": 2.38}, - {"x": 10, "y": 2.88}, - - {"x": 2, "y": 3.25}, - {"x": 3, "y": 3.38}, - {"x": 4, "y": 3.5}, - - {"x": 6, "y": 3.5}, - {"x": 7, "y": 3.38}, - {"x": 8, "y": 3.25} - ] - } - } + "community_layouts": ["split_3x5_3"] } diff --git a/keyboards/ein_60/keymaps/klackygears/config.h b/keyboards/ein_60/keymaps/klackygears/config.h deleted file mode 100644 index 91c51cb51cac..000000000000 --- a/keyboards/ein_60/keymaps/klackygears/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright 2021 klackygears - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 PERMISSIVE_HOLD -#define TAPPING_TERM 150 - - -#ifdef RGB_MATRIX_ENABLE - #define RGB_MATRIX_KEYPRESSES -#endif diff --git a/keyboards/ein_60/keymaps/klackygears/keymap.c b/keyboards/ein_60/keymaps/klackygears/keymap.c deleted file mode 100644 index ab5a31ee9f6a..000000000000 --- a/keyboards/ein_60/keymaps/klackygears/keymap.c +++ /dev/null @@ -1,175 +0,0 @@ -/* Copyright 2020 klackygears - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "klackygears.h" -#include "stdio.h" - -//For an explanation of what's going on here with the keymap wrappers, check out drashna's user folder. -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_WINBASE] = LAYOUT_wrapper( - KC_ESC, _______________DVORAK_L1___________________, KC_MUTE, _______________DVORAK_R1___________________, KC_BSPC, - AU_TOGG, _______________DVORAK_L2___________________, _______________DVORAK_R2___________________, RGB_TOG, - CK_TOGG, _______________WINDVK_L3___________________, _______________WINDVK_R3___________________, RGB_MOD, - KC_1, KC_2, KC_3, ________WIN_THUMB_L______, KC_SPC, ________WIN_THUMB_R______, KC_1, KC_2, KC_GAMER - ), - [_MACBASE] = LAYOUT_wrapper( - KC_ESC, _______________DVORAK_L1___________________, _______, _______________DVORAK_R1___________________, KC_BSPC, - RGB_TOG, _______________DVORAK_L2___________________, _______________DVORAK_R2___________________, RGB_TOG, - RGB_MOD, _______________MACDVK_L3___________________, _______________MACDVK_R3___________________, RGB_MOD, - _______, _______, _______, ________MAC_THUMB_L______, _______, ________MAC_THUMB_R______, _______, _______, _______ - ), - [_QWERTY] = LAYOUT_wrapper( - KC_ESC, _________________COLEMAK_L1________________, KC_ESC, _________________QWERTY_R1_________________, KC_BSPC, - KC_CAPS, _________________COLEMAK_L2________________, _________________QWERTY_R2_________________, KC_ENT, - KC_LSFT, _________________COLEMAK_L3________________, _________________QWERTY_R3_________________, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, _______, MO(_MNMB), MO(_SYMB), KC_SPC, MO(_SYMB), MO(_MNMB), KC_RGUI,_______, MO(_MDIA), MO(_FUNC) - ), - - //Borderlands - [_GAMER] = LAYOUT_wrapper( - KC_ESC, KC_R, KC_G, KC_W, KC_E, KC_1, _______, _________________RGB_1_____________________, KC_WINBASE, - KC_TAB, KC_V, KC_A, KC_S, KC_D, KC_2, _________________RGB_2_____________________, _______, - KC_C, KC_I, KC_F, KC_Q, KC_4, KC_3, _________________MEDIA_____________________, _______, - KC_Z, KC_X, KC_K, KC_LCTL, KC_LSFT, KC_SPC, KC_SPC, KC_F12, KC_P, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT - ), - - [_SYMB] = LAYOUT_wrapper( - _______, _________________PUNC_L1_ALT_______________, _______, _________________PUNC_R1___________________, _______, - _______, _________________PUNC_L3___________________, _________________PUNC_R2___________________, _______, - RGB_MOD, _________________PUNC_L3_ALT_______________, _________________PUNC_R3___________________, _______, - _______, _______, KC_NUM, KC_SCRL, KC_DEL, _______, _______, _______, KC_CAPS, _______, _______, _______, _______ - ), - - [_FUNC] = LAYOUT_wrapper( - _______, _____________FUNC_L1_______________________, _______, _______, _____________FUNC_1_______________, _______, - _______, ________MAC_MISSION_CTRL__________, LGUI(KC_L), _______, _____________FUNC_2_______________, _______, - RGB_MOD, _____________FUNC_L3_______________________, _______, _____________FUNC_3_______________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______ - ), - - [_MNMB] = LAYOUT_wrapper( - _______, _________________MACNAV_L1_________________, _______, _________________NUMB_R1___________________, _______, - _______, _________________MACNAV_L2_________________, _________________NUMB_R2___________________, _______, - RGB_MOD, _________________MACNAV_L3_________________, _________________NUMB_R3_MAC_______________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______, _______ - ), - - - [_NUMB] = LAYOUT_wrapper( - _______, _________________WINNAV_L1_________________, _______, _________________NUMB_R1___________________, _______, - _______, _________________WINNAV_L2_________________, _________________NUMB_R2___________________, _______, - RGB_MOD, _________________WINNAV_L3_________________, _________________NUMB_R3_WIN_______________, _______, - _______, _______, _______, TO(_WINBASE), _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______, _______ - ), - - [_MDIA] = LAYOUT_wrapper( - _______, _________________LYOUT_____________________, _______, _________________RGB_1_____________________, RGB_TOG, - _______, MU_TOGG, _______, _______, _______, CK_UP, _________________RGB_2_____________________, _______, - RGB_MOD, MU_NEXT, MU_TOGG, CK_TOGG, CK_RST, CK_DOWN, _________________MEDIA_____________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) - -}; - - -#ifdef OLED_ENABLE - - char wpm_str[10]; - -static void render_ein60_logo(void) { - static const char PROGMEM ein60_logo[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 11,251,139,139,139,139,139,139,139,139,139,139,139, 11, 15, 0,240,240, 16,240, 0,240,240, 16,240,224,192,128, 0, 0, 0, 0,240, 16,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 11,251,139,139,139,139,139,139,139,139,139,139,139,143,128, 0, 0, 0, 0,254,255, 11,251, 11, 11, 11, 11,139,203,235,123,187,219,235,251,255, 7,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 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)); - } - - - -static void render_status(void) { -//bool oled_task_user(void) { - - // Host Keyboard Layer Status - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case _WINBASE: - oled_write_P(PSTR("Base\n"), false); - break; - case _SYMB: - oled_write_P(PSTR("Symbol\n"), false); - break; - case _FUNC: - oled_write_P(PSTR("FN\n"), false); - break; - case _MNMB: - oled_write_P(PSTR("Numbpad Mac\n"), false); - break; - case _NUMB: - oled_write_P(PSTR("Numbpad\n"), false); - break; - case _MDIA: - oled_write_P(PSTR("Media\n"), false); - break; - default: - // Or use the write_ln shortcut over adding '\n' to the end of your string - oled_write_ln_P(PSTR("Undefined"), false); - } - - // Host Keyboard LED Status - led_t led_state = host_keyboard_led_state(); - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); - - - sprintf(wpm_str, "WPM: %03d", get_current_wpm()); - oled_set_cursor(1,2); - oled_write(wpm_str, false); - -} - -bool oled_task_user(void) { - - render_status(); - oled_write_ln_P(PSTR(""), false); - render_ein60_logo(); - - return false; -} - -#endif - - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { /* First encoder */ - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } else if (index == 1) { /* Second encoder */ - if (clockwise) { - tap_code(KC_DOWN); - } else { - tap_code(KC_UP); - } - } - return true; -} diff --git a/keyboards/ein_60/keymaps/klackygears/readme.md b/keyboards/ein_60/keymaps/klackygears/readme.md deleted file mode 100644 index f97a08bd0982..000000000000 --- a/keyboards/ein_60/keymaps/klackygears/readme.md +++ /dev/null @@ -1 +0,0 @@ -This is the klackygears userspace keymap for EIN_60. My userspace is heavily based on Drashna's userspace and draws a lot of features from him. diff --git a/keyboards/ein_60/keymaps/klackygears/rules.mk b/keyboards/ein_60/keymaps/klackygears/rules.mk deleted file mode 100644 index 885ab5bafed5..000000000000 --- a/keyboards/ein_60/keymaps/klackygears/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ - -# Build Options -# change yes to no to disable -ENCODER_ENABLE = yes # Enables the use of one or more encoders -WPM_ENABLE = yes # Enables the WPM counter on the OLED -RGB_MATRIX_ENABLE = yes # Enable for pretty RGB matrix effects -AUDIO_ENABLE = yes -TAP_DANCE_ENABLE = yes diff --git a/keyboards/elcantorhs/config.h b/keyboards/elcantorhs/config.h new file mode 100644 index 000000000000..ba8ae794c96f --- /dev/null +++ b/keyboards/elcantorhs/config.h @@ -0,0 +1,8 @@ +// Copyright 2021 azhizhinov (@azhizhinov) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN B6 +#define SERIAL_USART_RX_PIN B7 diff --git a/keyboards/elcantorhs/halconf.h b/keyboards/elcantorhs/halconf.h new file mode 100644 index 000000000000..12ebaa809802 --- /dev/null +++ b/keyboards/elcantorhs/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2021 azhizhinov (@azhizhinov) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#include_next diff --git a/keyboards/elcantorhs/info.json b/keyboards/elcantorhs/info.json new file mode 100644 index 000000000000..7905a1233a02 --- /dev/null +++ b/keyboards/elcantorhs/info.json @@ -0,0 +1,92 @@ +{ + "manufacturer": "azhizhinov", + "keyboard_name": "EL-CANTOR-HS", + "maintainer": "azhizhinov", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "development_board": "blackpill_f401", + "url": "https://github.com/azhizhinov/ELCANTORHS", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x415A" + }, + "matrix_pins": { + "direct": [ + ["B1", "B10", "A8", "B15", "B14", "B13"], + ["B9", "B8", "B5", "B4", "B3", "A15"], + ["A3", "A4", "A5", "A6", "A7", "B0"], + ["B12","A2", "A1", "A0", null, null] + ] + }, + "split": { + "enabled": true, + "bootmagic": { + "matrix": [4, 5] + }, + "matrix_pins": { + "right": { + "direct": [ + ["B13", "B14", "B15", "A8", "B10", "B1"], + ["A15", "B3", "B4", "B5", "B8", "B9"], + ["B0", "A7", "A6", "A5", "A4", "A3"], + ["A0", "A1", "A2", "B12", null, null] + ] + } + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0.25}, + {"matrix": [0, 2], "x": 2, "y": 0.125}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.125}, + {"matrix": [0, 5], "x": 5, "y": 0.25}, + {"matrix": [4, 0], "x": 8, "y": 0.25}, + {"matrix": [4, 1], "x": 9, "y": 0.125}, + {"matrix": [4, 2], "x": 10, "y": 0}, + {"matrix": [4, 3], "x": 11, "y": 0.125}, + {"matrix": [4, 4], "x": 12, "y": 0.25}, + {"matrix": [4, 5], "x": 13, "y": 0.25}, + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.125}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.125}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [5, 0], "x": 8, "y": 1.25}, + {"matrix": [5, 1], "x": 9, "y": 1.125}, + {"matrix": [5, 2], "x": 10, "y": 1}, + {"matrix": [5, 3], "x": 11, "y": 1.125}, + {"matrix": [5, 4], "x": 12, "y": 1.25}, + {"matrix": [5, 5], "x": 13, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 2, "y": 2.125}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.125}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + {"matrix": [6, 0], "x": 8, "y": 2.25}, + {"matrix": [6, 1], "x": 9, "y": 2.125}, + {"matrix": [6, 2], "x": 10, "y": 2}, + {"matrix": [6, 3], "x": 11, "y": 2.125}, + {"matrix": [6, 4], "x": 12, "y": 2.25}, + {"matrix": [6, 5], "x": 13, "y": 2.25}, + {"matrix": [3, 0], "x": 2.5, "y": 3}, + {"matrix": [3, 1], "x": 3.5, "y": 3.25}, + {"matrix": [3, 2], "x": 4.5, "y": 3.5}, + {"matrix": [3, 3], "x": 5.5, "y": 3.75}, + {"matrix": [7, 0], "x": 7.5, "y": 3.75}, + {"matrix": [7, 1], "x": 8.5, "y": 3.5}, + {"matrix": [7, 2], "x": 9.5, "y": 3.25}, + {"matrix": [7, 3], "x": 10.5, "y": 3} + ] + } + } +} diff --git a/keyboards/elcantorhs/keymaps/default/keymap.c b/keyboards/elcantorhs/keymaps/default/keymap.c new file mode 100644 index 000000000000..49d5e4d178ea --- /dev/null +++ b/keyboards/elcantorhs/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2021 azhizhinov (@azhizhinov) +// SPDX-License-Identifier: GPL-2.0-or-late +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC, + KC_LALT, KC_LSFT, MO(1), KC_BSPC, KC_ENT, MO(2), KC_SPC, RCTL(KC_BSPC) + ), + [1] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_UP, KC_RGHT, KC_NO, KC_HOME, KC_NO, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, KC_NO, KC_NO, KC_END, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, MO(3), KC_SPC, RCTL(KC_BSPC) + ), + [2] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_LCTL, KC_BSPC, KC_C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_X, KC_V, KC_S, KC_L, KC_NO, KC_UNDS, KC_PLUS, KC_PMNS, KC_NO, KC_NO, KC_RALT, + KC_LALT, KC_LGUI, MO(3), KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ), + [3] = LAYOUT( + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ) +}; diff --git a/keyboards/elcantorhs/keymaps/via/keymap.c b/keyboards/elcantorhs/keymaps/via/keymap.c new file mode 100644 index 000000000000..49d5e4d178ea --- /dev/null +++ b/keyboards/elcantorhs/keymaps/via/keymap.c @@ -0,0 +1,30 @@ +// Copyright 2021 azhizhinov (@azhizhinov) +// SPDX-License-Identifier: GPL-2.0-or-late +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_TAB, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC, + KC_LALT, KC_LSFT, MO(1), KC_BSPC, KC_ENT, MO(2), KC_SPC, RCTL(KC_BSPC) + ), + [1] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_UP, KC_RGHT, KC_NO, KC_HOME, KC_NO, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOWN, KC_NO, KC_NO, KC_END, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, MO(3), KC_SPC, RCTL(KC_BSPC) + ), + [2] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_LCTL, KC_BSPC, KC_C, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_LSFT, KC_X, KC_V, KC_S, KC_L, KC_NO, KC_UNDS, KC_PLUS, KC_PMNS, KC_NO, KC_NO, KC_RALT, + KC_LALT, KC_LGUI, MO(3), KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ), + [3] = LAYOUT( + KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV, + KC_LSFT, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_RALT, + KC_LALT, KC_LGUI, KC_TRNS, KC_ESC, KC_ENT, KC_TRNS, KC_SPC, RCTL(KC_BSPC) + ) +}; diff --git a/keyboards/elcantorhs/keymaps/via/rules.mk b/keyboards/elcantorhs/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/elcantorhs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/elcantorhs/mcuconf.h b/keyboards/elcantorhs/mcuconf.h new file mode 100644 index 000000000000..c56b76d8ddb9 --- /dev/null +++ b/keyboards/elcantorhs/mcuconf.h @@ -0,0 +1,8 @@ +// Copyright 2021 azhizhinov (@azhizhinov) +// SPDX-License-Identifier: GPL-2.0-or-late +#pragma once + +#include_next + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/elcantorhs/readme.md b/keyboards/elcantorhs/readme.md new file mode 100644 index 000000000000..1fd538805216 --- /dev/null +++ b/keyboards/elcantorhs/readme.md @@ -0,0 +1,30 @@ +# El Cantor HS + +![El Cantor HS](https://imagestack.de/i/905c30a38469.png) + +The El Cantor HS keyboard is a 44 key diodeless split keyboard with support for hotswap sockets, designed with simplicity in mind. Based on the popular [Cantor](https://github.com/diepala/cantor) keyboard, this keyboard features a stronger, Corne like, column stagger whilst aiming to simplify assembly and improve cost efficiency. + +* Keyboard Maintainer: [azhizhinov](https://github.com/azhizhinov) +* Hardware Supported: Blackpill STM32F401 +* Hardware Availability: https://github.com/azhizhinov/ELCANTORHS + +Make example for this keyboard (after setting up your build environment): + + make elcantorhs:default + +Flashing example for this keyboard: + + make elcantorhs:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. For the right side, hold the top right key and plug the keyboard. +* **Physical reset button**: + * Press and hold the BOOT0 button. + * Press and release the NRST button. + * Release the BOOT0 button. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/elcantorhs/rules.mk b/keyboards/elcantorhs/rules.mk new file mode 100644 index 000000000000..c6e298832137 --- /dev/null +++ b/keyboards/elcantorhs/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = usart diff --git a/keyboards/enter67/info.json b/keyboards/enter67/info.json new file mode 100644 index 000000000000..df1d7f6b5b33 --- /dev/null +++ b/keyboards/enter67/info.json @@ -0,0 +1,106 @@ +{ + "manufacturer": "KipperSun", + "keyboard_name": "enter67", + "maintainer": "KipperSun", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "B15", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["A7", "B0", "B1", "B2", "B10", "B11", "B12", "B14", "A9", "A10", "A8", "B6", "B7", "B5", "B4"], + "rows": ["A1", "A2", "A3", "A4", "A5"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0xAA66", + "vid": "0x4040" + }, + "community_layouts": ["65_ansi_blocker"], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Delete", "matrix": [0, 14], "x": 15, "y": 0}, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Home", "matrix": [1, 14], "x": 15, "y": 1}, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "k90", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "PgUp", "matrix": [2, 14], "x": 15, "y": 2}, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 1], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 2], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 3], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 4], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 5], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 6], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 7], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 8], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 9], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 10], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 11], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Up", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "PgDn", "matrix": [3, 14], "x": 15, "y": 3}, + + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "K91", "matrix": [4, 9], "x": 10, "y": 4, "w": 1.25}, + {"label": "K92", "matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Left", "matrix": [4, 12], "x": 13, "y": 4}, + {"label": "Down", "matrix": [4, 13], "x": 14, "y": 4}, + {"label": "Right", "matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/enter67/keymaps/default/keymap.c b/keyboards/enter67/keymaps/default/keymap.c new file mode 100644 index 000000000000..1f3d16c0953d --- /dev/null +++ b/keyboards/enter67/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0]=LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1]=LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/enter67/keymaps/via/keymap.c b/keyboards/enter67/keymaps/via/keymap.c new file mode 100644 index 000000000000..1f3d16c0953d --- /dev/null +++ b/keyboards/enter67/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0]=LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1]=LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) + +}; diff --git a/keyboards/enter67/keymaps/via/rules.mk b/keyboards/enter67/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/enter67/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/enter67/readme.md b/keyboards/enter67/readme.md new file mode 100644 index 000000000000..8a4890ff1d5b --- /dev/null +++ b/keyboards/enter67/readme.md @@ -0,0 +1,26 @@ +# ENTER67 - PCB + +![enter67](https://imgur.com/igF8Lurh.jpg) + +67 layout PCB, with option for stepped Caps Lock + +* Keyboard Maintainer: https://github.com/LXF-YZP +* Hardware Supported: enter67 PCB + +Make example for this keyboard (after setting up your build environment): + + make enter67:default + +Flashing example for this keyboard: + + make enter67:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/enter67/rules.mk b/keyboards/enter67/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/enter67/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/enter80/info.json b/keyboards/enter80/info.json new file mode 100644 index 000000000000..a4fe83b3ac37 --- /dev/null +++ b/keyboards/enter80/info.json @@ -0,0 +1,349 @@ +{ + "manufacturer": "KipperSun", + "keyboard_name": "ENTER80", + "maintainer": "KipperSun", + "bootloader": "stm32-dfu", + "processor": "STM32F072", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "A2", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["A1", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B11", "B12", "B13", "B14", "A8", "A9", "A10", "A15", "B3"], + "rows": ["B4", "B5", "B6", "B15", "B10", "B7"] + }, + "url": "", + "usb": { + "device_version": "0.0.1", + "pid": "0xFF65", + "vid": "0xAD80" + }, + "community_layouts": ["tkl_f13_ansi", "tkl_f13_ansi_tsangan"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [1, 13], "x": 13, "y": 1.25}, + {"matrix": [3, 14], "x": 14, "y": 1.25}, + + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [1, 10], "x": 10, "y": 1.25}, + {"matrix": [1, 11], "x": 11, "y": 1.25}, + {"matrix": [1, 12], "x": 12, "y": 1.25}, + {"matrix": [3, 14], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"matrix": [1, 16], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"matrix": [2, 16], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25}, + + {"matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_f13_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + + {"matrix": [0, 9], "x": 9.75, "y": 0}, + {"matrix": [0, 10], "x": 10.75, "y": 0}, + {"matrix": [0, 11], "x": 11.75, "y": 0}, + {"matrix": [0, 12], "x": 12.75, "y": 0}, + + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [0, 16], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [1, 12], "x": 12, "y": 1}, + {"matrix": [3, 14], "x": 13, "y": 1, "w": 2}, + + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [1, 16], "x": 17.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [2, 12], "x": 12.5, "y": 2}, + {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5}, + + {"matrix": [2, 14], "x": 15.25, "y": 2}, + {"matrix": [2, 15], "x": 16.25, "y": 2}, + {"matrix": [2, 16], "x": 17.25, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3}, + {"matrix": [3, 2], "x": 2.75, "y": 3}, + {"matrix": [3, 3], "x": 3.75, "y": 3}, + {"matrix": [3, 4], "x": 4.75, "y": 3}, + {"matrix": [3, 5], "x": 5.75, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 8.75, "y": 3}, + {"matrix": [3, 9], "x": 9.75, "y": 3}, + {"matrix": [3, 10], "x": 10.75, "y": 3}, + {"matrix": [3, 11], "x": 11.75, "y": 3}, + {"matrix": [3, 12], "x": 12.75, "y": 3, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4}, + {"matrix": [4, 7], "x": 7.25, "y": 4}, + {"matrix": [4, 8], "x": 8.25, "y": 4}, + {"matrix": [4, 9], "x": 9.25, "y": 4}, + {"matrix": [4, 10], "x": 10.25, "y": 4}, + {"matrix": [4, 11], "x": 11.25, "y": 4}, + {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 2.75}, + + {"matrix": [4, 15], "x": 16.25, "y": 4}, + + {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5}, + {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.5}, + {"matrix": [5, 6], "x": 4, "y": 5, "w": 7}, + {"matrix": [5, 11], "x": 11, "y": 5, "w": 1.5}, + {"matrix": [5, 12], "x": 12.5, "y": 5}, + {"matrix": [5, 13], "x": 13.5, "y": 5, "w": 1.5}, + + {"matrix": [5, 14], "x": 15.25, "y": 5}, + {"matrix": [5, 15], "x": 16.25, "y": 5}, + {"matrix": [5, 16], "x": 17.25, "y": 5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/enter80/keymaps/default/keymap.c b/keyboards/enter80/keymaps/default/keymap.c new file mode 100644 index 000000000000..e3bc2d652626 --- /dev/null +++ b/keyboards/enter80/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0]=LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, 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_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1]=LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/enter80/keymaps/via/keymap.c b/keyboards/enter80/keymaps/via/keymap.c new file mode 100644 index 000000000000..e3bc2d652626 --- /dev/null +++ b/keyboards/enter80/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2022 LXF-YZP(yuezp) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0]=LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, 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_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + +[1]=LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/enter80/keymaps/via/rules.mk b/keyboards/enter80/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/enter80/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/enter80/matrix_diagram.md b/keyboards/enter80/matrix_diagram.md new file mode 100644 index 000000000000..716538a4f5c7 --- /dev/null +++ b/keyboards/enter80/matrix_diagram.md @@ -0,0 +1,22 @@ +# Matrix Diagram for ENTER80 + +``` +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐┌───┬───┬───┐ +│0A ││0B │0C │0D │0E ││0F │0G │0H │0I ││0J │0K │0L │0M ││0N ││0O │0P │0Q │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ ┌───────┐ +│1A │1B │1C │1D │1E │1F │1G │1H │1I │1J │1K │1L │1M │1N │3O ││1O │1P │1Q │ │3O │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └───────┘ +│2A │2B │2C │2D │2E │2F │2G │2H │2I │2J │2K │2L │2M │2N ││2O │2P │2Q │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ +│3A │3B │3C │3D │3E │3F │3G │3H │3I │3J │3K │3L │3N │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ +│4A │4C │4D │4E │4F │4G │4H │4I │4J │4K │4L │4N │ │4P │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ +│5A │5B │5C │5G │5K │5L │5M │5N ││5O │5P │5Q │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ + +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│5A │5B │5C │5G │5L │5M │5N │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +``` \ No newline at end of file diff --git a/keyboards/enter80/readme.md b/keyboards/enter80/readme.md new file mode 100644 index 000000000000..c02001a43d80 --- /dev/null +++ b/keyboards/enter80/readme.md @@ -0,0 +1,26 @@ +# ENTER80 - PCB + +![enter80](https://i.imgur.com/rH9m5Ysh.jpg) + +80 layout PCB, With caps lock light + +* Keyboard Maintainer: https://github.com/LXF-YZP +* Hardware Supported: enter80 PCB + +Make example for this keyboard (after setting up your build environment): + + make enter80:default + +Flashing example for this keyboard: + + make enter80:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/enter80/rules.mk b/keyboards/enter80/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/enter80/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/enviousdesign/60f/info.json b/keyboards/enviousdesign/60f/info.json new file mode 100644 index 000000000000..c163ca5d6de7 --- /dev/null +++ b/keyboards/enviousdesign/60f/info.json @@ -0,0 +1,239 @@ +{ + "manufacturer": "Envious.Design", + "keyboard_name": "EnvKB 60F V1", + "maintainer": "Envious.Design", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP10", "GP9", "GP8", "GP7", "GP6", "GP5", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22", "GP26", "GP27"], + "rows": ["GP11", "GP12", "GP13", "GP14", "GP15"] + }, + "processor": "RP2040", + "url": "http://envious.design", + "usb": { + "device_version": "1.0.0", + "pid": "0xA400", + "vid": "0xE739" + }, + "community_layouts": ["60_ansi", "60_iso"], + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "1,2", "matrix": [1, 2], "x": 1.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 2.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 3.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 4.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 5.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 6.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 7.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 8.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 9.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 10.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 11.5, "y": 1}, + {"label": "1,13", "matrix": [1, 13], "x": 12.5, "y": 1}, + {"label": "1,14", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "2,2", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "2,12", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25}, + + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "3,13", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "4,3", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "4,6", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "4,13", "matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "4,14", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_60_iso": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "1,2", "matrix": [1, 2], "x": 1.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 2.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 3.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 4.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 5.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 6.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 7.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 8.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 9.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 10.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 11.5, "y": 1}, + {"label": "1,13", "matrix": [1, 13], "x": 12.5, "y": 1}, + + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "2,2", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "2,12", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "2,13", "matrix": [2, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "3,13", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "4,3", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "4,6", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "4,13", "matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "4,14", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 13, "y": 0, "w": 2}, + + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "1,2", "matrix": [1, 2], "x": 1.5, "y": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 2.5, "y": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 3.5, "y": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 4.5, "y": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 5.5, "y": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 6.5, "y": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 7.5, "y": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 8.5, "y": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 9.5, "y": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 10.5, "y": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 11.5, "y": 1}, + {"label": "1,13", "matrix": [1, 13], "x": 12.5, "y": 1}, + {"label": "1,14", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "2,2", "matrix": [2, 2], "x": 1.75, "y": 2}, + {"label": "2,3", "matrix": [2, 3], "x": 2.75, "y": 2}, + {"label": "2,4", "matrix": [2, 4], "x": 3.75, "y": 2}, + {"label": "2,5", "matrix": [2, 5], "x": 4.75, "y": 2}, + {"label": "2,6", "matrix": [2, 6], "x": 5.75, "y": 2}, + {"label": "2,7", "matrix": [2, 7], "x": 6.75, "y": 2}, + {"label": "2,8", "matrix": [2, 8], "x": 7.75, "y": 2}, + {"label": "2,9", "matrix": [2, 9], "x": 8.75, "y": 2}, + {"label": "2,10", "matrix": [2, 10], "x": 9.75, "y": 2}, + {"label": "2,11", "matrix": [2, 11], "x": 10.75, "y": 2}, + {"label": "2,12", "matrix": [2, 12], "x": 11.75, "y": 2}, + {"label": "2,13", "matrix": [2, 13], "x": 12.75, "y": 2}, + {"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 2, "w": 1.25}, + + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"label": "3,1", "matrix": [3, 1], "x": 1.25, "y": 3}, + {"label": "3,2", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "3,3", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "3,4", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "3,5", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "3,6", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "3,7", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "3,8", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "3,9", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": "3,10", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "3,11", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "3,13", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75}, + + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "4,3", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "4,6", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "4,10", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "4,13", "matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "4,14", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25} + ] + } + } +} diff --git a/keyboards/enviousdesign/60f/keymaps/default/keymap.c b/keyboards/enviousdesign/60f/keymaps/default/keymap.c new file mode 100644 index 000000000000..42f84afed7e3 --- /dev/null +++ b/keyboards/enviousdesign/60f/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(1), KC_RCTL + ), + [1] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, + QK_BOOT, KC_VOLU, KC_UP, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INSERT,KC_HOME,KC_PGUP, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_CALCULATOR,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/enviousdesign/60f/keymaps/via/keymap.c b/keyboards/enviousdesign/60f/keymaps/via/keymap.c new file mode 100644 index 000000000000..42f84afed7e3 --- /dev/null +++ b/keyboards/enviousdesign/60f/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(1), KC_RCTL + ), + [1] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, + QK_BOOT, KC_VOLU, KC_UP, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INSERT,KC_HOME,KC_PGUP, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, + KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_CALCULATOR,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_TRNS + ) +}; + diff --git a/keyboards/enviousdesign/60f/keymaps/via/rules.mk b/keyboards/enviousdesign/60f/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/enviousdesign/60f/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/enviousdesign/60f/readme.md b/keyboards/enviousdesign/60f/readme.md new file mode 100644 index 000000000000..5098f22327d6 --- /dev/null +++ b/keyboards/enviousdesign/60f/readme.md @@ -0,0 +1,31 @@ +# EnvKB 60F + +![Image of the EnvKB 60F PCB](https://i.imgur.com/c5xMEg0h.png) + + +A low cost Standard 60% Design which takes inspiration from the CFTKB Mysterium. + +* Keyboard Maintainer: [Envious-Data](https://github.com/envious-data) +* Hardware Supported: EnvKB 60F (Pi Pico) +* Hardware Availability: [GitHub](https://github.com/Envious-Data/Env-KB60F) + +Make example for this keyboard (after setting up your build environment): + + make enviousdesign/60f:default + +Flashing example for this keyboard: + + make enviousdesign/60f:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset**: Hold down the `BOOTSEL` button on the Pi Pico, then either plug the board in or press the `RESET` button. +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the pre-supplied keymaps it is on the second layer, replacing the Tab key. + +After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `RPI-RP2`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded. + diff --git a/keyboards/enviousdesign/60f/rules.mk b/keyboards/enviousdesign/60f/rules.mk new file mode 100644 index 000000000000..837f4bffb53e --- /dev/null +++ b/keyboards/enviousdesign/60f/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/enviousdesign/65m/info.json b/keyboards/enviousdesign/65m/info.json new file mode 100644 index 000000000000..232893246261 --- /dev/null +++ b/keyboards/enviousdesign/65m/info.json @@ -0,0 +1,393 @@ +{ + "manufacturer": "Envious.Design", + "keyboard_name": "EnvKB 65M", + "maintainer": "Envious.Design", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16"], + "rows": ["GP21", "GP20", "GP19", "GP18", "GP17"] + }, + "processor": "RP2040", + "url": "http://envious.design", + "usb": { + "device_version": "0.0.1", + "pid": "0xA279", + "vid": "0xE739" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 6, "y": 4, "w": 1.75}, + {"matrix": [4, 8], "x": 7.75, "y": 4, "w": 2.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4} + ] + }, + "LAYOUT_ansi_split_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 6, "y": 4, "w": 1.75}, + {"matrix": [4, 8], "x": 7.75, "y": 4, "w": 2.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4} + ] + }, + "LAYOUT_iso_split_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 15, "y": 3}, + {"matrix": [3, 16], "x": 16, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 6, "y": 4, "w": 1.75}, + {"matrix": [4, 8], "x": 7.75, "y": 4, "w": 2.25}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + {"matrix": [4, 16], "x": 16, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/enviousdesign/65m/keymaps/default/keymap.c b/keyboards/enviousdesign/65m/keymaps/default/keymap.c new file mode 100644 index 000000000000..4efa8abf9232 --- /dev/null +++ b/keyboards/enviousdesign/65m/keymaps/default/keymap.c @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_UP, KC_HOME, KC_PGUP, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN + ), + [1] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_END, KC_INS, + QK_BOOTLOADER, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_DEL + ) +}; + diff --git a/keyboards/enviousdesign/65m/keymaps/via/keymap.c b/keyboards/enviousdesign/65m/keymaps/via/keymap.c new file mode 100644 index 000000000000..4efa8abf9232 --- /dev/null +++ b/keyboards/enviousdesign/65m/keymaps/via/keymap.c @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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_UP, KC_HOME, KC_PGUP, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), MO(1), KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN + ), + [1] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_END, KC_INS, + QK_BOOTLOADER, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_DEL + ) +}; + diff --git a/keyboards/enviousdesign/65m/keymaps/via/rules.mk b/keyboards/enviousdesign/65m/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/enviousdesign/65m/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/enviousdesign/65m/readme.md b/keyboards/enviousdesign/65m/readme.md new file mode 100644 index 000000000000..76180843f329 --- /dev/null +++ b/keyboards/enviousdesign/65m/readme.md @@ -0,0 +1,30 @@ +# EnvKB 65M + +![image of EnvKB 65M PCB](https://i.imgur.com/3d76sz9h.png) + +A low cost 65% kit featuring split space and an attempt at fitting a standard keycap set. + +* Keyboard Maintainer: [Envious-Data](https://github.com/envious-data) +* Hardware Supported: EnvKB 65M (Pi Pico) +* Hardware Availability: [Mechboards](https://mechboards.co.uk/products/envkb-65-kit), [GitHub](https://github.com/Envious-Data/Env-KB65M) + +Make example for this keyboard (after setting up your build environment): + + make enviousdesign/65m:default + +Flashing example for this keyboard: + + make enviousdesign/65m:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset**: Hold down the `BOOTSEL` button on the Pi Pico, then either plug the board in or press the `RESET` button. +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the pre-supplied keymaps it is on the second layer, replacing the Control key in the bottom-left. + +After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `RPI-RP2`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded. + diff --git a/keyboards/enviousdesign/65m/rules.mk b/keyboards/enviousdesign/65m/rules.mk new file mode 100644 index 000000000000..837f4bffb53e --- /dev/null +++ b/keyboards/enviousdesign/65m/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/enviousdesign/commissions/mini1800/info.json b/keyboards/enviousdesign/commissions/mini1800/info.json new file mode 100644 index 000000000000..9303e7af2346 --- /dev/null +++ b/keyboards/enviousdesign/commissions/mini1800/info.json @@ -0,0 +1,110 @@ +{ + "manufacturer": "Envious.Design", + "keyboard_name": "Mini1800", + "maintainer": "Envious.Design", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0xE739", + "pid": "0xC001", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "num_lock": "GP8", + "caps_lock": "GP10", + } + "diode_direction": "ROW2COL", + "matrix_pins": { + "rows": ["GP4", "GP3", "GP2", "GP1", "GP0"], + "cols": ["GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP15", "GP27", "GP28", "GP5", "GP6", "GP7"] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 14.5, "y": 0 }, + { "matrix": [0, 15], "x": 15.5, "y": 0 }, + { "matrix": [0, 16], "x": 16.5, "y": 0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "w": 1.5, "x": 12.5, "y": 1 }, + { "matrix": [1, 14], "x": 14.5, "y": 1 }, + { "matrix": [1, 15], "x": 15.5, "y": 1 }, + { "matrix": [1, 16], "x": 16.5, "y": 1 }, + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "w": 1.75, "x": 11.75, "y": 2 }, + { "matrix": [2, 14], "x": 14.5, "y": 2 }, + { "matrix": [2, 15], "x": 15.5, "y": 2 }, + { "matrix": [2, 16], "x": 16.5, "y": 2 }, + { "matrix": [3, 0], "w": 2, "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 2, "y": 3 }, + { "matrix": [3, 2], "x": 3, "y": 3 }, + { "matrix": [3, 3], "x": 4, "y": 3 }, + { "matrix": [3, 4], "x": 5, "y": 3 }, + { "matrix": [3, 5], "x": 6, "y": 3 }, + { "matrix": [3, 6], "x": 7, "y": 3 }, + { "matrix": [3, 7], "x": 8, "y": 3 }, + { "matrix": [3, 8], "x": 9, "y": 3 }, + { "matrix": [3, 9], "x": 10, "y": 3 }, + { "matrix": [3, 11], "w": 1.75, "x": 11, "y": 3 }, + { "matrix": [3, 12], "x": 13, "y": 3.25 }, + { "matrix": [3, 14], "x": 14.5, "y": 3 }, + { "matrix": [3, 15], "x": 15.5, "y": 3 }, + { "matrix": [3, 16], "x": 16.5, "y": 3 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 4], "w": 2.75, "x": 3.75, "y": 4 }, + { "matrix": [4, 6], "w": 2.75, "x": 6.5, "y": 4 }, + { "matrix": [4, 8], "w": 1.25, "x": 9.25, "y": 4 }, + { "matrix": [4, 10], "w": 1.25, "x": 10.5, "y": 4 }, + { "matrix": [4, 11], "x": 12, "y": 4.25 }, + { "matrix": [4, 12], "x": 13, "y": 4.25 }, + { "matrix": [4, 13], "x": 14, "y": 4.25 }, + { "matrix": [4, 15], "x": 15.5, "y": 4 }, + { "matrix": [4, 16], "x": 16.5, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/enviousdesign/commissions/mini1800/keymaps/default/keymap.c b/keyboards/enviousdesign/commissions/mini1800/keymaps/default/keymap.c new file mode 100644 index 000000000000..c095531fe6a1 --- /dev/null +++ b/keyboards/enviousdesign/commissions/mini1800/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_PGUP, KC_PGDN, 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_BSPC, KC_7, KC_8, KC_9, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_4, KC_5, KC_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_SLSH, KC_RSFT, KC_UP, KC_1, KC_2, KC_3, + KC_LCTL, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_0, LT(1,KC_DOT) + ), + + [1] = LAYOUT( + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_HOME, KC_END, KC_MSTP, + KC_CAPS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_PAUS, KC_PSCR, KC_RBRC, KC_SLEP, KC_P7, KC_P8, KC_P9, + KC_TRNS, KC_TRNS, KC_SCRL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_P4, KC_P5, KC_P6, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUM, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_VOLU, KC_P1, KC_P2, KC_P3, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, KC_P0, KC_PDOT + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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/enviousdesign/commissions/mini1800/keymaps/via/keymap.c b/keyboards/enviousdesign/commissions/mini1800/keymaps/via/keymap.c new file mode 100644 index 000000000000..c095531fe6a1 --- /dev/null +++ b/keyboards/enviousdesign/commissions/mini1800/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_PGUP, KC_PGDN, 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_BSPC, KC_7, KC_8, KC_9, + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_4, KC_5, KC_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_SLSH, KC_RSFT, KC_UP, KC_1, KC_2, KC_3, + KC_LCTL, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_0, LT(1,KC_DOT) + ), + + [1] = LAYOUT( + KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE, KC_HOME, KC_END, KC_MSTP, + KC_CAPS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_PAUS, KC_PSCR, KC_RBRC, KC_SLEP, KC_P7, KC_P8, KC_P9, + KC_TRNS, KC_TRNS, KC_SCRL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_P4, KC_P5, KC_P6, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUM, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_VOLU, KC_P1, KC_P2, KC_P3, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, KC_P0, KC_PDOT + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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/enviousdesign/commissions/mini1800/keymaps/via/rules.mk b/keyboards/enviousdesign/commissions/mini1800/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/enviousdesign/commissions/mini1800/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/enviousdesign/commissions/mini1800/mini1800.c b/keyboards/enviousdesign/commissions/mini1800/mini1800.c new file mode 100644 index 000000000000..f35be22d1342 --- /dev/null +++ b/keyboards/enviousdesign/commissions/mini1800/mini1800.c @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "quantum.h" + +void matrix_init_user(void) { + setPinOutput(GP9); //init gpio + writePinLow(GP9); + setPinOutput(GP11); //init and turn off inverted power led + writePinHigh(GP11); +} + +//layer, capslock and numlock +layer_state_t layer_state_set_user(layer_state_t state) { + writePin(GP9, layer_state_cmp(state, 1)); + return state; +} + +bool led_update_user(led_t led_state) { + led_state.num_lock = !led_state.num_lock; + led_update_ports(led_state); + return false; +} + diff --git a/keyboards/enviousdesign/commissions/mini1800/readme.md b/keyboards/enviousdesign/commissions/mini1800/readme.md new file mode 100644 index 000000000000..874cbcec6093 --- /dev/null +++ b/keyboards/enviousdesign/commissions/mini1800/readme.md @@ -0,0 +1,27 @@ +# mini1800 + +![mini1800](https://i.imgur.com/t55hjq8.jpeg) + +*A mini1800 layout commission keyboard for LASERman71 utilising the RP2040 MCU* + +* Keyboard Maintainer: [Adam](https://github.com/envious-data) +* Hardware Supported: *Onboard RP2040 MCU* +* Hardware Availability: *None Yet* + +Make example for this keyboard (after setting up your build environment): + + make enviousdesign/commissions/mini1800:default + +Flashing example for this keyboard: + + make enviousdesign/commissions/mini1800:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/enviousdesign/commissions/mini1800/rules.mk b/keyboards/enviousdesign/commissions/mini1800/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/enviousdesign/commissions/mini1800/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/enviousdesign/delirium/readme.md b/keyboards/enviousdesign/delirium/readme.md new file mode 100644 index 000000000000..157a960303e7 --- /dev/null +++ b/keyboards/enviousdesign/delirium/readme.md @@ -0,0 +1,32 @@ +# EnvKB DELIRIUM + +![Image of EnvKB TKL PCB](https://i.imgur.com/a7UaS4mh.png) + +A low cost standard TKL design which takes inspiration from the CFTKB Mysterium. All versions are designed for reference Pi Picos. + +* Keyboard Maintainer: [Envious-Data](https://github.com/envious-data) +* Hardware Supported: + * Delirium Prototype (`tkl/rev0`) + * Delirium (`tkl/rev1`) + * Delirium RGB (`tkl/rgb`) +* Hardware Availability: [Mechboards](https://mechboards.co.uk/products/envkb-delirium-tkl-kit), [GitHub](https://github.com/Envious-Data/Env-KB) + +Make example for this keyboard (after setting up your build environment): + + make enviousdesign/tkl/rgb:default + +Flashing example for this keyboard: + + make enviousdesign/tkl/rgb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset**: Hold down the `BOOTSEL` button on the Pi Pico, then either plug the board in or press the `RESET` button. +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the pre-supplied keymaps it is on the second layer, replacing the Esc key. + +After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `RPI-RP2`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded. diff --git a/keyboards/enviousdesign/delirium/rev0/info.json b/keyboards/enviousdesign/delirium/rev0/info.json new file mode 100644 index 000000000000..f1eb3dc59b04 --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev0/info.json @@ -0,0 +1,121 @@ +{ + "manufacturer": "Envious.Design", + "keyboard_name": "Delirium Prototype", + "maintainer": "Envious.Design", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP19", "GP18", "GP17", "GP16"], + "rows": ["GP20", "GP21", "GP22", "GP26", "GP27", "GP28"] + }, + "processor": "RP2040", + "url": "http://envious.design", + "usb": { + "device_version": "0.0.1", + "pid": "0xA100", + "vid": "0xE739" + }, + "community_layouts": ["tkl_iso"], + "layouts": { + "LAYOUT_tkl_iso": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "0,7", "matrix": [0, 7], "x": 6.5, "y": 0}, + {"label": "0,8", "matrix": [0, 8], "x": 7.5, "y": 0}, + {"label": "0,9", "matrix": [0, 9], "x": 8.5, "y": 0}, + {"label": "0,10", "matrix": [0, 10], "x": 9.5, "y": 0}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "0,13", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "0,14", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "0,15", "matrix": [0, 15], "x": 15.25, "y": 0}, + {"label": "0,16", "matrix": [0, 16], "x": 16.25, "y": 0}, + {"label": "0,17", "matrix": [0, 17], "x": 17.25, "y": 0}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.5}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.5}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.5}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.5}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.5}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.5}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.5}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.5}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.5}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.5}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.5}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.5}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.5}, + {"label": "1,14", "matrix": [1, 14], "x": 13, "y": 1.5, "w": 2}, + {"label": "1,15", "matrix": [1, 15], "x": 15.25, "y": 1.5}, + {"label": "1,16", "matrix": [1, 16], "x": 16.25, "y": 1.5}, + {"label": "1,17", "matrix": [1, 17], "x": 17.25, "y": 1.5}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "2,2", "matrix": [2, 2], "x": 1.5, "y": 2.5}, + {"label": "2,3", "matrix": [2, 3], "x": 2.5, "y": 2.5}, + {"label": "2,4", "matrix": [2, 4], "x": 3.5, "y": 2.5}, + {"label": "2,5", "matrix": [2, 5], "x": 4.5, "y": 2.5}, + {"label": "2,6", "matrix": [2, 6], "x": 5.5, "y": 2.5}, + {"label": "2,7", "matrix": [2, 7], "x": 6.5, "y": 2.5}, + {"label": "2,8", "matrix": [2, 8], "x": 7.5, "y": 2.5}, + {"label": "2,9", "matrix": [2, 9], "x": 8.5, "y": 2.5}, + {"label": "2,10", "matrix": [2, 10], "x": 9.5, "y": 2.5}, + {"label": "2,11", "matrix": [2, 11], "x": 10.5, "y": 2.5}, + {"label": "2,12", "matrix": [2, 12], "x": 11.5, "y": 2.5}, + {"label": "2,13", "matrix": [2, 13], "x": 12.5, "y": 2.5}, + {"label": "2,15", "matrix": [2, 15], "x": 15.25, "y": 2.5}, + {"label": "2,16", "matrix": [2, 16], "x": 16.25, "y": 2.5}, + {"label": "2,17", "matrix": [2, 17], "x": 17.25, "y": 2.5}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "3,2", "matrix": [3, 2], "x": 1.75, "y": 3.5}, + {"label": "3,3", "matrix": [3, 3], "x": 2.75, "y": 3.5}, + {"label": "3,4", "matrix": [3, 4], "x": 3.75, "y": 3.5}, + {"label": "3,5", "matrix": [3, 5], "x": 4.75, "y": 3.5}, + {"label": "3,6", "matrix": [3, 6], "x": 5.75, "y": 3.5}, + {"label": "3,7", "matrix": [3, 7], "x": 6.75, "y": 3.5}, + {"label": "3,8", "matrix": [3, 8], "x": 7.75, "y": 3.5}, + {"label": "3,9", "matrix": [3, 9], "x": 8.75, "y": 3.5}, + {"label": "3,10", "matrix": [3, 10], "x": 9.75, "y": 3.5}, + {"label": "3,11", "matrix": [3, 11], "x": 10.75, "y": 3.5}, + {"label": "3,12", "matrix": [3, 12], "x": 11.75, "y": 3.5}, + {"label": "3,13", "matrix": [3, 13], "x": 12.75, "y": 3.5}, + {"label": "3,14", "matrix": [2, 14], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4.5}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.5}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.5}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.5}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.5}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.5}, + {"label": "4,13", "matrix": [4, 13], "x": 12.25, "y": 4.5, "w": 2.75}, + {"label": "4,16", "matrix": [4, 16], "x": 16.25, "y": 4.5}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "5,1", "matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "5,3", "matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": "5,6", "matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "5,10", "matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "5,11", "matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "5,13", "matrix": [5, 13], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "5,14", "matrix": [5, 14], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "5,15", "matrix": [5, 15], "x": 15.25, "y": 5.5}, + {"label": "5,16", "matrix": [5, 16], "x": 16.25, "y": 5.5}, + {"label": "5,17", "matrix": [5, 17], "x": 17.25, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/enviousdesign/delirium/rev0/keymaps/default/keymap.c b/keyboards/enviousdesign/delirium/rev0/keymaps/default/keymap.c new file mode 100644 index 000000000000..1e0e273fa42a --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev0/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_tkl_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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, + 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_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_iso( + QK_BOOTLOADER, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MUTE, KC_VOLD, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/enviousdesign/delirium/rev0/rules.mk b/keyboards/enviousdesign/delirium/rev0/rules.mk new file mode 100644 index 000000000000..837f4bffb53e --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev0/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/enviousdesign/delirium/rev1/info.json b/keyboards/enviousdesign/delirium/rev1/info.json new file mode 100644 index 000000000000..e548d0281417 --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev1/info.json @@ -0,0 +1,305 @@ +{ + "manufacturer": "Envious.Design", + "keyboard_name": "Delirium", + "maintainer": "Envious.Design", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP19", "GP18", "GP17", "GP16"], + "rows": ["GP20", "GP21", "GP22", "GP26", "GP27", "GP28"] + }, + "processor": "RP2040", + "url": "http://envious.design", + "usb": { + "device_version": "1.0.0", + "pid": "0xA500", + "vid": "0xE739" + }, + "community_layouts": ["tkl_ansi", "tkl_iso"], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "F5", "matrix": [0, 7], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 9], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 10], "x": 9.5, "y": 0}, + {"label": "F9", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "PrtSc", "matrix": [0, 15], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "matrix": [0, 16], "x": 16.25, "y": 0}, + {"label": "Pause", "matrix": [0, 17], "x": 17.25, "y": 0}, + {"label": "\u00ac", "matrix": [1, 0], "x": 0, "y": 1.5}, + {"label": "!", "matrix": [1, 1], "x": 1, "y": 1.5}, + {"label": "\"", "matrix": [1, 2], "x": 2, "y": 1.5}, + {"label": "\u00a3", "matrix": [1, 3], "x": 3, "y": 1.5}, + {"label": "$", "matrix": [1, 4], "x": 4, "y": 1.5}, + {"label": "%", "matrix": [1, 5], "x": 5, "y": 1.5}, + {"label": "^", "matrix": [1, 6], "x": 6, "y": 1.5}, + {"label": "&", "matrix": [1, 7], "x": 7, "y": 1.5}, + {"label": "*", "matrix": [1, 8], "x": 8, "y": 1.5}, + {"label": "(", "matrix": [1, 9], "x": 9, "y": 1.5}, + {"label": ")", "matrix": [1, 10], "x": 10, "y": 1.5}, + {"label": "_", "matrix": [1, 11], "x": 11, "y": 1.5}, + {"label": "+", "matrix": [1, 12], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 14], "x": 13, "y": 1.5, "w": 2}, + {"label": "Insert", "matrix": [1, 15], "x": 15.25, "y": 1.5}, + {"label": "Home", "matrix": [1, 16], "x": 16.25, "y": 1.5}, + {"label": "PgUp", "matrix": [1, 17], "x": 17.25, "y": 1.5}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [2, 2], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [2, 3], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [2, 4], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [2, 5], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [2, 6], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [2, 7], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [2, 8], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [2, 9], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [2, 10], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [2, 11], "x": 10.5, "y": 2.5}, + {"label": "{", "matrix": [2, 12], "x": 11.5, "y": 2.5}, + {"label": "}", "matrix": [2, 13], "x": 12.5, "y": 2.5}, + {"label": "|", "matrix": [2, 14], "x": 13.5, "y": 2.5, "w": 1.5}, + {"label": "Delete", "matrix": [2, 15], "x": 15.25, "y": 2.5}, + {"label": "End", "matrix": [2, 16], "x": 16.25, "y": 2.5}, + {"label": "PgDn", "matrix": [2, 17], "x": 17.25, "y": 2.5}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "A", "matrix": [3, 2], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [3, 3], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [3, 4], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [3, 5], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [3, 6], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [3, 7], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [3, 8], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [3, 9], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [3, 10], "x": 9.75, "y": 3.5}, + {"label": ":", "matrix": [3, 11], "x": 10.75, "y": 3.5}, + {"label": "@", "matrix": [3, 12], "x": 11.75, "y": 3.5}, + {"label": "~", "matrix": [3, 13], "x": 12.75, "y": 3.5}, + {"label": "Enter", "matrix": [3, 14], "x": 13.75, "y": 3.5, "w": 1.25}, + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "|", "matrix": [4, 1], "x": 1.25, "y": 4.5}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.5}, + {"label": "<", "matrix": [4, 9], "x": 9.25, "y": 4.5}, + {"label": ">", "matrix": [4, 10], "x": 10.25, "y": 4.5}, + {"label": "?", "matrix": [4, 11], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.5, "w": 2.75}, + {"label": "\u2191", "matrix": [4, 16], "x": 16.25, "y": 4.5}, + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "AltGr", "matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "Menu", "matrix": [5, 13], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "Ctrl", "matrix": [5, 14], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "\u2190", "matrix": [5, 15], "x": 15.25, "y": 5.5}, + {"label": "\u2193", "matrix": [5, 16], "x": 16.25, "y": 5.5}, + {"label": "\u2192", "matrix": [5, 17], "x": 17.25, "y": 5.5} + ] + }, + "LAYOUT_tkl_ansi": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "F5", "matrix": [0, 7], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 9], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 10], "x": 9.5, "y": 0}, + {"label": "F9", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "PrtSc", "matrix": [0, 15], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "matrix": [0, 16], "x": 16.25, "y": 0}, + {"label": "Pause", "matrix": [0, 17], "x": 17.25, "y": 0}, + {"label": "\u00ac", "matrix": [1, 0], "x": 0, "y": 1.5}, + {"label": "!", "matrix": [1, 1], "x": 1, "y": 1.5}, + {"label": "\"", "matrix": [1, 2], "x": 2, "y": 1.5}, + {"label": "\u00a3", "matrix": [1, 3], "x": 3, "y": 1.5}, + {"label": "$", "matrix": [1, 4], "x": 4, "y": 1.5}, + {"label": "%", "matrix": [1, 5], "x": 5, "y": 1.5}, + {"label": "^", "matrix": [1, 6], "x": 6, "y": 1.5}, + {"label": "&", "matrix": [1, 7], "x": 7, "y": 1.5}, + {"label": "*", "matrix": [1, 8], "x": 8, "y": 1.5}, + {"label": "(", "matrix": [1, 9], "x": 9, "y": 1.5}, + {"label": ")", "matrix": [1, 10], "x": 10, "y": 1.5}, + {"label": "_", "matrix": [1, 11], "x": 11, "y": 1.5}, + {"label": "+", "matrix": [1, 12], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 14], "x": 13, "y": 1.5, "w": 2}, + {"label": "Insert", "matrix": [1, 15], "x": 15.25, "y": 1.5}, + {"label": "Home", "matrix": [1, 16], "x": 16.25, "y": 1.5}, + {"label": "PgUp", "matrix": [1, 17], "x": 17.25, "y": 1.5}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [2, 2], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [2, 3], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [2, 4], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [2, 5], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [2, 6], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [2, 7], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [2, 8], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [2, 9], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [2, 10], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [2, 11], "x": 10.5, "y": 2.5}, + {"label": "{", "matrix": [2, 12], "x": 11.5, "y": 2.5}, + {"label": "}", "matrix": [2, 13], "x": 12.5, "y": 2.5}, + {"label": "|", "matrix": [2, 14], "x": 13.5, "y": 2.5, "w": 1.5}, + {"label": "Delete", "matrix": [2, 15], "x": 15.25, "y": 2.5}, + {"label": "End", "matrix": [2, 16], "x": 16.25, "y": 2.5}, + {"label": "PgDn", "matrix": [2, 17], "x": 17.25, "y": 2.5}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "A", "matrix": [3, 2], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [3, 3], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [3, 4], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [3, 5], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [3, 6], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [3, 7], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [3, 8], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [3, 9], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [3, 10], "x": 9.75, "y": 3.5}, + {"label": ":", "matrix": [3, 11], "x": 10.75, "y": 3.5}, + {"label": "@", "matrix": [3, 12], "x": 11.75, "y": 3.5}, + {"label": "Enter", "matrix": [3, 14], "x": 12.75, "y": 3.5, "w": 2.25}, + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.5}, + {"label": "<", "matrix": [4, 9], "x": 9.25, "y": 4.5}, + {"label": ">", "matrix": [4, 10], "x": 10.25, "y": 4.5}, + {"label": "?", "matrix": [4, 11], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.5, "w": 2.75}, + {"label": "\u2191", "matrix": [4, 16], "x": 16.25, "y": 4.5}, + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "AltGr", "matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "Menu", "matrix": [5, 13], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "Ctrl", "matrix": [5, 14], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "\u2190", "matrix": [5, 15], "x": 15.25, "y": 5.5}, + {"label": "\u2193", "matrix": [5, 16], "x": 16.25, "y": 5.5}, + {"label": "\u2192", "matrix": [5, 17], "x": 17.25, "y": 5.5} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "F5", "matrix": [0, 7], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 8], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 9], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 10], "x": 9.5, "y": 0}, + {"label": "F9", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 14], "x": 14, "y": 0}, + {"label": "PrtSc", "matrix": [0, 15], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "matrix": [0, 16], "x": 16.25, "y": 0}, + {"label": "Pause", "matrix": [0, 17], "x": 17.25, "y": 0}, + {"label": "\u00ac", "matrix": [1, 0], "x": 0, "y": 1.5}, + {"label": "!", "matrix": [1, 1], "x": 1, "y": 1.5}, + {"label": "\"", "matrix": [1, 2], "x": 2, "y": 1.5}, + {"label": "\u00a3", "matrix": [1, 3], "x": 3, "y": 1.5}, + {"label": "$", "matrix": [1, 4], "x": 4, "y": 1.5}, + {"label": "%", "matrix": [1, 5], "x": 5, "y": 1.5}, + {"label": "^", "matrix": [1, 6], "x": 6, "y": 1.5}, + {"label": "&", "matrix": [1, 7], "x": 7, "y": 1.5}, + {"label": "*", "matrix": [1, 8], "x": 8, "y": 1.5}, + {"label": "(", "matrix": [1, 9], "x": 9, "y": 1.5}, + {"label": ")", "matrix": [1, 10], "x": 10, "y": 1.5}, + {"label": "_", "matrix": [1, 11], "x": 11, "y": 1.5}, + {"label": "+", "matrix": [1, 12], "x": 12, "y": 1.5}, + {"label": "Backspace", "matrix": [1, 14], "x": 13, "y": 1.5, "w": 2}, + {"label": "Insert", "matrix": [1, 15], "x": 15.25, "y": 1.5}, + {"label": "Home", "matrix": [1, 16], "x": 16.25, "y": 1.5}, + {"label": "PgUp", "matrix": [1, 17], "x": 17.25, "y": 1.5}, + {"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "Q", "matrix": [2, 2], "x": 1.5, "y": 2.5}, + {"label": "W", "matrix": [2, 3], "x": 2.5, "y": 2.5}, + {"label": "E", "matrix": [2, 4], "x": 3.5, "y": 2.5}, + {"label": "R", "matrix": [2, 5], "x": 4.5, "y": 2.5}, + {"label": "T", "matrix": [2, 6], "x": 5.5, "y": 2.5}, + {"label": "Y", "matrix": [2, 7], "x": 6.5, "y": 2.5}, + {"label": "U", "matrix": [2, 8], "x": 7.5, "y": 2.5}, + {"label": "I", "matrix": [2, 9], "x": 8.5, "y": 2.5}, + {"label": "O", "matrix": [2, 10], "x": 9.5, "y": 2.5}, + {"label": "P", "matrix": [2, 11], "x": 10.5, "y": 2.5}, + {"label": "{", "matrix": [2, 12], "x": 11.5, "y": 2.5}, + {"label": "}", "matrix": [2, 13], "x": 12.5, "y": 2.5}, + {"label": "Delete", "matrix": [2, 15], "x": 15.25, "y": 2.5}, + {"label": "End", "matrix": [2, 16], "x": 16.25, "y": 2.5}, + {"label": "PgDn", "matrix": [2, 17], "x": 17.25, "y": 2.5}, + {"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "A", "matrix": [3, 2], "x": 1.75, "y": 3.5}, + {"label": "S", "matrix": [3, 3], "x": 2.75, "y": 3.5}, + {"label": "D", "matrix": [3, 4], "x": 3.75, "y": 3.5}, + {"label": "F", "matrix": [3, 5], "x": 4.75, "y": 3.5}, + {"label": "G", "matrix": [3, 6], "x": 5.75, "y": 3.5}, + {"label": "H", "matrix": [3, 7], "x": 6.75, "y": 3.5}, + {"label": "J", "matrix": [3, 8], "x": 7.75, "y": 3.5}, + {"label": "K", "matrix": [3, 9], "x": 8.75, "y": 3.5}, + {"label": "L", "matrix": [3, 10], "x": 9.75, "y": 3.5}, + {"label": ":", "matrix": [3, 11], "x": 10.75, "y": 3.5}, + {"label": "@", "matrix": [3, 12], "x": 11.75, "y": 3.5}, + {"label": "~", "matrix": [3, 13], "x": 12.75, "y": 3.5}, + {"label": "Enter", "matrix": [3, 14], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "|", "matrix": [4, 1], "x": 1.25, "y": 4.5}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.5}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.5}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.5}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.5}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.5}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.5}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.5}, + {"label": "<", "matrix": [4, 9], "x": 9.25, "y": 4.5}, + {"label": ">", "matrix": [4, 10], "x": 10.25, "y": 4.5}, + {"label": "?", "matrix": [4, 11], "x": 11.25, "y": 4.5}, + {"label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.5, "w": 2.75}, + {"label": "\u2191", "matrix": [4, 16], "x": 16.25, "y": 4.5}, + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "Alt", "matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": "Space", "matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "AltGr", "matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "Win", "matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "Menu", "matrix": [5, 13], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "Ctrl", "matrix": [5, 14], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "\u2190", "matrix": [5, 15], "x": 15.25, "y": 5.5}, + {"label": "\u2193", "matrix": [5, 16], "x": 16.25, "y": 5.5}, + {"label": "\u2192", "matrix": [5, 17], "x": 17.25, "y": 5.5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/enviousdesign/delirium/rev1/keymaps/default/keymap.c b/keyboards/enviousdesign/delirium/rev1/keymaps/default/keymap.c new file mode 100644 index 000000000000..02a2b616efba --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev1/keymaps/default/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOTLOADER, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MUTE, KC_VOLD, KC_VOLU, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_EXEC, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/enviousdesign/delirium/rev1/keymaps/via/keymap.c b/keyboards/enviousdesign/delirium/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..02a2b616efba --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev1/keymaps/via/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + QK_BOOTLOADER, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MUTE, KC_VOLD, KC_VOLU, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_APP, KC_TRNS, KC_EXEC, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/enviousdesign/delirium/rev1/keymaps/via/rules.mk b/keyboards/enviousdesign/delirium/rev1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/enviousdesign/delirium/rev1/rules.mk b/keyboards/enviousdesign/delirium/rev1/rules.mk new file mode 100644 index 000000000000..837f4bffb53e --- /dev/null +++ b/keyboards/enviousdesign/delirium/rev1/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/enviousdesign/delirium/rgb/info.json b/keyboards/enviousdesign/delirium/rgb/info.json new file mode 100644 index 000000000000..ad7d45d3cf75 --- /dev/null +++ b/keyboards/enviousdesign/delirium/rgb/info.json @@ -0,0 +1,239 @@ +{ + "manufacturer": "Envious.Design", + "keyboard_name": "Delirium RGB", + "maintainer": "Envious.Design", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP19", "GP18", "GP17", "GP16"], + "rows": ["GP20", "GP21", "GP22", "GP26", "GP27", "GP28"] + }, + "processor": "RP2040", + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 64, + "animations": { + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "raindrops": true, + "typing_heatmap": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "multisplash": true + }, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 26, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 39, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 52, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 65, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 84, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 97, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 110, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 123, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 143, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 156, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 169, "y": 0, "flags": 4}, + {"matrix": [0, 14], "x": 182, "y": 0, "flags": 4}, + {"matrix": [0, 15], "x": 198, "y": 0, "flags": 4}, + {"matrix": [0, 16], "x": 211, "y": 0, "flags": 4}, + {"matrix": [0, 17], "x": 224, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 17, "flags": 4}, + {"matrix": [1, 1], "x": 13, "y": 17, "flags": 4}, + {"matrix": [1, 2], "x": 26, "y": 17, "flags": 4}, + {"matrix": [1, 3], "x": 39, "y": 17, "flags": 4}, + {"matrix": [1, 4], "x": 52, "y": 17, "flags": 4}, + {"matrix": [1, 5], "x": 65, "y": 17, "flags": 4}, + {"matrix": [1, 6], "x": 78, "y": 17, "flags": 4}, + {"matrix": [1, 7], "x": 91, "y": 17, "flags": 4}, + {"matrix": [1, 8], "x": 104, "y": 17, "flags": 4}, + {"matrix": [1, 9], "x": 117, "y": 17, "flags": 4}, + {"matrix": [1, 10], "x": 130, "y": 17, "flags": 4}, + {"matrix": [1, 11], "x": 143, "y": 17, "flags": 4}, + {"matrix": [1, 12], "x": 156, "y": 17, "flags": 4}, + {"matrix": [1, 14], "x": 175, "y": 17, "flags": 4}, + {"matrix": [1, 15], "x": 198, "y": 17, "flags": 4}, + {"matrix": [1, 16], "x": 211, "y": 17, "flags": 4}, + {"matrix": [1, 17], "x": 224, "y": 17, "flags": 4}, + {"matrix": [2, 0], "x": 3, "y": 29, "flags": 4}, + {"matrix": [2, 2], "x": 19, "y": 29, "flags": 4}, + {"matrix": [2, 3], "x": 32, "y": 29, "flags": 4}, + {"matrix": [2, 4], "x": 45, "y": 29, "flags": 4}, + {"matrix": [2, 5], "x": 58, "y": 29, "flags": 4}, + {"matrix": [2, 6], "x": 71, "y": 29, "flags": 4}, + {"matrix": [2, 7], "x": 84, "y": 29, "flags": 4}, + {"matrix": [2, 8], "x": 97, "y": 29, "flags": 4}, + {"matrix": [2, 9], "x": 110, "y": 29, "flags": 4}, + {"matrix": [2, 10], "x": 123, "y": 29, "flags": 4}, + {"matrix": [2, 11], "x": 136, "y": 29, "flags": 4}, + {"matrix": [2, 12], "x": 149, "y": 29, "flags": 4}, + {"matrix": [2, 13], "x": 162, "y": 29, "flags": 4}, + {"matrix": [3, 14], "x": 175, "y": 29, "flags": 4}, + {"matrix": [2, 15], "x": 198, "y": 29, "flags": 4}, + {"matrix": [2, 16], "x": 211, "y": 29, "flags": 4}, + {"matrix": [2, 17], "x": 224, "y": 29, "flags": 4}, + {"matrix": [3, 0], "x": 5, "y": 41, "flags": 8}, + {"matrix": [3, 2], "x": 23, "y": 41, "flags": 4}, + {"matrix": [3, 3], "x": 36, "y": 41, "flags": 4}, + {"matrix": [3, 4], "x": 49, "y": 41, "flags": 4}, + {"matrix": [3, 5], "x": 62, "y": 41, "flags": 4}, + {"matrix": [3, 6], "x": 75, "y": 41, "flags": 4}, + {"matrix": [3, 7], "x": 88, "y": 41, "flags": 4}, + {"matrix": [3, 8], "x": 101, "y": 41, "flags": 4}, + {"matrix": [3, 9], "x": 114, "y": 41, "flags": 4}, + {"matrix": [3, 10], "x": 127, "y": 41, "flags": 4}, + {"matrix": [3, 11], "x": 140, "y": 41, "flags": 4}, + {"matrix": [3, 12], "x": 153, "y": 41, "flags": 4}, + {"matrix": [3, 13], "x": 166, "y": 41, "flags": 4}, + {"matrix": [4, 0], "x": 2, "y": 52, "flags": 4}, + {"matrix": [4, 1], "x": 16, "y": 52, "flags": 4}, + {"matrix": [4, 2], "x": 29, "y": 52, "flags": 4}, + {"matrix": [4, 3], "x": 42, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 55, "y": 52, "flags": 4}, + {"matrix": [4, 5], "x": 68, "y": 52, "flags": 4}, + {"matrix": [4, 6], "x": 81, "y": 52, "flags": 4}, + {"matrix": [4, 7], "x": 94, "y": 52, "flags": 4}, + {"matrix": [4, 8], "x": 107, "y": 52, "flags": 4}, + {"matrix": [4, 9], "x": 120, "y": 52, "flags": 4}, + {"matrix": [4, 10], "x": 133, "y": 52, "flags": 4}, + {"matrix": [4, 11], "x": 146, "y": 52, "flags": 4}, + {"matrix": [4, 13], "x": 170, "y": 52, "flags": 4}, + {"matrix": [4, 16], "x": 211, "y": 52, "flags": 4}, + {"matrix": [5, 0], "x": 2, "y": 64, "flags": 4}, + {"matrix": [5, 1], "x": 18, "y": 64, "flags": 4}, + {"matrix": [5, 3], "x": 34, "y": 64, "flags": 4}, + {"matrix": [5, 6], "x": 83, "y": 64, "flags": 4}, + {"matrix": [5, 10], "x": 131, "y": 64, "flags": 4}, + {"matrix": [5, 11], "x": 148, "y": 64, "flags": 4}, + {"matrix": [5, 13], "x": 164, "y": 64, "flags": 4}, + {"matrix": [5, 14], "x": 180, "y": 64, "flags": 4}, + {"matrix": [5, 15], "x": 198, "y": 64, "flags": 4}, + {"matrix": [5, 16], "x": 211, "y": 64, "flags": 4}, + {"matrix": [5, 17], "x": 224, "y": 64, "flags": 4} + ] + }, + "url": "http://envious.design", + "usb": { + "device_version": "1.0.0", + "pid": "0xA400", + "vid": "0xE739" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP0" + }, + "community_layouts": ["tkl_iso"], + "layouts": { + "LAYOUT_tkl_iso": { + "layout": [ + {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0, "w": 1}, + {"label": "0,2", "matrix": [0, 2], "x": 2, "y": 0, "w": 1}, + {"label": "0,3", "matrix": [0, 3], "x": 3, "y": 0, "w": 1}, + {"label": "0,4", "matrix": [0, 4], "x": 4, "y": 0, "w": 1}, + {"label": "0,5", "matrix": [0, 5], "x": 5, "y": 0, "w": 1}, + {"label": "0,7", "matrix": [0, 7], "x": 6.5, "y": 0, "w": 1}, + {"label": "0,8", "matrix": [0, 8], "x": 7.5, "y": 0, "w": 1}, + {"label": "0,9", "matrix": [0, 9], "x": 8.5, "y": 0, "w": 1}, + {"label": "0,10", "matrix": [0, 10], "x": 9.5, "y": 0, "w": 1}, + {"label": "0,11", "matrix": [0, 11], "x": 11, "y": 0, "w": 1}, + {"label": "0,12", "matrix": [0, 12], "x": 12, "y": 0, "w": 1}, + {"label": "0,13", "matrix": [0, 13], "x": 13, "y": 0, "w": 1}, + {"label": "0,14", "matrix": [0, 14], "x": 14, "y": 0, "w": 1}, + {"label": "0,15", "matrix": [0, 15], "x": 15.25, "y": 0, "w": 1}, + {"label": "0,16", "matrix": [0, 16], "x": 16.25, "y": 0, "w": 1}, + {"label": "0,17", "matrix": [0, 17], "x": 17.25, "y": 0, "w": 1}, + {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.5, "w": 1}, + {"label": "1,1", "matrix": [1, 1], "x": 1, "y": 1.5, "w": 1}, + {"label": "1,2", "matrix": [1, 2], "x": 2, "y": 1.5, "w": 1}, + {"label": "1,3", "matrix": [1, 3], "x": 3, "y": 1.5, "w": 1}, + {"label": "1,4", "matrix": [1, 4], "x": 4, "y": 1.5, "w": 1}, + {"label": "1,5", "matrix": [1, 5], "x": 5, "y": 1.5, "w": 1}, + {"label": "1,6", "matrix": [1, 6], "x": 6, "y": 1.5, "w": 1}, + {"label": "1,7", "matrix": [1, 7], "x": 7, "y": 1.5, "w": 1}, + {"label": "1,8", "matrix": [1, 8], "x": 8, "y": 1.5, "w": 1}, + {"label": "1,9", "matrix": [1, 9], "x": 9, "y": 1.5, "w": 1}, + {"label": "1,10", "matrix": [1, 10], "x": 10, "y": 1.5, "w": 1}, + {"label": "1,11", "matrix": [1, 11], "x": 11, "y": 1.5, "w": 1}, + {"label": "1,12", "matrix": [1, 12], "x": 12, "y": 1.5, "w": 1}, + {"label": "1,14", "matrix": [1, 14], "x": 13, "y": 1.5, "w": 2}, + {"label": "1,15", "matrix": [1, 15], "x": 15.25, "y": 1.5, "w": 1}, + {"label": "1,16", "matrix": [1, 16], "x": 16.25, "y": 1.5, "w": 1}, + {"label": "1,17", "matrix": [1, 17], "x": 17.25, "y": 1.5, "w": 1}, + {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, + {"label": "2,2", "matrix": [2, 2], "x": 1.5, "y": 2.5, "w": 1}, + {"label": "2,3", "matrix": [2, 3], "x": 2.5, "y": 2.5, "w": 1}, + {"label": "2,4", "matrix": [2, 4], "x": 3.5, "y": 2.5, "w": 1}, + {"label": "2,5", "matrix": [2, 5], "x": 4.5, "y": 2.5, "w": 1}, + {"label": "2,6", "matrix": [2, 6], "x": 5.5, "y": 2.5, "w": 1}, + {"label": "2,7", "matrix": [2, 7], "x": 6.5, "y": 2.5, "w": 1}, + {"label": "2,8", "matrix": [2, 8], "x": 7.5, "y": 2.5, "w": 1}, + {"label": "2,9", "matrix": [2, 9], "x": 8.5, "y": 2.5, "w": 1}, + {"label": "2,10", "matrix": [2, 10], "x": 9.5, "y": 2.5, "w": 1}, + {"label": "2,11", "matrix": [2, 11], "x": 10.5, "y": 2.5, "w": 1}, + {"label": "2,12", "matrix": [2, 12], "x": 11.5, "y": 2.5, "w": 1}, + {"label": "2,13", "matrix": [2, 13], "x": 12.5, "y": 2.5, "w": 1}, + {"label": "2,15", "matrix": [2, 15], "x": 15.25, "y": 2.5, "w": 1}, + {"label": "2,16", "matrix": [2, 16], "x": 16.25, "y": 2.5, "w": 1}, + {"label": "2,17", "matrix": [2, 17], "x": 17.25, "y": 2.5, "w": 1}, + {"label": "3,0", "matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, + {"label": "3,2", "matrix": [3, 2], "x": 1.75, "y": 3.5, "w": 1}, + {"label": "3,3", "matrix": [3, 3], "x": 2.75, "y": 3.5, "w": 1}, + {"label": "3,4", "matrix": [3, 4], "x": 3.75, "y": 3.5, "w": 1}, + {"label": "3,5", "matrix": [3, 5], "x": 4.75, "y": 3.5, "w": 1}, + {"label": "3,6", "matrix": [3, 6], "x": 5.75, "y": 3.5, "w": 1}, + {"label": "3,7", "matrix": [3, 7], "x": 6.75, "y": 3.5, "w": 1}, + {"label": "3,8", "matrix": [3, 8], "x": 7.75, "y": 3.5, "w": 1}, + {"label": "3,9", "matrix": [3, 9], "x": 8.75, "y": 3.5, "w": 1}, + {"label": "3,10", "matrix": [3, 10], "x": 9.75, "y": 3.5, "w": 1}, + {"label": "3,11", "matrix": [3, 11], "x": 10.75, "y": 3.5, "w": 1}, + {"label": "3,12", "matrix": [3, 12], "x": 11.75, "y": 3.5, "w": 1}, + {"label": "3,13", "matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 1}, + {"label": "3,14", "matrix": [3, 14], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2}, + {"label": "4,0", "matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25}, + {"label": "4,1", "matrix": [4, 1], "x": 1.25, "y": 4.5, "w": 1}, + {"label": "4,2", "matrix": [4, 2], "x": 2.25, "y": 4.5, "w": 1}, + {"label": "4,3", "matrix": [4, 3], "x": 3.25, "y": 4.5, "w": 1}, + {"label": "4,4", "matrix": [4, 4], "x": 4.25, "y": 4.5, "w": 1}, + {"label": "4,5", "matrix": [4, 5], "x": 5.25, "y": 4.5, "w": 1}, + {"label": "4,6", "matrix": [4, 6], "x": 6.25, "y": 4.5, "w": 1}, + {"label": "4,7", "matrix": [4, 7], "x": 7.25, "y": 4.5, "w": 1}, + {"label": "4,8", "matrix": [4, 8], "x": 8.25, "y": 4.5, "w": 1}, + {"label": "4,9", "matrix": [4, 9], "x": 9.25, "y": 4.5, "w": 1}, + {"label": "4,10", "matrix": [4, 10], "x": 10.25, "y": 4.5, "w": 1}, + {"label": "4,11", "matrix": [4, 11], "x": 11.25, "y": 4.5, "w": 1}, + {"label": "4,13", "matrix": [4, 13], "x": 12.25, "y": 4.5, "w": 2.75}, + {"label": "4,16", "matrix": [4, 16], "x": 16.25, "y": 4.5, "w": 1}, + {"label": "5,0", "matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, + {"label": "5,1", "matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, + {"label": "5,3", "matrix": [5, 3], "x": 2.5, "y": 5.5, "w": 1.25}, + {"label": "5,6", "matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, + {"label": "5,10", "matrix": [5, 10], "x": 10, "y": 5.5, "w": 1.25}, + {"label": "5,11", "matrix": [5, 11], "x": 11.25, "y": 5.5, "w": 1.25}, + {"label": "5,13", "matrix": [5, 13], "x": 12.5, "y": 5.5, "w": 1.25}, + {"label": "5,14", "matrix": [5, 14], "x": 13.75, "y": 5.5, "w": 1.25}, + {"label": "5,15", "matrix": [5, 15], "x": 15.25, "y": 5.5, "w": 1}, + {"label": "5,16", "matrix": [5, 16], "x": 16.25, "y": 5.5, "w": 1}, + {"label": "5,17", "matrix": [5, 17], "x": 17.25, "y": 5.5, "w": 1} + ] + } + } +} diff --git a/keyboards/enviousdesign/delirium/rgb/keymaps/default/keymap.c b/keyboards/enviousdesign/delirium/rgb/keymaps/default/keymap.c new file mode 100644 index 000000000000..d791874aff03 --- /dev/null +++ b/keyboards/enviousdesign/delirium/rgb/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_tkl_iso( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_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, + 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_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_tkl_iso( + QK_BOOTLOADER, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_MUTE, KC_VOLD, KC_VOLU, + + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_SAI, RGB_VAI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MYCM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_SAD, RGB_VAD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SPD, RGB_HUD + ) +}; + diff --git a/keyboards/enviousdesign/delirium/rgb/rgb.c b/keyboards/enviousdesign/delirium/rgb/rgb.c new file mode 100644 index 000000000000..e6a3354b299e --- /dev/null +++ b/keyboards/enviousdesign/delirium/rgb/rgb.c @@ -0,0 +1,35 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { + return false; + } + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(50, 16, 16, 16); // assuming caps lock is at led #50 + } + if (host_keyboard_led_state().scroll_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(14, 16, 16, 16); // assuming scroll lock is at led #14 + } + if (get_highest_layer(layer_state) == 1) { + RGB_MATRIX_INDICATOR_SET_COLOR(83, 16, 16 ,16); + } + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/enviousdesign/delirium/rgb/rules.mk b/keyboards/enviousdesign/delirium/rgb/rules.mk new file mode 100644 index 000000000000..837f4bffb53e --- /dev/null +++ b/keyboards/enviousdesign/delirium/rgb/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/enviousdesign/mcro/readme.md b/keyboards/enviousdesign/mcro/readme.md new file mode 100644 index 000000000000..378fab8c3efa --- /dev/null +++ b/keyboards/enviousdesign/mcro/readme.md @@ -0,0 +1,30 @@ +# EnvKB MCRO + +![Image of EnvKB MCRO PCB](https://i.imgur.com/QnANWnBh.png) + +A small 12 Key macro pad for various uses + +* Keyboard Maintainer: [Envious-Data](https://github.com/envious-data) +* Hardware Supported: EnvKB MCRO (Pi Pico) +* Hardware Availability: [GitHub](https://github.com/Envious-Data/Env-MCRO) + +Make example for this keyboard (after setting up your build environment): + + make enviousdesign/mcro:default + +Flashing example for this keyboard: + + make enviousdesign/mcro:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset**: Hold down the `BOOTSEL` button on the Pi Pico, then either plug the board in or press the `RESET` button. +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create. + +After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `RPI-RP2`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded. + diff --git a/keyboards/enviousdesign/mcro/rev1/info.json b/keyboards/enviousdesign/mcro/rev1/info.json new file mode 100644 index 000000000000..fe6a4ffe77c8 --- /dev/null +++ b/keyboards/enviousdesign/mcro/rev1/info.json @@ -0,0 +1,44 @@ +{ + "manufacturer": "Envious.Design", + "keyboard_name": "MCRO", + "maintainer": "Envious.Design", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP18", "GP19", "GP20", "GP21"], + "rows": ["GP4", "GP11", "GP15"] + }, + "processor": "RP2040", + "url": "http://envious.design", + "usb": { + "device_version": "1.0.0", + "pid": "0xA300", + "vid": "0xE739" + }, + "layouts": { + "LAYOUT_ortho_3x4": { + "layout": [ + {"label": "F13", "matrix": [0, 0], "x": 0, "y": 0, "w": 1}, + {"label": "F14", "matrix": [0, 1], "x": 1, "y": 0, "w": 1}, + {"label": "F15", "matrix": [0, 2], "x": 2, "y": 0, "w": 1}, + {"label": "F16", "matrix": [0, 3], "x": 3, "y": 0, "w": 1}, + {"label": "F17", "matrix": [1, 0], "x": 0, "y": 1.25, "w": 1}, + {"label": "F18", "matrix": [1, 1], "x": 1, "y": 1.25, "w": 1}, + {"label": "F19", "matrix": [1, 2], "x": 2, "y": 1.25, "w": 1}, + {"label": "F20", "matrix": [1, 3], "x": 3, "y": 1.25, "w": 1}, + {"label": "F21", "matrix": [2, 0], "x": 0, "y": 2.5, "w": 1}, + {"label": "F22", "matrix": [2, 1], "x": 1, "y": 2.5, "w": 1}, + {"label": "F23", "matrix": [2, 2], "x": 2, "y": 2.5, "w": 1}, + {"label": "F24", "matrix": [2, 3], "x": 3, "y": 2.5, "w": 1} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/enviousdesign/mcro/rev1/keymaps/default/keymap.c b/keyboards/enviousdesign/mcro/rev1/keymaps/default/keymap.c new file mode 100644 index 000000000000..e9def4a38fcf --- /dev/null +++ b/keyboards/enviousdesign/mcro/rev1/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_ortho_3x4( + KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20, + KC_F21, KC_F22, KC_F23, KC_F24 + ) +}; + diff --git a/keyboards/enviousdesign/mcro/rev1/keymaps/via/keymap.c b/keyboards/enviousdesign/mcro/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..35b46697c141 --- /dev/null +++ b/keyboards/enviousdesign/mcro/rev1/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2022 Adam K (@Envious-Data) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_ortho_3x4( + KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20, + KC_F21, KC_F22, KC_F23, KC_F24 + ) +}; + diff --git a/keyboards/enviousdesign/mcro/rev1/keymaps/via/rules.mk b/keyboards/enviousdesign/mcro/rev1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/enviousdesign/mcro/rev1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/enviousdesign/mcro/rev1/rules.mk b/keyboards/enviousdesign/mcro/rev1/rules.mk new file mode 100644 index 000000000000..837f4bffb53e --- /dev/null +++ b/keyboards/enviousdesign/mcro/rev1/rules.mk @@ -0,0 +1 @@ +# This file is intentionally left blank diff --git a/keyboards/era/divine/readme.md b/keyboards/era/divine/readme.md index 500e20e1c3c7..cedaeafadae1 100644 --- a/keyboards/era/divine/readme.md +++ b/keyboards/era/divine/readme.md @@ -3,7 +3,11 @@ DIVINE PCB * Keyboard Maintainer: [ERA](https://github.com/eerraa) +<<<<<<< HEAD * Hardware Supported: DIVINE +======= +* Hardware Supported: DIVINE 1.0.0 PCB +>>>>>>> qmk/master * Hardware Availability: [ERA](https://github.com/eerraa) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/era/klein/config.h b/keyboards/era/klein/config.h new file mode 100644 index 000000000000..1033bc738e70 --- /dev/null +++ b/keyboards/era/klein/config.h @@ -0,0 +1,27 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* BACKLIGHT PWM */ +#define BACKLIGHT_PWM_DRIVER PWMD7 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +/* RGB Matrix */ +#define RGB_MATRIX_DEFAULT_VAL 60 +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES +#define RGB_DISABLE_WHEN_USB_SUSPENDED diff --git a/keyboards/era/klein/halconf.h b/keyboards/era/klein/halconf.h new file mode 100644 index 000000000000..f57e86df018d --- /dev/null +++ b/keyboards/era/klein/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_PWM TRUE + +#include_next \ No newline at end of file diff --git a/keyboards/era/klein/info.json b/keyboards/era/klein/info.json new file mode 100644 index 000000000000..ac08cbb8a2bc --- /dev/null +++ b/keyboards/era/klein/info.json @@ -0,0 +1,590 @@ +{ + "manufacturer": "SIRIND", + "keyboard_name": "Klein", + "maintainer": "eerraa", + "backlight": { + "levels": 5, + "pin": "GP15" + }, + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "indicators": { + "caps_lock": "GP16", + "on_state": 0, + "scroll_lock": "GP17" + }, + "matrix_pins": { + "cols": ["GP22", "GP23", "GP24", "GP25", "GP26", "GP27", "GP28", "GP29", "GP11", "GP10", "GP8", "GP7", "GP1", "GP2", "GP3", "GP4"], + "rows": ["GP18", "GP19", "GP20", "GP21", "GP14", "GP5", "GP6", "GP9", "GP13", "GP12"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true, + "pixel_fractal": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 7], "x": 4, "y": 0, "flags": 1}, + {"matrix": [0, 6], "x": 20, "y": 2, "flags": 4}, + {"matrix": [0, 5], "x": 32, "y": 2, "flags": 4}, + {"matrix": [0, 4], "x": 45, "y": 1, "flags": 4}, + {"matrix": [0, 3], "x": 58, "y": 3, "flags": 4}, + {"matrix": [0, 2], "x": 71, "y": 5, "flags": 4}, + {"matrix": [0, 1], "x": 83, "y": 8, "flags": 4}, + {"matrix": [0, 0], "x": 96, "y": 10, "flags": 4}, + {"matrix": [1, 0], "x": 129, "y": 9, "flags": 4}, + {"matrix": [1, 1], "x": 141, "y": 7, "flags": 4}, + {"matrix": [1, 2], "x": 154, "y": 4, "flags": 4}, + {"matrix": [1, 3], "x": 166, "y": 2, "flags": 4}, + {"matrix": [1, 4], "x": 179, "y": 1, "flags": 4}, + {"matrix": [1, 5], "x": 192, "y": 2, "flags": 4}, + {"matrix": [1, 6], "x": 211, "y": 2, "flags": 1}, + {"matrix": [1, 7], "x": 1, "y": 13, "flags": 1}, + {"matrix": [2, 6], "x": 21, "y": 15, "flags": 1}, + {"matrix": [2, 5], "x": 36, "y": 15, "flags": 4}, + {"matrix": [2, 4], "x": 50, "y": 15, "flags": 4}, + {"matrix": [2, 3], "x": 62, "y": 17, "flags": 4}, + {"matrix": [2, 2], "x": 75, "y": 20, "flags": 4}, + {"matrix": [2, 1], "x": 87, "y": 22, "flags": 4}, + {"matrix": [2, 0], "x": 100, "y": 24, "flags": 4}, + {"matrix": [3, 1], "x": 125, "y": 23, "flags": 4}, + {"matrix": [3, 2], "x": 137, "y": 21, "flags": 4}, + {"matrix": [3, 3], "x": 150, "y": 18, "flags": 4}, + {"matrix": [3, 4], "x": 162, "y": 16, "flags": 4}, + {"matrix": [3, 5], "x": 175, "y": 15, "flags": 4}, + {"matrix": [3, 6], "x": 188, "y": 15, "flags": 4}, + {"matrix": [4, 6], "x": 201, "y": 15, "flags": 4}, + {"matrix": [4, 5], "x": 217, "y": 15, "flags": 4}, + {"matrix": [4, 3], "x": 0, "y": 27, "flags": 1}, + {"matrix": [4, 1], "x": 18, "y": 29, "flags": 1}, + {"matrix": [0, 8], "x": 38, "y": 29, "flags": 4}, + {"matrix": [0, 9], "x": 51, "y": 29, "flags": 4}, + {"matrix": [0, 10], "x": 64, "y": 31, "flags": 4}, + {"matrix": [0, 11], "x": 76, "y": 33, "flags": 4}, + {"matrix": [0, 12], "x": 89, "y": 36, "flags": 4}, + {"matrix": [0, 13], "x": 129, "y": 36, "flags": 4}, + {"matrix": [0, 15], "x": 142, "y": 33, "flags": 4}, + {"matrix": [1, 15], "x": 154, "y": 31, "flags": 4}, + {"matrix": [1, 14], "x": 167, "y": 29, "flags": 4}, + {"matrix": [1, 13], "x": 180, "y": 29, "flags": 4}, + {"matrix": [1, 12], "x": 193, "y": 29, "flags": 4}, + {"matrix": [1, 11], "x": 213, "y": 29, "flags": 1}, + {"matrix": [1, 10], "x": 21, "y": 42, "flags": 1}, + {"matrix": [1, 9], "x": 42, "y": 42, "flags": 4}, + {"matrix": [1, 8], "x": 60, "y": 57, "flags": 4}, + {"matrix": [2, 8], "x": 67, "y": 45, "flags": 4}, + {"matrix": [2, 9], "x": 80, "y": 47, "flags": 4}, + {"matrix": [2, 10], "x": 92, "y": 50, "flags": 4}, + {"matrix": [2, 11], "x": 126, "y": 50, "flags": 4}, + {"matrix": [2, 12], "x": 138, "y": 48, "flags": 4}, + {"matrix": [2, 13], "x": 151, "y": 45, "flags": 4}, + {"matrix": [2, 15], "x": 163, "y": 43, "flags": 4}, + {"matrix": [3, 14], "x": 177, "y": 42, "flags": 4}, + {"matrix": [3, 13], "x": 189, "y": 42, "flags": 4}, + {"matrix": [3, 12], "x": 213, "y": 42, "flags": 1}, + {"matrix": [3, 11], "x": 16, "y": 55, "flags": 1}, + {"matrix": [3, 10], "x": 55, "y": 43, "flags": 1}, + {"matrix": [3, 9], "x": 76, "y": 60, "flags": 4}, + {"matrix": [3, 8], "x": 96, "y": 64, "flags": 1}, + {"matrix": [4, 9], "x": 139, "y": 61, "flags": 4}, + {"matrix": [4, 11], "x": 166, "y": 57, "flags": 1}, + {"matrix": [4, 13], "x": 189, "y": 55, "flags": 1}, + {"matrix": [4, 14], "x": 202, "y": 55, "flags": 1}, + {"matrix": [4, 15], "x": 221, "y": 55, "flags": 1} + ], + "led_count": 67 + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0003", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 0], "x": 10.75, "y": 0}, + {"matrix": [5, 1], "x": 11.75, "y": 0}, + {"matrix": [5, 2], "x": 12.75, "y": 0}, + {"matrix": [5, 3], "x": 13.75, "y": 0}, + {"matrix": [5, 4], "x": 14.75, "y": 0}, + {"matrix": [5, 5], "x": 15.75, "y": 0}, + {"matrix": [5, 6], "x": 16.75, "y": 0}, + {"matrix": [5, 7], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 0], "x": 10.25, "y": 1}, + {"matrix": [6, 1], "x": 11.25, "y": 1}, + {"matrix": [6, 2], "x": 12.25, "y": 1}, + {"matrix": [6, 3], "x": 13.25, "y": 1}, + {"matrix": [6, 4], "x": 14.25, "y": 1}, + {"matrix": [6, 5], "x": 15.25, "y": 1}, + {"matrix": [6, 6], "x": 16.25, "y": 1}, + {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 0], "x": 10.5, "y": 2}, + {"matrix": [7, 1], "x": 11.5, "y": 2}, + {"matrix": [7, 2], "x": 12.5, "y": 2}, + {"matrix": [7, 3], "x": 13.5, "y": 2}, + {"matrix": [7, 4], "x": 14.5, "y": 2}, + {"matrix": [7, 5], "x": 15.5, "y": 2}, + {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 0], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 2], "x": 12, "y": 3}, + {"matrix": [8, 3], "x": 13, "y": 3}, + {"matrix": [8, 4], "x": 14, "y": 3}, + {"matrix": [8, 5], "x": 15, "y": 3}, + {"matrix": [8, 6], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 7], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 5], "x": 8.25, "y": 4}, + {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 5], "x": 15, "y": 4}, + {"matrix": [9, 6], "x": 16, "y": 4}, + {"matrix": [9, 7], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 0], "x": 10.75, "y": 0}, + {"matrix": [5, 1], "x": 11.75, "y": 0}, + {"matrix": [5, 2], "x": 12.75, "y": 0}, + {"matrix": [5, 3], "x": 13.75, "y": 0}, + {"matrix": [5, 4], "x": 14.75, "y": 0}, + {"matrix": [5, 5], "x": 15.75, "y": 0}, + {"matrix": [5, 7], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 0], "x": 10.25, "y": 1}, + {"matrix": [6, 1], "x": 11.25, "y": 1}, + {"matrix": [6, 2], "x": 12.25, "y": 1}, + {"matrix": [6, 3], "x": 13.25, "y": 1}, + {"matrix": [6, 4], "x": 14.25, "y": 1}, + {"matrix": [6, 5], "x": 15.25, "y": 1}, + {"matrix": [6, 6], "x": 16.25, "y": 1}, + {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 0], "x": 10.5, "y": 2}, + {"matrix": [7, 1], "x": 11.5, "y": 2}, + {"matrix": [7, 2], "x": 12.5, "y": 2}, + {"matrix": [7, 3], "x": 13.5, "y": 2}, + {"matrix": [7, 4], "x": 14.5, "y": 2}, + {"matrix": [7, 5], "x": 15.5, "y": 2}, + {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 0], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 2], "x": 12, "y": 3}, + {"matrix": [8, 3], "x": 13, "y": 3}, + {"matrix": [8, 4], "x": 14, "y": 3}, + {"matrix": [8, 5], "x": 15, "y": 3}, + {"matrix": [8, 6], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 5], "x": 8.25, "y": 4}, + {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_arrow": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 0], "x": 10.75, "y": 0}, + {"matrix": [5, 1], "x": 11.75, "y": 0}, + {"matrix": [5, 2], "x": 12.75, "y": 0}, + {"matrix": [5, 3], "x": 13.75, "y": 0}, + {"matrix": [5, 4], "x": 14.75, "y": 0}, + {"matrix": [5, 5], "x": 15.75, "y": 0}, + {"matrix": [5, 7], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 0], "x": 10.25, "y": 1}, + {"matrix": [6, 1], "x": 11.25, "y": 1}, + {"matrix": [6, 2], "x": 12.25, "y": 1}, + {"matrix": [6, 3], "x": 13.25, "y": 1}, + {"matrix": [6, 4], "x": 14.25, "y": 1}, + {"matrix": [6, 5], "x": 15.25, "y": 1}, + {"matrix": [6, 6], "x": 16.25, "y": 1}, + {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 0], "x": 10.5, "y": 2}, + {"matrix": [7, 1], "x": 11.5, "y": 2}, + {"matrix": [7, 2], "x": 12.5, "y": 2}, + {"matrix": [7, 3], "x": 13.5, "y": 2}, + {"matrix": [7, 4], "x": 14.5, "y": 2}, + {"matrix": [7, 5], "x": 15.5, "y": 2}, + {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 0], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 2], "x": 12, "y": 3}, + {"matrix": [8, 3], "x": 13, "y": 3}, + {"matrix": [8, 4], "x": 14, "y": 3}, + {"matrix": [8, 5], "x": 15, "y": 3}, + {"matrix": [8, 6], "x": 16, "y": 3}, + {"matrix": [8, 7], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 5], "x": 8.25, "y": 4}, + {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 5], "x": 15, "y": 4}, + {"matrix": [9, 6], "x": 16, "y": 4}, + {"matrix": [9, 7], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 0], "x": 10.75, "y": 0}, + {"matrix": [5, 1], "x": 11.75, "y": 0}, + {"matrix": [5, 2], "x": 12.75, "y": 0}, + {"matrix": [5, 3], "x": 13.75, "y": 0}, + {"matrix": [5, 4], "x": 14.75, "y": 0}, + {"matrix": [5, 5], "x": 15.75, "y": 0}, + {"matrix": [5, 6], "x": 16.75, "y": 0}, + {"matrix": [5, 7], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 0], "x": 10.25, "y": 1}, + {"matrix": [6, 1], "x": 11.25, "y": 1}, + {"matrix": [6, 2], "x": 12.25, "y": 1}, + {"matrix": [6, 3], "x": 13.25, "y": 1}, + {"matrix": [6, 4], "x": 14.25, "y": 1}, + {"matrix": [6, 5], "x": 15.25, "y": 1}, + {"matrix": [6, 6], "x": 16.25, "y": 1}, + {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 0], "x": 10.5, "y": 2}, + {"matrix": [7, 1], "x": 11.5, "y": 2}, + {"matrix": [7, 2], "x": 12.5, "y": 2}, + {"matrix": [7, 3], "x": 13.5, "y": 2}, + {"matrix": [7, 4], "x": 14.5, "y": 2}, + {"matrix": [7, 5], "x": 15.5, "y": 2}, + {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 0], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 2], "x": 12, "y": 3}, + {"matrix": [8, 3], "x": 13, "y": 3}, + {"matrix": [8, 4], "x": 14, "y": 3}, + {"matrix": [8, 5], "x": 15, "y": 3}, + {"matrix": [8, 6], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 5], "x": 8.25, "y": 4}, + {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_split_bs_rsft": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 0], "x": 10.75, "y": 0}, + {"matrix": [5, 1], "x": 11.75, "y": 0}, + {"matrix": [5, 2], "x": 12.75, "y": 0}, + {"matrix": [5, 3], "x": 13.75, "y": 0}, + {"matrix": [5, 4], "x": 14.75, "y": 0}, + {"matrix": [5, 5], "x": 15.75, "y": 0}, + {"matrix": [5, 6], "x": 16.75, "y": 0}, + {"matrix": [5, 7], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 0], "x": 10.25, "y": 1}, + {"matrix": [6, 1], "x": 11.25, "y": 1}, + {"matrix": [6, 2], "x": 12.25, "y": 1}, + {"matrix": [6, 3], "x": 13.25, "y": 1}, + {"matrix": [6, 4], "x": 14.25, "y": 1}, + {"matrix": [6, 5], "x": 15.25, "y": 1}, + {"matrix": [6, 6], "x": 16.25, "y": 1}, + {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 0], "x": 10.5, "y": 2}, + {"matrix": [7, 1], "x": 11.5, "y": 2}, + {"matrix": [7, 2], "x": 12.5, "y": 2}, + {"matrix": [7, 3], "x": 13.5, "y": 2}, + {"matrix": [7, 4], "x": 14.5, "y": 2}, + {"matrix": [7, 5], "x": 15.5, "y": 2}, + {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 0], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 2], "x": 12, "y": 3}, + {"matrix": [8, 3], "x": 13, "y": 3}, + {"matrix": [8, 4], "x": 14, "y": 3}, + {"matrix": [8, 5], "x": 15, "y": 3}, + {"matrix": [8, 6], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 7], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 5], "x": 8.25, "y": 4}, + {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 7], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_arrow_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 0], "x": 10.75, "y": 0}, + {"matrix": [5, 1], "x": 11.75, "y": 0}, + {"matrix": [5, 2], "x": 12.75, "y": 0}, + {"matrix": [5, 3], "x": 13.75, "y": 0}, + {"matrix": [5, 4], "x": 14.75, "y": 0}, + {"matrix": [5, 5], "x": 15.75, "y": 0}, + {"matrix": [5, 6], "x": 16.75, "y": 0}, + {"matrix": [5, 7], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 0], "x": 10.25, "y": 1}, + {"matrix": [6, 1], "x": 11.25, "y": 1}, + {"matrix": [6, 2], "x": 12.25, "y": 1}, + {"matrix": [6, 3], "x": 13.25, "y": 1}, + {"matrix": [6, 4], "x": 14.25, "y": 1}, + {"matrix": [6, 5], "x": 15.25, "y": 1}, + {"matrix": [6, 6], "x": 16.25, "y": 1}, + {"matrix": [6, 7], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 0], "x": 10.5, "y": 2}, + {"matrix": [7, 1], "x": 11.5, "y": 2}, + {"matrix": [7, 2], "x": 12.5, "y": 2}, + {"matrix": [7, 3], "x": 13.5, "y": 2}, + {"matrix": [7, 4], "x": 14.5, "y": 2}, + {"matrix": [7, 5], "x": 15.5, "y": 2}, + {"matrix": [7, 7], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 0], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 2], "x": 12, "y": 3}, + {"matrix": [8, 3], "x": 13, "y": 3}, + {"matrix": [8, 4], "x": 14, "y": 3}, + {"matrix": [8, 5], "x": 15, "y": 3}, + {"matrix": [8, 6], "x": 16, "y": 3}, + {"matrix": [8, 7], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 4], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 5], "x": 8.25, "y": 4}, + {"matrix": [9, 1], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 5], "x": 15, "y": 4}, + {"matrix": [9, 6], "x": 16, "y": 4}, + {"matrix": [9, 7], "x": 17, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/klein/keymaps/default/keymap.c b/keyboards/era/klein/keymaps/default/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/klein/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/klein/keymaps/via/keymap.c b/keyboards/era/klein/keymaps/via/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/klein/keymaps/via/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/klein/keymaps/via/rules.mk b/keyboards/era/klein/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/era/klein/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/klein/mcuconf.h b/keyboards/era/klein/mcuconf.h new file mode 100644 index 000000000000..b82cc49d7d07 --- /dev/null +++ b/keyboards/era/klein/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM7 +#define RP_PWM_USE_PWM7 TRUE \ No newline at end of file diff --git a/keyboards/era/klein/readme.md b/keyboards/era/klein/readme.md new file mode 100644 index 000000000000..1efeafe45127 --- /dev/null +++ b/keyboards/era/klein/readme.md @@ -0,0 +1,23 @@ +# MontK Cervin Klein + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: SIRIND Klein +* Hardware availability: [Syryan](https://srind.mysoho.com/) + +Make example for this keyboard (after setting up your build environment): + + make era/klein:default + +Flashing example for this keyboard: + + make era/klein:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/users/twschum/config.h b/keyboards/era/klein/rules.mk similarity index 100% rename from users/twschum/config.h rename to keyboards/era/klein/rules.mk diff --git a/keyboards/era/sirind/klein_hs/config.h b/keyboards/era/sirind/klein_hs/config.h new file mode 100644 index 000000000000..bbd438736357 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/config.h @@ -0,0 +1,21 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* BACKLIGHT PWM */ +#define BACKLIGHT_PWM_DRIVER PWMD7 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/halconf.h b/keyboards/era/sirind/klein_hs/halconf.h new file mode 100644 index 000000000000..f57e86df018d --- /dev/null +++ b/keyboards/era/sirind/klein_hs/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_PWM TRUE + +#include_next \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/info.json b/keyboards/era/sirind/klein_hs/info.json new file mode 100644 index 000000000000..6d677f6748d1 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/info.json @@ -0,0 +1,467 @@ +{ + "manufacturer": "SIRIND", + "keyboard_name": "Klein_HS", + "maintainer": "eerraa", + "backlight": { + "levels": 5, + "pin": "GP15" + }, + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + }, + "indicators": { + "caps_lock": "GP16", + "on_state": 0, + "scroll_lock": "GP17" + }, + "matrix_pins": { + "cols": ["GP22", "GP23", "GP24", "GP25", "GP26", "GP27", "GP28", "GP29", "GP11", "GP10", "GP9", "GP8", "GP7", "GP1", "GP2", "GP3"], + "rows": ["GP18", "GP19", "GP20", "GP21", "GP14", "GP5", "GP6", "GP4", "GP13", "GP12"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0004", + "vid": "0x4552" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 15], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 15], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_arrow": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 15], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3}, + {"matrix": [8, 15], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_split_bs_rsft": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 15], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_arrow_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3}, + {"matrix": [8, 15], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/default/keymap.c b/keyboards/era/sirind/klein_hs/keymaps/default/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/via/keymap.c b/keyboards/era/sirind/klein_hs/keymaps/via/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/via/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/via/rules.mk b/keyboards/era/sirind/klein_hs/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/vial/README.md b/keyboards/era/sirind/klein_hs/keymaps/vial/README.md new file mode 100644 index 000000000000..bbe9252c3549 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/vial/README.md @@ -0,0 +1,14 @@ +# Info +Vial support for era/sirind/klein_hs. + +# Building +``` +make git-submodule +make era/sirind/klein_hs:vial +``` + +# Flashing +Connect the keyboard while holding down the ESC key to put it into flash mode. +``` +make era/sirind/klein_hs:vial:flash +``` \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/vial/config.h b/keyboards/era/sirind/klein_hs/keymaps/vial/config.h new file mode 100644 index 000000000000..2d55570d5e14 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/vial/config.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x83, 0xE4, 0xBA, 0x4F, 0xB8, 0xBA, 0xCE, 0xB2} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 } +#define VIAL_UNLOCK_COMBO_COLS { 7, 15 } \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/vial/keymap.c b/keyboards/era/sirind/klein_hs/keymaps/vial/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/vial/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/vial/rules.mk b/keyboards/era/sirind/klein_hs/keymaps/vial/rules.mk new file mode 100644 index 000000000000..6bc7063adc21 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/keymaps/vial/vial.json b/keyboards/era/sirind/klein_hs/keymaps/vial/vial.json new file mode 100644 index 000000000000..b4d8ec19d156 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/keymaps/vial/vial.json @@ -0,0 +1,315 @@ +{ + "name": "Klein_HS", + "vendorId": "0x4552", + "productId": "0x0004", + "lighting": "qmk_backlight", + "matrix": + { + "rows": 10, + "cols": 16 + }, + "layouts": + { + "labels": + [ + "Split Backspace", + [ + "Right shift", + "275U Right shift", + "Split Right shift", + "Arrow & Right shift" + ] + ], + "keymap": + [ + [ + { + "y": 1.5, + "x": 3.25, + "c": "#777777" + }, + "0,0" + ], + [ + { + "y": -0.8999999999999999, + "x": 17, + "c": "#cccccc" + }, + "5,12" + ], + [ + { + "y": -0.95, + "x": 6.5 + }, + "0,3" + ], + [ + { + "y": -0.8999999999999999, + "x": 4.5 + }, + "0,1", + "0,2", + { + "x": 11.5 + }, + "5,13", + { + "c": "#aaaaaa", + "w": 2 + }, + "5,15\n\n\n0,0", + { + "x": 2.5 + }, + "5,14\n\n\n0,1", + "5,15\n\n\n0,1" + ], + [ + { + "y": -0.25, + "x": 3 + }, + "1,0" + ], + [ + { + "y": -0.8500000000000001, + "x": 16.75, + "c": "#cccccc" + }, + "6,12" + ], + [ + { + "y": -0.8999999999999999, + "x": 4.25, + "c": "#aaaaaa", + "w": 1.5 + }, + "1,1", + { + "c": "#cccccc" + }, + "1,2", + { + "x": 11 + }, + "6,13", + "6,14", + { + "w": 1.5 + }, + "6,15" + ], + [ + { + "y": -0.25, + "x": 2.75, + "c": "#aaaaaa" + }, + "2,0" + ], + [ + { + "y": -0.75, + "x": 4, + "w": 1.75 + }, + "2,1", + { + "c": "#cccccc" + }, + "2,2", + { + "x": 10.5 + }, + "7,12", + "7,13", + { + "c": "#777777", + "w": 2.25 + }, + "7,15" + ], + [ + { + "x": 3.75, + "c": "#aaaaaa", + "w": 2.25 + }, + "3,1", + { + "c": "#cccccc" + }, + "3,2", + { + "x": 9.5 + }, + "8,12", + "8,13", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "8,15\n\n\n1,0", + { + "x": 1.5, + "w": 1.75 + }, + "8,14\n\n\n1,1", + "8,15\n\n\n1,1", + { + "x": 1.75, + "c": "#777777" + }, + "8,14\n\n\n1,2", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "8,15\n\n\n1,2" + ], + [ + { + "x": 3.75, + "w": 1.5 + }, + "4,1", + { + "x": 14.5, + "w": 1.5 + }, + "9,15\n\n\n1,0", + { + "x": 2.75, + "w": 1.5 + }, + "9,15\n\n\n1,1", + { + "x": 0.75, + "c": "#777777" + }, + "9,13\n\n\n1,2", + "9,14\n\n\n1,2", + "9,15\n\n\n1,2" + ], + [ + { + "r": 10, + "y": -6.35, + "x": 7.85, + "c": "#cccccc" + }, + "0,4", + "0,5", + "0,6", + "0,7" + ], + [ + { + "x": 7.25 + }, + "1,3", + "1,4", + "1,5", + "1,6", + "1,7" + ], + [ + { + "x": 7.5 + }, + "2,3", + "2,4", + "2,5", + "2,6" + ], + [ + { + "x": 8 + }, + "3,3", + "3,4", + "3,5", + "3,6" + ], + [ + { + "x": 9.25, + "w": 2.25 + }, + "4,5", + { + "c": "#aaaaaa" + }, + "4,6" + ], + [ + { + "y": -0.9000000000000004, + "x": 7.75, + "w": 1.5 + }, + "4,3" + ], + [ + { + "r": -10, + "y": -1, + "x": 12.25, + "c": "#cccccc" + }, + "5,8", + "5,9", + "5,10", + "5,11" + ], + [ + { + "x": 11.85 + }, + "6,8", + "6,9", + "6,10", + "6,11" + ], + [ + { + "x": 12.15 + }, + "7,8", + "7,9", + "7,10", + "7,11" + ], + [ + { + "x": 11.25 + }, + "8,8", + "8,9", + "8,10", + "8,11" + ], + [ + { + "x": 11.25, + "w": 2.75 + }, + "9,9" + ], + [ + { + "y": -0.9499999999999993, + "x": 14, + "c": "#aaaaaa", + "w": 1.5 + }, + "9,11" + ] + ] + } +} \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/mcuconf.h b/keyboards/era/sirind/klein_hs/mcuconf.h new file mode 100644 index 000000000000..b82cc49d7d07 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM7 +#define RP_PWM_USE_PWM7 TRUE \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/readme.md b/keyboards/era/sirind/klein_hs/readme.md new file mode 100644 index 000000000000..86343271bbd2 --- /dev/null +++ b/keyboards/era/sirind/klein_hs/readme.md @@ -0,0 +1,23 @@ +# Mont Cervin Klein + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: SIRIND Klein_HS +* Hardware availability: [Syryan](https://srind.mysoho.com/) + +Make example for this keyboard (after setting up your build environment): + + make era/sirind/klein_hs:default + +Flashing example for this keyboard: + + make era/sirind/klein_hs:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/era/sirind/klein_hs/rules.mk b/keyboards/era/sirind/klein_hs/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/era/sirind/klein_sd/config.h b/keyboards/era/sirind/klein_sd/config.h new file mode 100644 index 000000000000..ae1d4a9e1d0f --- /dev/null +++ b/keyboards/era/sirind/klein_sd/config.h @@ -0,0 +1,25 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* BACKLIGHT PWM */ +#define BACKLIGHT_PWM_DRIVER PWMD7 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +/* RGB Matrix */ +#define RGB_MATRIX_DEFAULT_VAL 60 +#define RGB_DISABLE_WHEN_USB_SUSPENDED \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/halconf.h b/keyboards/era/sirind/klein_sd/halconf.h new file mode 100644 index 000000000000..f57e86df018d --- /dev/null +++ b/keyboards/era/sirind/klein_sd/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 HAL_USE_PWM TRUE + +#include_next \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/info.json b/keyboards/era/sirind/klein_sd/info.json new file mode 100644 index 000000000000..53f89f2cb704 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/info.json @@ -0,0 +1,588 @@ +{ + "manufacturer": "SIRIND", + "keyboard_name": "Klein_SD", + "maintainer": "eerraa", + "backlight": { + "pin": "GP15" + }, + "bootloader": "rp2040", + "build": { + "debounce_type": "sym_defer_pk" + }, + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "indicators": { + "caps_lock": "GP16", + "on_state": 0, + "scroll_lock": "GP17" + }, + "matrix_pins": { + "cols": ["GP22", "GP23", "GP24", "GP25", "GP26", "GP27", "GP28", "GP29", "GP11", "GP10", "GP9", "GP7", "GP6", "GP5", "GP4", "GP3"], + "rows": ["GP18", "GP19", "GP20", "GP21", "GP14", "GP2", "GP1", "GP8", "GP12", "GP13"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 7], "x": 97, "y": 10, "flags": 4}, + {"matrix": [0, 6], "x": 84, "y": 8, "flags": 4}, + {"matrix": [0, 5], "x": 72, "y": 5, "flags": 4}, + {"matrix": [0, 4], "x": 59, "y": 3, "flags": 4}, + {"matrix": [0, 3], "x": 46, "y": 1, "flags": 4}, + {"matrix": [0, 2], "x": 33, "y": 2, "flags": 4}, + {"matrix": [0, 1], "x": 20, "y": 2, "flags": 4}, + {"matrix": [0, 0], "x": 4, "y": 0, "flags": 1}, + {"matrix": [1, 0], "x": 1, "y": 13, "flags": 1}, + {"matrix": [1, 1], "x": 21, "y": 15, "flags": 1}, + {"matrix": [1, 2], "x": 37, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 50, "y": 15, "flags": 4}, + {"matrix": [1, 4], "x": 63, "y": 17, "flags": 4}, + {"matrix": [1, 5], "x": 76, "y": 20, "flags": 4}, + {"matrix": [1, 6], "x": 88, "y": 22, "flags": 4}, + {"matrix": [1, 7], "x": 101, "y": 24, "flags": 4}, + {"matrix": [2, 6], "x": 90, "y": 36, "flags": 4}, + {"matrix": [2, 5], "x": 78, "y": 33, "flags": 4}, + {"matrix": [2, 4], "x": 65, "y": 31, "flags": 4}, + {"matrix": [2, 3], "x": 52, "y": 29, "flags": 4}, + {"matrix": [2, 2], "x": 39, "y": 29, "flags": 4}, + {"matrix": [2, 1], "x": 18, "y": 29, "flags": 1}, + {"matrix": [2, 0], "x": 0, "y": 27, "flags": 1}, + {"matrix": [3, 1], "x": 21, "y": 42, "flags": 1}, + {"matrix": [3, 2], "x": 42, "y": 42, "flags": 4}, + {"matrix": [3, 3], "x": 55, "y": 43, "flags": 4}, + {"matrix": [3, 4], "x": 68, "y": 45, "flags": 4}, + {"matrix": [3, 5], "x": 81, "y": 47, "flags": 4}, + {"matrix": [3, 6], "x": 93, "y": 50, "flags": 4}, + {"matrix": [4, 6], "x": 97, "y": 64, "flags": 1}, + {"matrix": [4, 5], "x": 77, "y": 60, "flags": 4}, + {"matrix": [4, 3], "x": 53, "y": 57, "flags": 1}, + {"matrix": [4, 1], "x": 16, "y": 55, "flags": 1}, + {"matrix": [0, 8], "x": 130, "y": 9, "flags": 4}, + {"matrix": [0, 9], "x": 143, "y": 7, "flags": 4}, + {"matrix": [0, 10], "x": 156, "y": 4, "flags": 4}, + {"matrix": [0, 11], "x": 168, "y": 2, "flags": 4}, + {"matrix": [0, 12], "x": 182, "y": 1, "flags": 4}, + {"matrix": [0, 13], "x": 195, "y": 2, "flags": 4}, + {"matrix": [0, 15], "x": 214, "y": 2, "flags": 1}, + {"matrix": [1, 15], "x": 220, "y": 15, "flags": 4}, + {"matrix": [1, 14], "x": 203, "y": 15, "flags": 4}, + {"matrix": [1, 13], "x": 191, "y": 15, "flags": 4}, + {"matrix": [1, 12], "x": 178, "y": 15, "flags": 4}, + {"matrix": [1, 11], "x": 164, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 152, "y": 18, "flags": 4}, + {"matrix": [1, 9], "x": 139, "y": 21, "flags": 4}, + {"matrix": [1, 8], "x": 126, "y": 23, "flags": 4}, + {"matrix": [2, 8], "x": 131, "y": 36, "flags": 4}, + {"matrix": [2, 9], "x": 144, "y": 33, "flags": 4}, + {"matrix": [2, 10], "x": 156, "y": 31, "flags": 4}, + {"matrix": [2, 11], "x": 169, "y": 29, "flags": 4}, + {"matrix": [2, 12], "x": 182, "y": 29, "flags": 4}, + {"matrix": [2, 13], "x": 195, "y": 29, "flags": 4}, + {"matrix": [2, 15], "x": 216, "y": 29, "flags": 1}, + {"matrix": [3, 15], "x": 216, "y": 42, "flags": 1}, + {"matrix": [3, 13], "x": 192, "y": 42, "flags": 4}, + {"matrix": [3, 12], "x": 179, "y": 42, "flags": 4}, + {"matrix": [3, 11], "x": 166, "y": 43, "flags": 4}, + {"matrix": [3, 10], "x": 153, "y": 45, "flags": 4}, + {"matrix": [3, 9], "x": 140, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 128, "y": 50, "flags": 4}, + {"matrix": [4, 9], "x": 141, "y": 61, "flags": 4}, + {"matrix": [4, 11], "x": 168, "y": 57, "flags": 1}, + {"matrix": [4, 13], "x": 192, "y": 55, "flags": 1}, + {"matrix": [4, 14], "x": 205, "y": 55, "flags": 1}, + {"matrix": [4, 15], "x": 224, "y": 55, "flags": 1} + ] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0005", + "vid": "0x4552" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 15], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 15], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_arrow": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 15], "x": 16.75, "y": 0, "w": 2}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3}, + {"matrix": [8, 15], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + }, + "LAYOUT_ansi_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 2.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_ansi_split_bs_rsft": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3, "w": 1.75}, + {"matrix": [8, 15], "x": 17.75, "y": 3}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 15], "x": 17.25, "y": 4, "w": 1.5} + ] + }, + "LAYOUT_arrow_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [5, 8], "x": 10.75, "y": 0}, + {"matrix": [5, 9], "x": 11.75, "y": 0}, + {"matrix": [5, 10], "x": 12.75, "y": 0}, + {"matrix": [5, 11], "x": 13.75, "y": 0}, + {"matrix": [5, 12], "x": 14.75, "y": 0}, + {"matrix": [5, 13], "x": 15.75, "y": 0}, + {"matrix": [5, 14], "x": 16.75, "y": 0}, + {"matrix": [5, 15], "x": 17.75, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 3, "y": 1}, + {"matrix": [1, 3], "x": 4, "y": 1}, + {"matrix": [1, 4], "x": 5, "y": 1}, + {"matrix": [1, 5], "x": 6, "y": 1}, + {"matrix": [1, 6], "x": 7, "y": 1}, + {"matrix": [1, 7], "x": 8, "y": 1}, + {"matrix": [6, 8], "x": 10.25, "y": 1}, + {"matrix": [6, 9], "x": 11.25, "y": 1}, + {"matrix": [6, 10], "x": 12.25, "y": 1}, + {"matrix": [6, 11], "x": 13.25, "y": 1}, + {"matrix": [6, 12], "x": 14.25, "y": 1}, + {"matrix": [6, 13], "x": 15.25, "y": 1}, + {"matrix": [6, 14], "x": 16.25, "y": 1}, + {"matrix": [6, 15], "x": 17.25, "y": 1, "w": 1.5}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, + {"matrix": [2, 6], "x": 7.25, "y": 2}, + {"matrix": [7, 8], "x": 10.5, "y": 2}, + {"matrix": [7, 9], "x": 11.5, "y": 2}, + {"matrix": [7, 10], "x": 12.5, "y": 2}, + {"matrix": [7, 11], "x": 13.5, "y": 2}, + {"matrix": [7, 12], "x": 14.5, "y": 2}, + {"matrix": [7, 13], "x": 15.5, "y": 2}, + {"matrix": [7, 15], "x": 16.5, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 3.75, "y": 3}, + {"matrix": [3, 3], "x": 4.75, "y": 3}, + {"matrix": [3, 4], "x": 5.75, "y": 3}, + {"matrix": [3, 5], "x": 6.75, "y": 3}, + {"matrix": [3, 6], "x": 7.75, "y": 3}, + {"matrix": [8, 8], "x": 10, "y": 3}, + {"matrix": [8, 9], "x": 11, "y": 3}, + {"matrix": [8, 10], "x": 12, "y": 3}, + {"matrix": [8, 11], "x": 13, "y": 3}, + {"matrix": [8, 12], "x": 14, "y": 3}, + {"matrix": [8, 13], "x": 15, "y": 3}, + {"matrix": [8, 14], "x": 16, "y": 3}, + {"matrix": [8, 15], "x": 17, "y": 3, "w": 1.75}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 3], "x": 4.5, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 6, "y": 4, "w": 2.25}, + {"matrix": [4, 6], "x": 8.25, "y": 4}, + {"matrix": [9, 9], "x": 10, "y": 4, "w": 2.75}, + {"matrix": [9, 11], "x": 12.75, "y": 4, "w": 1.5}, + {"matrix": [9, 13], "x": 15, "y": 4}, + {"matrix": [9, 14], "x": 16, "y": 4}, + {"matrix": [9, 15], "x": 17, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/default/keymap.c b/keyboards/era/sirind/klein_sd/keymaps/default/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/via/keymap.c b/keyboards/era/sirind/klein_sd/keymaps/via/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/via/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/via/rules.mk b/keyboards/era/sirind/klein_sd/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/vial/README.md b/keyboards/era/sirind/klein_sd/keymaps/vial/README.md new file mode 100644 index 000000000000..2aad521fa06e --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/vial/README.md @@ -0,0 +1,14 @@ +# Info +Vial support for era/sirind/klein_sd. + +# Building +``` +make git-submodule +make era/sirind/klein_sd:vial +``` + +# Flashing +Connect the keyboard while holding down the ESC key to put it into flash mode. +``` +make era/sirind/klein_sd:vial:flash +``` \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/vial/config.h b/keyboards/era/sirind/klein_sd/keymaps/vial/config.h new file mode 100644 index 000000000000..ea18bd54f302 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/vial/config.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x0F, 0x63, 0x2A, 0xF5, 0x25, 0xCC, 0x8D, 0x69} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 } +#define VIAL_UNLOCK_COMBO_COLS { 7, 15 } \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/vial/keymap.c b/keyboards/era/sirind/klein_sd/keymaps/vial/keymap.c new file mode 100644 index 000000000000..88878bbcd936 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/vial/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2018-2022 QMK (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, + KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RCTL + ), + + [1] = LAYOUT( + KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/vial/rules.mk b/keyboards/era/sirind/klein_sd/keymaps/vial/rules.mk new file mode 100644 index 000000000000..6bc7063adc21 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/keymaps/vial/vial.json b/keyboards/era/sirind/klein_sd/keymaps/vial/vial.json new file mode 100644 index 000000000000..18cbfd335741 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/keymaps/vial/vial.json @@ -0,0 +1,315 @@ +{ + "name": "Klein_SD", + "vendorId": "0x4552", + "productId": "0x0005", + "lighting": "qmk_rgb_matrix", + "matrix": + { + "rows": 10, + "cols": 16 + }, + "layouts": + { + "labels": + [ + "Split Backspace", + [ + "Right shift", + "275U Right shift", + "Split Right shift", + "Arrow & Right shift" + ] + ], + "keymap": + [ + [ + { + "y": 1.5, + "x": 3.25, + "c": "#777777" + }, + "0,0" + ], + [ + { + "y": -0.8999999999999999, + "x": 17, + "c": "#cccccc" + }, + "5,12" + ], + [ + { + "y": -0.95, + "x": 6.5 + }, + "0,3" + ], + [ + { + "y": -0.8999999999999999, + "x": 4.5 + }, + "0,1", + "0,2", + { + "x": 11.5 + }, + "5,13", + { + "c": "#aaaaaa", + "w": 2 + }, + "5,15\n\n\n0,0", + { + "x": 2.5 + }, + "5,14\n\n\n0,1", + "5,15\n\n\n0,1" + ], + [ + { + "y": -0.25, + "x": 3 + }, + "1,0" + ], + [ + { + "y": -0.8500000000000001, + "x": 16.75, + "c": "#cccccc" + }, + "6,12" + ], + [ + { + "y": -0.8999999999999999, + "x": 4.25, + "c": "#aaaaaa", + "w": 1.5 + }, + "1,1", + { + "c": "#cccccc" + }, + "1,2", + { + "x": 11 + }, + "6,13", + "6,14", + { + "w": 1.5 + }, + "6,15" + ], + [ + { + "y": -0.25, + "x": 2.75, + "c": "#aaaaaa" + }, + "2,0" + ], + [ + { + "y": -0.75, + "x": 4, + "w": 1.75 + }, + "2,1", + { + "c": "#cccccc" + }, + "2,2", + { + "x": 10.5 + }, + "7,12", + "7,13", + { + "c": "#777777", + "w": 2.25 + }, + "7,15" + ], + [ + { + "x": 3.75, + "c": "#aaaaaa", + "w": 2.25 + }, + "3,1", + { + "c": "#cccccc" + }, + "3,2", + { + "x": 9.5 + }, + "8,12", + "8,13", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "8,15\n\n\n1,0", + { + "x": 1.5, + "w": 1.75 + }, + "8,14\n\n\n1,1", + "8,15\n\n\n1,1", + { + "x": 1.75, + "c": "#777777" + }, + "8,14\n\n\n1,2", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "8,15\n\n\n1,2" + ], + [ + { + "x": 3.75, + "w": 1.5 + }, + "4,1", + { + "x": 14.5, + "w": 1.5 + }, + "9,15\n\n\n1,0", + { + "x": 2.75, + "w": 1.5 + }, + "9,15\n\n\n1,1", + { + "x": 0.75, + "c": "#777777" + }, + "9,13\n\n\n1,2", + "9,14\n\n\n1,2", + "9,15\n\n\n1,2" + ], + [ + { + "r": 10, + "y": -6.35, + "x": 7.85, + "c": "#cccccc" + }, + "0,4", + "0,5", + "0,6", + "0,7" + ], + [ + { + "x": 7.25 + }, + "1,3", + "1,4", + "1,5", + "1,6", + "1,7" + ], + [ + { + "x": 7.5 + }, + "2,3", + "2,4", + "2,5", + "2,6" + ], + [ + { + "x": 8 + }, + "3,3", + "3,4", + "3,5", + "3,6" + ], + [ + { + "x": 9.25, + "w": 2.25 + }, + "4,5", + { + "c": "#aaaaaa" + }, + "4,6" + ], + [ + { + "y": -0.9000000000000004, + "x": 7.75, + "w": 1.5 + }, + "4,3" + ], + [ + { + "r": -10, + "y": -1, + "x": 12.25, + "c": "#cccccc" + }, + "5,8", + "5,9", + "5,10", + "5,11" + ], + [ + { + "x": 11.85 + }, + "6,8", + "6,9", + "6,10", + "6,11" + ], + [ + { + "x": 12.15 + }, + "7,8", + "7,9", + "7,10", + "7,11" + ], + [ + { + "x": 11.25 + }, + "8,8", + "8,9", + "8,10", + "8,11" + ], + [ + { + "x": 11.25, + "w": 2.75 + }, + "9,9" + ], + [ + { + "y": -0.9499999999999993, + "x": 14, + "c": "#aaaaaa", + "w": 1.5 + }, + "9,11" + ] + ] + } +} \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/mcuconf.h b/keyboards/era/sirind/klein_sd/mcuconf.h new file mode 100644 index 000000000000..b82cc49d7d07 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2023 eerraa + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM7 +#define RP_PWM_USE_PWM7 TRUE \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/readme.md b/keyboards/era/sirind/klein_sd/readme.md new file mode 100644 index 000000000000..a021b843d787 --- /dev/null +++ b/keyboards/era/sirind/klein_sd/readme.md @@ -0,0 +1,23 @@ +# Mont Cervin Klein + +* Keyboard Maintainer: [ERA](https://github.com/eerraa) +* Hardware supported: SIRIND Klein_SD +* Hardware availability: [Syryan](https://srind.mysoho.com/) + +Make example for this keyboard (after setting up your build environment): + + make era/sirind/klein_sd:default + +Flashing example for this keyboard: + + make era/sirind/klein_sd:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/era/sirind/klein_sd/rules.mk b/keyboards/era/sirind/klein_sd/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/era/sirind/klein_sd/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h index de850a054829..af1e14c49f04 100644 --- a/keyboards/ergodox_ez/config.h +++ b/keyboards/ergodox_ez/config.h @@ -91,9 +91,8 @@ along with this program. If not, see . // RGB backlight -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 -#define DRIVER_COUNT 2 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC #define DRIVER_1_LED_TOTAL 24 #define DRIVER_2_LED_TOTAL 24 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/ergodox_ez/ergodox_ez.c b/keyboards/ergodox_ez/ergodox_ez.c index 3683128234bc..455d294ef57f 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 PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* driver * | R location * | | G location diff --git a/keyboards/ergodox_ez/keymaps/danielo515/config.h b/keyboards/ergodox_ez/keymaps/danielo515/config.h deleted file mode 100644 index 7428cccc82ec..000000000000 --- a/keyboards/ergodox_ez/keymaps/danielo515/config.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Set any config.h overrides for your specific keymap here. - See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file -*/ -#pragma once - -#define TAPPING_TERM 200 - -#define ONESHOT_TAP_TOGGLE 3 - -#define RGBLIGHT_SLEEP - -#undef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 50 - -#undef MOUSEKEY_WHEEL_TIME_TO_MAX -#define MOUSEKEY_WHEEL_TIME_TO_MAX 60 - -#undef DEBOUNCE -#define DEBOUNCE 45 -// Memory saving -#ifdef CONSOLE_ENABLE -# define NO_DEBUG -# define NO_PRINT -#endif - -#define NO_ACTION_MACRO -#define NO_ACTION_FUNCTION - -#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 diff --git a/keyboards/ergodox_ez/keymaps/danielo515/keymap.c b/keyboards/ergodox_ez/keymaps/danielo515/keymap.c deleted file mode 100644 index 281ac956e02a..000000000000 --- a/keyboards/ergodox_ez/keymaps/danielo515/keymap.c +++ /dev/null @@ -1,326 +0,0 @@ -#include QMK_KEYBOARD_H -#include "version.h" -#include "danielo515.h" - -/* STUPID JS code to split by ergodox rows. Call the format function with the unformatted array -sliceBy = groups => items => groups.reduce(({start, acc},size) => ({ - acc: (acc.push(items.slice(start,start+size)),acc ), - start: start + size -}), {acc:[],start:0}).acc -findMaxLen = items => items.reduce((max,curr) => max < curr.length ? curr.length : max,0) -setLen = len => strings => strings.map(str => str.padEnd(len, " ")); -const format = string => { - const items = string.split(/,\s*(?![^()]*\))/) - const group = sliceBy([7,7,6,7,5,2,1,3]) - const resize = setLen(findMaxLen(items)); - const joinstr = ',\n' - const leftItems = group(items.slice(0,items.length/2)) - const rightItems = group(items.slice(items.length/2)) - const [left,right] = [leftItems.map(resize).join(joinstr),rightItems.map(resize).join(joinstr)] - return `\n${left},\n\n${right}\n` -} -*/ - -#define OSM_SF_CMD OSM(MOD_LGUI | MOD_LSFT) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [0] = LAYOUT_ergodox( - KC_EQL ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,OSM(MOD_HYPR) , - KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,TD(PASTE_DANCE) , - KC_DELETE ,KC_A ,LT(3,KC_S) ,LT(2,KC_D) ,LT(4,KC_F) ,KC_G , - KC_GRAVE ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,TD(COPY_CUT) , - KC_BSLS ,OSM(MOD_LCTL) ,OSM(MOD_LALT) ,KC_LEFT ,KC_RIGHT , - OSM_SF_CMD ,KC_PLUS , - KC_INSERT , - OSM(MOD_LSFT) ,LT(2,KC_BSPC) ,OSM(MOD_LGUI) , - - - TO(1) ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,LT(3,KC_0) ,KC_DQUO , - KC_UNDS ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,RSFT_T(KC_MINUS) , - HYPR_H ,ALT_J ,CTL_K ,LT(6,KC_L) ,TD_CLN ,CMD_QUOT , - ALT_TAB ,KC_N ,MEH_T(KC_M) ,KC_COMMA ,KC_DOT ,KC_SLASH ,LT(4,KC_KP_ASTERISK), - LT(4,KC_ENTER) ,KC_DOWN ,KC_LBRC ,KC_RBRC ,OSL(2) , - KC_AUDIO_MUTE ,KC_ESCAPE , - KC_END , - KC_COLN ,QK_LEAD ,LT(4,KC_SPACE) - ), - - [1] = LAYOUT_ergodox( - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,AC_E ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - LT(5, KC_DELETE),AC_A ,KC_TRANSPARENT ,KC_TRANSPARENT ,FIND ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - OSM(MOD_LSFT) ,KC_TRANSPARENT ,KC_TRANSPARENT , - TO(8) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_ENTER ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT), - - [2] = LAYOUT_ergodox( - KC_TRANSPARENT,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRANSPARENT, - KC_TRANSPARENT,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,KC_CALCULATOR , - KC_TRANSPARENT,KC_HASH ,KC_DLR ,KC_TRANSPARENT,KC_RPRN ,KC_GRAVE , - KC_TRANSPARENT,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT, - RGB_HUI , - KC_TRANSPARENT,KC_TRANSPARENT,RGB_HUD , - KC_DELETE ,KC_A ,KC_B ,KC_C ,KC_D ,KC_E ,KC_BSPC , - KC_ENTER ,KC_F ,KC_7 ,KC_8 ,KC_9 ,KC_PERC ,KC_TRANSPARENT, - KC_HASH ,KC_4 ,KC_5 ,KC_6 ,KC_PLUS ,KC_KP_ASTERISK, - KC_KP_ENTER ,KC_COLON ,KC_1 ,KC_2 ,KC_3 ,KC_SLASH ,KC_BSLS , - KC_0 ,KC_COMMA ,KC_DOT ,KC_EQUAL ,KC_TRANSPARENT, - RGB_TOG ,RGB_SLD , - RGB_VAI , - RGB_VAD ,KC_BSPC ,KC_SPACE - ), - - [3] = LAYOUT_ergodox( - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_LABK ,KC_RABK ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_AT ,KC_TRANSPARENT ,KC_EQL ,F_ARROW ,KC_GRAVE , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_LBRC ,KC_RBRC ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,IARROW ,ARROW , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - // Right hand - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - LALT(LSFT(KC_UP)) ,KC_HASH ,KC_LCBR ,KC_RCBR ,KC_KP_ASTERISK ,KC_PERC ,KC_DLR , - KC_AMPR ,KC_LPRN ,KC_RPRN ,CLN_EQ ,KC_KP_PLUS ,KC_PIPE , - LALT(LSFT(KC_DOWN)),KC_EXLM ,KC_TILD ,KC_CIRC ,ARROW ,KC_BSLS ,KC_BSLS , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - QK_BOOT ,KC_TRANSPARENT , - KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_SPACE -), - - [4] = LAYOUT_ergodox( - KC_TRANSPARENT ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRANSPARENT , - KC_TRANSPARENT ,LCTL(KC_Q) ,LCTL(KC_DOWN) ,LGUI(KC_DOWN) ,WIN_LEFT_HALF ,WIN_RIGHT_HALF ,LALT(LSFT(KC_UP)) , - LCTL(LSFT(KC_P)) ,LCTL(KC_A) ,SAVE ,LCTL(KC_D) ,KC_TRANSPARENT ,RGUI(KC_R) , - LCTL(LSFT(KC_F)) ,UNDO ,CUT ,KC_PSCR ,KC_TRANSPARENT ,LGUI(KC_RIGHT) ,LALT(LSFT(KC_DOWN)), - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - - LALT(KC_F4) ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 , - LALT(KC_UP) ,LSFT(KC_HOME) ,LSFT(KC_LEFT) ,KC_UP ,LSFT(KC_RIGHT) ,LSFT(KC_END) ,KC_F13 , - KC_HOME ,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_END ,KC_F12 , - LALT(KC_DOWN) ,LSFT(KC_INSERT) ,LCTL(LSFT(KC_J)) ,LSFT(KC_UP) ,KC_PGUP ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,LSFT(KC_DOWN) ,KC_PGDN ,WIN_TO_LEFT ,WIN_TO_RIGHT , - KC_TRANSPARENT ,KC_SYSTEM_SLEEP , - KC_TRANSPARENT , - KC_TRANSPARENT ,KC_BSPC ,KC_TRANSPARENT - ), - - [5] = LAYOUT_ergodox( - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,LCTL(KC_TAB) ,LCTL(LSFT(KC_TAB)) ,LGUI(KC_D) ,LCTL(KC_F) ,KC_TRANSPARENT , - LGUI(KC_L) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,LSFT(KC_F9) ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,LCTL(LGUI(KC_LEFT)) ,LCTL(LGUI(KC_RIGHT)),KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,LCTL(KC_T) ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT -), - - [6] = LAYOUT_ergodox( - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_ACCEL2 ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_WH_DOWN ,KC_MS_UP ,KC_MS_WH_UP ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_LEFT ,KC_MS_DOWN ,KC_MS_RIGHT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_MS_BTN3 ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - KC_MS_BTN1 ,KC_MS_BTN2 ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_PGUP ,LCTL(LGUI(KC_RIGHT)),KC_MS_WH_UP ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT , - LGUI(RCTL(KC_LEFT)) ,KC_MS_WH_DOWN ,LCTL(KC_C) ,KC_TRANSPARENT ,KC_MEDIA_STOP ,KC_MEDIA_PLAY_PAUSE , - KC_PGDN ,LCTL(LSFT(KC_N)) ,LCTL(LSFT(KC_J)) ,KC_MEDIA_PREV_TRACK ,KC_MEDIA_NEXT_TRACK ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_AUDIO_VOL_UP ,KC_AUDIO_VOL_DOWN ,KC_AUDIO_MUTE ,KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT , - KC_TRANSPARENT , - KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT - ), - - [7] = LAYOUT_ergodox( - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_UP ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_LEFT ,KC_DOWN ,KC_RIGHT ,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT - ), - - [8] = LAYOUT_ergodox( - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_Q ,KC_W ,KC_E ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_ENTER ,KC_A ,KC_S ,KC_D ,KC_F ,KC_TRANSPARENT, - KC_TRANSPARENT,KC_Z ,KC_X ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT, - KC_SPACE ,KC_LSFT ,KC_TRANSPARENT, - - TO(0) ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_PGDN ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_ENTER ,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT, - KC_TRANSPARENT, - KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT - ), -}; -// Used for blinking leds on layers higher than 7 -uint16_t blink_timer = 0; -uint16_t blink_elapsed = 0; -bool blink_led_1 = false; -bool blink_led_2 = false; -bool blink_led_3 = false; - -void matrix_scan_kb(void){ - // first 7 layers do not need to blink - if(blink_led_1 || blink_led_2 || blink_led_3){ - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - blink_elapsed = timer_elapsed(blink_timer); - if(blink_elapsed > 2000) { blink_timer = timer_read();} - if(blink_elapsed < 1000) { - if(blink_led_1) ergodox_right_led_1_on(); - if(blink_led_2) ergodox_right_led_2_on(); - if(blink_led_3) ergodox_right_led_3_on(); - } - } - matrix_scan_user(); -}; - -layer_state_t layer_state_set_user(layer_state_t state) -{ - - uint8_t layer = get_highest_layer(state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - blink_led_1=false; - blink_led_2=false; - blink_led_3=false; - - switch (layer) - { - case 0: - rgblight_setrgb(0, 200, 200); - break; - case 1: - ergodox_right_led_1_on(); - rgblight_setrgb(0, 200, 0); // green - break; - case 2: - ergodox_right_led_2_on(); - rgblight_setrgb(0, 0, 255); - break; - case 3: - ergodox_right_led_3_on(); - rgblight_setrgb(255, 0, 0); - break; - case 4: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - rgblight_setrgb(200, 65, 0); - break; - case 5: - ergodox_right_led_1_on(); - ergodox_right_led_3_on(); - rgblight_setrgb(0, 80, 33); - break; - case 6: - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - rgblight_setrgb(0, 10, 200); - break; - case 7: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - rgblight_setrgb(90, 150, 90); - break; - case 8: - blink_led_1=true; - rgblight_setrgb(100, 0, 100); - break; - case 9: - rgblight_setrgb(200, 150, 90); - break; -// default: -// rgblight_setrgb(0, 200, 200); -// break; - } - return state; -}; - -// use leds to indicate when a one shot mod is on -void oneshot_mods_changed_user(uint8_t mods) { - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - // One shot checks - if (mods & MOD_MASK_SHIFT) { - ergodox_right_led_1_on(); - } - if (mods & MOD_MASK_CTRL) { - ergodox_right_led_2_on(); - } - if (mods & MOD_MASK_ALT) { - ergodox_right_led_3_on(); - } - // if (mods & MOD_MASK_GUI) { - // println("Oneshot mods GUI"); - // } - } - -void oneshot_locked_mods_changed_user(uint8_t mods) { - oneshot_mods_changed_user(mods); -} - -//=============== alt_tab callbacks -void alt_tab_activated(void){ - layer_on(7); // activate motion layer -} -void alt_tab_deactivated(void){ - layer_off(7); // activate motion layer -} diff --git a/keyboards/ergodox_ez/keymaps/danielo515/rules.mk b/keyboards/ergodox_ez/keymaps/danielo515/rules.mk deleted file mode 100644 index 99ab4f0e181b..000000000000 --- a/keyboards/ergodox_ez/keymaps/danielo515/rules.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Set any rules.mk overrides for your specific keymap here. -# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file -LTO_ENABLE = yes -AUTO_SHIFT_ENABLE = no -TAP_DANCE_ENABLE = yes # Enable the tap dance feature. -LEADER_ENABLE = yes -CONSOLE_ENABLE = no -RGBLIGHT_ENABLE = yes -COMBO_ENABLE = yes diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/README.md b/keyboards/ergodox_ez/keymaps/dvorak_42_key/README.md deleted file mode 100644 index 5730a610516a..000000000000 --- a/keyboards/ergodox_ez/keymaps/dvorak_42_key/README.md +++ /dev/null @@ -1,19 +0,0 @@ -Overview -======== - -This is a dvorak based layout for the Ergodox EZ. Its basic key layout is similar to the Atreus "dvorak_42_key" layout. In fact this layout was created for seamless switching between the Ergodox EZ and Atreus. On the base layer, the keys that don't exist on the Atreus are mapped to MEH shortcuts and can be interpreted by Autohotkey. This layout only makes use of the 42 keys that the Atreus also has for the main functionality. - -How to build ------------- -make ergodox_ez:dvorak_42_key:teensy - -Layers ------- -* BASE: basic dvorak layout -* KEYNAV: arrow-key navigation. Momentary toggle held by thumb allows the right hand to navigate through text as well as copy/paste/cut, page up/page down -* KEYSEL: similar to KEYNAV, except for shift-selection -* COMBINED: this is a layer that combines numbers, brackets and special characters. !@#$%^&*( can be typed by shift+COMBINED+1/2/3/etc.. -* BROWSER_CONTROL: primarily browser left/right tab, open new tab/delete tab, but also mouse keys. -* SHELL_NAV: Linux Bash shortcuts (move forward/backward in command line, Ctrl+C, recall last argument, etc -* SHELL_SCREEN: Linux screen (run multiple terminals in one window) shortcuts such as open new tabs, switch between tabs -* SCREEN_NAV: special layer for copy/pasting within Linux screen, allows using various copy/paste buffers \ No newline at end of file diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c deleted file mode 100644 index f8fce23ce5a0..000000000000 --- a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c +++ /dev/null @@ -1,340 +0,0 @@ -// Copyright 2022 LucW (@luc-languagetools) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" -#include "version.h" -#include "dvorak_42_key.h" - - -// to build this keymap -// make ergodox_ez:dvorak_42_key:teensy -// or: -// qmk compile -kb ergodox_ez -km dvorak_42_key -// flashing from rpi: -// sudo teensy_loader_cli -v -w .build/ergodox_ez_dvorak_42_key.hex --mcu atmega32u4 - -// keeping fork up to date: -// https://help.github.com/articles/configuring-a-remote-for-a-fork/ -// https://help.github.com/articles/syncing-a-fork/ -// pushing dev branch -// git push origin dev:dev - -// debounce settings -// remove these after getting a new keyboard -// #define DEBOUNCE 50 - - - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [BASE] = LAYOUT_ergodox( - // left hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - OSL(VSCODE), KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_TRNS, - OSL(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I, - OSL(SHELL_SCREEN), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(VSCODE), - MEH(KC_0), OSM(MOD_LSFT), OSM(MOD_LCTL), MO(KEYSEL), MO(BROWSER_CONTROL), - - // left thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - MO(COMBINED),MO(KEYNAV), KC_TRNS, - - // right hand - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MEH(KC_7), - MEH(KC_1), KC_F, KC_G, KC_C, KC_R, KC_L, KC_TAB, - KC_D, KC_H, KC_T, KC_N, KC_S, RCTL(KC_BSPC), - MEH(KC_2), KC_B, KC_M, KC_W, KC_V, KC_Z, MEH(KC_8), - KC_BSPC, RCTL(KC_BSPC), KC_CAPS, OSM(MOD_LSFT),MEH(KC_9), - - // right thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_ENTER, KC_SPACE - - ), - - [KEYNAV] = LAYOUT_ergodox( - // left hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_ESC, RCTL(KC_ENTER), RCTL(KC_K), RCTL(KC_Z), RCTL(KC_S), RCTL(KC_N), KC_TRNS, - KC_TRNS, MO(KEYSEL), KC_TRNS, RSFT(KC_TAB), KC_TAB, RCTL(KC_F), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NP_DUPE_LINE, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // left thumb cluster - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - - - // right hand - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_G), - KC_TRNS,KC_NO, KC_HOME, KC_UP, KC_END, KC_PGUP, MEH(KC_H), - LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), MEH(KC_I), - KC_TRNS,KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), KC_PGDN, MEH(KC_J), - KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE), MEH(KC_K), - - // right thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS - ), - - // key selection layer - [KEYSEL] = LAYOUT_ergodox( - // left hand - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // bottom row - QK_BOOT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, RSFT(KC_HOME), RSFT(KC_UP), RSFT(KC_END), RSFT(KC_PGUP), KC_TRNS, - RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)), KC_TRNS, - KC_TRNS, KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), RSFT(KC_PGDN), KC_TRNS, - // bottom row - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS - ), - - // shell navigation layer - [SHELL_NAV] = LAYOUT_ergodox( - // left hand - KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,SHELL_GIT_DIFF, SHELL_PGREP, SHELL_PLESS, SHELL_LESS, KC_TRNS, KC_TRNS, - KC_TRNS,SHELL_GIT_STATUS, SHELL_CDPRE, SHELL_LSLTR, SHELL_LS, SHELL_LSLA, - KC_TRNS,SHELL_SCREEN_LIST, SHELL_SCREENRD, SHELL_SCREEN_NEW, SHELL_TAILF, KC_TRNS, KC_TRNS, - // bottom row - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, RCTL(KC_D), KC_HOME, KC_UP, KC_END, RCTL(KC_L), RCTL(KC_X), - LALT(KC_B), KC_LEFT, KC_DOWN, KC_RIGHT, LALT(KC_F), RCTL(KC_W), - KC_TRNS, RCTL(KC_U), LALT(KC_DOT), RCTL(KC_R), KC_BTN2, RCTL(KC_K), RCTL(KC_C), - // bottom row - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS - ), - - - // linux screen layer - [SHELL_SCREEN] = LAYOUT_ergodox( - // left hand - KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, SCREEN_READREG_3, SCREEN_READREG_2, SCREEN_READREG_1, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, SCREEN_PASTEREG_3, SCREEN_PASTEREG_2, SCREEN_PASTEREG_1, SCREEN_DETACH, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // bottom row - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, SCREEN_7, SCREEN_8, SCREEN_9, SCREEN_RENAME, KC_TRNS, - SCREEN_TAB_LEFT, SCREEN_4, SCREEN_5, SCREEN_6, SCREEN_TAB_RIGHT, SCREEN_COPY_MODE, - KC_TRNS, KC_TRNS, SCREEN_1, SCREEN_2, SCREEN_3, SCREEN_NUMBER, SCREEN_PASTE, - // bottom row - SCREEN_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, SCREEN_KILL, SCREEN_NEW_TAB - ), - - // android studio shortcuts - [ANDROID_STUDIO] = LAYOUT_ergodox( - // left hand - KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // bottom row - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - AS_CMT_LINE, AS_COPYLINEDOWN, AS_FINDUSAGE, AS_GO_DECLARATION, AS_GO_IMPLEMENTATION, AS_LINE, AS_BRACKET, - AS_CLOSETAB, AS_TABLEFT, AS_TABRIGHT, AS_SYMBOL, AS_CLASS, AS_BACK, - AS_CMT_BLOCK, KC_TRNS, AS_BM_PREV, AS_BM_NEXT, KC_TRNS, AS_CLOSETOOLWINDOW, AS_BM_TOGGLE, - // bottom row - KC_TRNS, AS_BM_LIST, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, AS_DEL_LINE, KC_TRNS - ), - - // vscode shortcuts shortcuts - [VSCODE] = LAYOUT_ergodox( - // left hand - KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, VS_CMT_BLOCK, VS_CMT_LINE, VS_BM_LISTALL, KC_TRNS, - KC_TRNS, KC_TRNS, VS_TOGGLE_TERMINAL, VS_FOCUS_TERMINAL, VS_FOCUS_EDITOR, VS_BM_LIST, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, VS_BM_CLEARALL, KC_TRNS, - // bottom row - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, VS_COPYLINEDOWN, VS_REFERENCES, VS_DEFINITION, VS_IMPLEMENTATION, VS_LINE, VS_BRACKET, - VS_CLOSETAB, VS_TABLEFT, VS_TABRIGHT, VS_SYMBOLEDITOR, VS_FILE, VS_BACK, - KC_TRNS, VS_JUMPY, VS_BM_PREV, VS_BM_NEXT, VS_GROUP_1, VS_GROUP_2, VS_BM_TOGGLE, - // bottom row - VS_COMMANDS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, VS_DEL_LINE, KC_TRNS - ), - - - [COMBINED] = LAYOUT_ergodox( - - // left hand - KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, - KC_TRNS,KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_UNDS, - KC_TRNS,KC_COLN, KC_DQUO, KC_LCBR, KC_RCBR, KC_AMPR, KC_TRNS, - // bottom row - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_PLUS, KC_7, KC_8, KC_9, KC_ASTR, KC_PIPE, - KC_MINS, KC_4, KC_5, KC_6, KC_SLSH, KC_BSLS, - KC_TRNS, KC_EQUAL, KC_1, KC_2, KC_3, KC_QUES, KC_DOT, - // bottom row - KC_0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS), - - - [BROWSER_CONTROL] = LAYOUT_ergodox( - // left hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_BTN3, KC_MS_U, KC_BTN1, KC_BTN2, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, WINDOWS10_WORKSPACE_LEFT, WINDOWS10_WORKSPACE_RIGHT, WINDOWS10_TASK_VIEW, KC_TRNS, - // bottom row - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_UP, KC_PGUP, KC_PGDN, KC_MS_WH_UP, KC_TRNS, KC_TRNS, - KC_DOWN, RCTL(KC_PGUP), RCTL(KC_PGDN),KC_MS_WH_DOWN, LALT(KC_LEFT), KC_TRNS, - KC_TRNS, KC_TRNS, RCTL(KC_1), RCTL(KC_9), KC_F6, KC_F5, KC_TRNS, - // bottom row - RCTL(LSFT(KC_TAB)), RCTL(KC_TAB), KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, RCTL(KC_W), RCTL(KC_T) - ), - - - // shortcuts to be intercepted by autohotkey - [SHORTCUTS] = LAYOUT_ergodox( - // left hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - KC_TRNS, OSM(MOD_LSFT), OSM(MOD_LGUI), OSM(MOD_LALT), OSM(MOD_LCTL), KC_TRNS, KC_TRNS, - // bottom row - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - // thumb cluster - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,DF(BASE),KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, - KC_TRNS, MEH(KC_I), MEH(KC_J), MEH(KC_K), MEH(KC_L), MEH(KC_M), MEH(KC_N), - MEH(KC_O), MEH(KC_P), MEH(KC_Q), MEH(KC_R), MEH(KC_S), MEH(KC_T), - KC_TRNS, MEH(KC_U), MEH(KC_V), MEH(KC_W), MEH(KC_X), MEH(KC_Y), MEH(KC_Z), - // bottom row - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - // thumb cluster - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS - ), - - -}; - - - - - -bool led_update_user(led_t led_state) { - if (led_state.caps_lock) { - ergodox_right_led_1_on(); - } else { - ergodox_right_led_1_off(); - } - return false; -} - - -void matrix_scan_user(void) { - - uint8_t layer = get_highest_layer(layer_state); - - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - case COMBINED: - ergodox_right_led_2_on(); - break; - case SHELL_NAV: - case SHELL_SCREEN: - case KEYNAV: - case KEYSEL: - case VSCODE: - ergodox_right_led_3_on(); - break; - case BROWSER_CONTROL: - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - case SHORTCUTS: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - default: - break; - } - -}; diff --git a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c b/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c deleted file mode 100644 index c534fe3c6d34..000000000000 --- a/keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c +++ /dev/null @@ -1,18 +0,0 @@ -/* - Copyright 2018-2022 Eric Gebhart - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -// See: users/ericgebhart. diff --git a/keyboards/ergodox_ez/keymaps/ericgebhart/readme.md b/keyboards/ergodox_ez/keymaps/ericgebhart/readme.md deleted file mode 100644 index 4f71bf39ee4c..000000000000 --- a/keyboards/ergodox_ez/keymaps/ericgebhart/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -Overview -======== - -These are my ergodox_ez keymaps. There isn't much here. Go take a look at my Userspace readme. -That's where all the code is. diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk index 9da5278ed916..aaf4e53f6eb1 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/rules.mk @@ -31,7 +31,6 @@ SWAP_HANDS_ENABLE = no # Allow swapping hands of keyboard. # POINTING_DEVICE_ENABLE = no # AUTO_SHIFT_ENABLE = no -# AUTO_SHIFT_MODIFIERS = no # This don't need argument? # CUSTOM_MATRIX # Custom matrix file for the ErgoDox EZ diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c index bd4fd10ad110..5ce5f5298f61 100644 --- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c +++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c @@ -4,7 +4,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { switch (layer) { case DVORAK: - rgblight_sethsv_noeeprom(GREEN); + rgblight_sethsv_noeeprom(HSV_GREEN); rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); if (PLOVER_MODE) { diff --git a/keyboards/ergodox_ez/keymaps/pvinis/keymap.c b/keyboards/ergodox_ez/keymaps/pvinis/keymap.c deleted file mode 100644 index dcdaa7098ba2..000000000000 --- a/keyboards/ergodox_ez/keymaps/pvinis/keymap.c +++ /dev/null @@ -1,334 +0,0 @@ -// pvinis ergodox ez -// ,------------------------------------. ┌────┬────┬────┬────┬────┬────┬──────┐ -// | | | | | | | | │ │ │ │ │ │ │ │ -// |------+----+----+----+----+---------| ├────┼────┼────┼────┼────┼────┼──────┤ -// | | | | | | | | │ │ │ │ │ │ │ │ -// |------+----+----+----x----x----| | │ ├────╆━━━━╅────┼────┼────┼──────┤ -// | | | | | | |----| ├────┤ ┃ ┃ │ │ │ │ -// |------+----+----+----x----x----| | │ ├────╄━━━━╃────┼────┼────┼──────┤ -// | | | | | | | | │ │ │ │ │ │ │ │ -// `------+----+----+----+----+---------' └────┴────┼────┼────┼────┼────┼────┬─┘ -// | | | | | | │ │ │ │ │ │ -// `------------------------' └────┴────┴────┴────┴────┘ -// ,---------. ┌────┬────┐ -// | | | │ │ │ -// ,----+----+----| ├────┼────┼────┐ -// | | | | │ │ │ │ -// | | |----| ├────┤ │ │ -// | | | | │ │ │ │ -// `--------------' └────┴────┴────┘ - -#include QMK_KEYBOARD_H -#include "pvinis.h" -#include "mousekey.h" - -// layers -enum { - MOUSE = 8, -}; - -// extra keys -enum { - NONE = 30, - TD_LAYR, // SYSCTL and MOUSE layer switch -}; - -// application selection -// this is sending ctrl-alt-gui-, and this is picked up by hammerspoon -#define AP_SLCK ALLM(KC_S) -#define AP_XCOD ALLM(KC_X) -#define AP_MSGR ALLM(KC_M) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - // ,------------------------------------. ,------------------------------------. - // |4xFLSH| | | | | |Opt | | | | | | | | | - // |------+----+----+----+----+---------| |----+----+----+----+----+----+------| - // | Tab | | | | | | | | | | | | | | | - // |------+----+----+----x----x----| | | |----x----x----+----+----+------| - // |EscCtl| | | | | |----| |----| | | | | | Ent | - // |------+----+----+----x----x----| | | |----x----x----+----+----+------| - // |LShift| | | | | | | | | | | | | |RShift| - // `------+----+----+----+----+---------' `---------+----+----+----+----+------' - // | | | |Cmd |LOWR| |RASE|RAlt| | | | - // `------------------------' `------------------------' - // ,---------. ,---------. - // |QWER| | | | | - // ,----+----+----| |----+----+----. - // | Ba | L | | | | | | - // | ck |Shi |----| |----| |Spc | - // | spc| ft | | | | | | - // `--------------' `--------------' - [LR_BASE] = LAYOUT_ergodox_pretty_wrapper( - // clang-format off - TD_3FLS, _______, _______, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______, - KC_TAB , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - PV_ESCC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT , - KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, - _______, _______, _______, KC_LGUI, SYMBOL , SYSCTL , KC_RALT, _______, _______, _______, - QWERTY , CARPALX, _______, _______, - _______, _______, - KC_BSPC, _______, _______, _______, _______, KC_SPC - // clang-format on - ), - - // ,------------------------------------. ,------------------------------------. - // | | NUMBERS_L | | | - | NUMBERS_R | = | - // |------+----+----+----+----+---------| |----+----+----+----+----+----+------| - // | | | [ | | ] | | | - // |------+ | | | | +------| - // | | QWERTY_L |----| |----| QWERTY_R | | - // |------+ | ( | | ) | +------| - // | | | | | | | | - // `------+----+----+----+----+---------' `---------+----+----+----+----+------' - // | | ` | | | | | | | | ' | | - // `------------------------' `------------------------' - // ,---------. ,---------. - // | | | | | | - // ,----+----+----| |----+----+----. - // | | | | | | | | - // | | |----| |----| | | - // | | | | | | | | - // `--------------' `--------------' - // See `users/pvinis/pvinis.h` - [LR_QWERTY] = LAYOUT_ergodox_pretty_wrapper( - // clang-format off - _______, ________________NUMBERS_L__________________, _______, KC_MINS, ________________NUMBERS_R__________________, KC_EQL , - _______, _________________QWERTY_L1_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R1_________________, _______, - _______, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, _______, - _______, _________________QWERTY_L3_________________, KC_LPRN, KC_RPRN, _________________QWERTY_R3_________________, _______, - _______, KC_GRV, _______, _______, _______, _______, _______, _______, KC_QUOT , _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, _______, _______, _______, _______ - // clang-format off - ), - - // ,------------------------------------. ,------------------------------------. - // | | NUMBERS_L | | | | NUMBERS_R | | - // |------+----+----+----+----+---------| |----+----+----+----+----+----+------| - // | | | | | | | | - // |------+ | | | | +------| - // | | CARPALX_L |----| |----| CARPALX_R | | - // |------+ | | | | +------| - // | | | | | | | | - // `------+----+----+----+----+---------' `---------+----+----+----+----+------' - // | | | | | | | | | | | | - // `------------------------' `------------------------' - // ,---------. ,---------. - // | | | | | | - // ,----+----+----| |----+----+----. - // | | | | | | | | - // | | |----| |----| | | - // | | | | | | | | - // `--------------' `--------------' - // See `users/pvinis/pvinis.h` - [LR_CARPALX] = LAYOUT_ergodox_pretty_wrapper( - // clang-format off - _______, ________________NUMBERS_L__________________, _______, _______, ________________NUMBERS_R__________________, _______, - _______, ________________CARPALX_L1_________________, _______, _______, ________________CARPALX_R1_________________, _______, - _______, ________________CARPALX_L2_________________, ________________CARPALX_R2_________________, _______, - _______, ________________CARPALX_L3_________________, _______, _______, ________________CARPALX_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, _______, _______, _______, _______ - // clang-format on - ), - - // See `users/pvinis/pvinis.h` - [LR_SYMBOL] = LAYOUT_ergodox_pretty_wrapper( - // clang-format off - _______, ______________________F_L__________________, KC_F11 , KC_F12 , ______________________F_R__________________, _______, - _______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______, - _______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______, - _______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, - _______, _______, _______, _______, _______, _______ - // clang-format off - ), - - // See `users/pvinis/pvinis.h` - [LR_SYSCTL] = LAYOUT_ergodox_pretty_wrapper( - // clang-format off - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R1_________________, _______, - _______, _______, _______, _______, _______, _______, _________________SYSCTL_R2_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _________________SYSCTL_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - - _______, _______, _______, _______, - _______, _______, - _______, _______, _______, _______, _______, _______ - // clang-format on - ), - - // See `users/pvinis/pvinis.h` - [LR_KBCTL] = LAYOUT_ergodox_pretty_wrapper( - // clang-format off - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R1_________________, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R2_________________, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, __________________KBCTL_R3_________________, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX - // clang-format on - ), - - /* MOUSE - * a keymap to control my system. - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ^ | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | | | | | | | MsUp | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | |MidClk| - * ,------|------|------| |------+------+------. - * | | | | | |Left |Right | - * | | |------| |------| Click| Click| - * | | | ^ | | | | | - * `--------------------' `--------------------' - */ - [MOUSE] = LAYOUT_ergodox_pretty( - // clang-format off - KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - - ,KC_NO ,KC_NO - ,KC_NO - ,KC_NO ,KC_NO ,KC_TRNS - - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_MS_U ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,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 - // clang-format on - ), -}; - -// keyboard initialization -void keyboard_post_init_user_keymap(void) { - ergodox_led_all_on(); - for (int i = LED_BRIGHTNESS_HI; i > LED_BRIGHTNESS_LO; i--) { - ergodox_led_all_set(i); - wait_ms(5); - } - wait_ms(1000); - for (int i = LED_BRIGHTNESS_LO; i > 0; i--) { - ergodox_led_all_set(i); - wait_ms(10); - } - ergodox_led_all_off(); - - // restore default brightness for future use - ergodox_led_all_set(LED_BRIGHTNESS_HI); -} - -// light up leds based on the layer -layer_state_t layer_state_set_user_keymap(layer_state_t state) { - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (get_highest_layer(state)) { - case LR_SYSCTL: - ergodox_right_led_3_on(); // blue - break; - case LR_KBCTL: - ergodox_right_led_1_on(); // red - break; - case LR_SYMBOL: - ergodox_right_led_2_on(); // green - break; - default: - break; - } - return state; -} - -// tap dances - -// flash keyboard on 4x tap, with leds -// void flash_each_tap(tap_dance_state_t *state, void *user_data) { -// switch (state->count) { -// case 1: -// ergodox_right_led_3_on(); -// break; -// case 2: -// ergodox_right_led_2_on(); -// break; -// case 3: -// ergodox_right_led_1_on(); -// break; -// case 4: -// ergodox_right_led_3_off(); -// wait_ms(50); -// ergodox_right_led_2_off(); -// wait_ms(50); -// ergodox_right_led_1_off(); -// break; -// } -// } - -// void flash_dance_finished(tap_dance_state_t *state, void *user_data) { -// if (state->count >= 4) { -// reset_keyboard(); -// reset_tap_dance(state); -// } -// } - -// void flash_dance_reset(tap_dance_state_t *state, void *user_data) { -// ergodox_right_led_1_off(); -// wait_ms(50); -// ergodox_right_led_2_off(); -// wait_ms(50); -// ergodox_right_led_3_off(); -// } - -// SYSCTL on first tap, MOUSE ON second tap -// void layers_dance_finished(tap_dance_state_t *state, void *user_data) { -// uint8_t layer = get_highest_layer(layer_state); - -// switch(state->count) { -// case 1: -// switch(layer) { -// case LR_SYSCTL: -// layer_off(LR_SYSCTL); -// break; -// case MOUSE: -// layer_off(MOUSE); -// break; -// default: -// layer_on(LR_SYSCTL); -// break; -// } -// break; -// case 2: -// layer_on(MOUSE); -// break; -// } -// } - -// tap_dance_action_t tap_dance_actions[] = { -// [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ), -// [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ), -// }; diff --git a/keyboards/ergodox_ez/keymaps/pvinis/readme.md b/keyboards/ergodox_ez/keymaps/pvinis/readme.md deleted file mode 100644 index af272105415f..000000000000 --- a/keyboards/ergodox_ez/keymaps/pvinis/readme.md +++ /dev/null @@ -1,65 +0,0 @@ -pvinis' keymap -============== - -This is a getting-used-to keymap for the [ErgoDox EZ][ez]. It's very much a work in progress. - -[ez]: https://ergodox-ez.com/ - -## Table of Contents - -* [Todo](#todo) -* [Layouts](#layouts) - - [Base layer](#base-layer) - - [Beginner layer](#beginner-layer) - - [QWERTY layer](#qwerty-layer) - - [CARPALX layer](#carpalx-layer) - - [System Control layer](#system-control-layer) - - [Template layers](#template-layers) -* [Building](#building) - -# Todo - -- [ ] Generate images from keymap -- [ ] Implement algernon's heatmap -- [ ] Implement `KC_POP` - -# Layouts - -## Base layer - -This is the base layer that contains the common buttons of all keymaps. Right now, it has the top left button as a `flash` button when it's tapped 4 times, and the two thumb islands. The islands contain the `space` and `enter` keys on the right, the `backspace` and `shift` on the left, and all the 1x1 keys are just layer switches. -Every time I connect the keyboard, I press the `BEGIN` layer switch, and then start typing. -Recently, I added a few application "shortcuts", that basically call `ctrl`+`alt`+`cmd`+``, and `` is `S` for Slack, `X` for Xcode, `M` for Messenger. Using [Hammerspoon][hammerspoon], I show/hide the application. - -[hammerspoon]: http://www.hammerspoon.org/ - -## Beginner layer - -This is a basic keymap I use right now until I'm comfortable typing on the Ergodox. Currently uses a QWERTY layout, and the `([{}])` on the middle keys. Not a perfect layout, and its going to go away at some point, but for now thats my daily driver. - -## QWERTY layer - -This is basically the same as the `BEGIN` layer, but it might go away. I'm not using it, but I should have a QWERTY layout on the keyboard, in case someone else wants to try it out, or if I completely forget how keyboards work! At some point, this and the `BEGIN` layer will become one. - -## CARPALX layer - -This is here as a placeholder. I want to transition to [Carpalx QGMLWY][carpalx] or [White][white] at some point. They both look very interesting and more comfortable to type on, but after I'm confident with typing on the Ergodox. - -[carpalx]: http://mkweb.bcgsc.ca/carpalx/?full_optimization -[white]: https://github.com/mw8/white_keyboard_layout - -## System Control layer - -This one is a layer that, in time, will have controls like mouse movement, volume up/down, mute, sleep, restart, shutdown, etc. - -## Template layers - -I have two commented out layers that are just templates, so I can easily create a new layer. - -# Building - -``` -$ git clone https://github.com/qmk/qmk_firmware.git -$ cd qmk_firmware/keyboards/ergodox/keymaps/pvinis -$ make -``` diff --git a/keyboards/ergodox_ez/keymaps/pvinis/rules.mk b/keyboards/ergodox_ez/keymaps/pvinis/rules.mk deleted file mode 100644 index e5ddcae8d927..000000000000 --- a/keyboards/ergodox_ez/keymaps/pvinis/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes diff --git a/keyboards/ergodox_ez/keymaps/rishka/config.h b/keyboards/ergodox_ez/keymaps/rishka/config.h deleted file mode 100644 index c8f8180bcc15..000000000000 --- a/keyboards/ergodox_ez/keymaps/rishka/config.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#define PERMISSIVE_HOLD - -#undef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 0 - -#undef MOUSEKEY_WHEEL_MAX_SPEED -#undef MOUSEKEY_WHEEL_TIME_TO_MAX - -#define MOUSEKEY_WHEEL_MAX_SPEED 1 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 0 - -#define MK_C_OFFSET_1 20 -#define MK_C_OFFSET_2 30 - -#undef MK_MOMENTARY_ACCEL diff --git a/keyboards/ergodox_ez/keymaps/rishka/keymap.c b/keyboards/ergodox_ez/keymaps/rishka/keymap.c deleted file mode 100644 index f6ca540e63a2..000000000000 --- a/keyboards/ergodox_ez/keymaps/rishka/keymap.c +++ /dev/null @@ -1,210 +0,0 @@ - -#include QMK_KEYBOARD_H -#include "version.h" -#include "rishka.h" -enum layers { - BASE, // default layer - WIN, // Switch keys that are needed in windows - SYMB, // symbols - MDIA, // media keys - GAME, // Gamepad setup - FIRMWARE // Layer to trigger reset/refresh -}; -enum custom_keycodes { - VRSN = SAFE_RANGE, - RGB_SLD -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[BASE] = LAYOUT_ergodox_pretty_wrapper( - KC_EQL, ________________NUMBERS_L__________________, TG(WIN), OSX_LOCK, ________________NUMBERS_R__________________, KC_MINS, - KC_DEL, _________________QWERTY_L1_________________, TG(SYMB), TG(SYMB), _________________QWERTY_R1_________________, KC_BSLS, - KC_BSPC, _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, LT(MDIA, KC_QUOT), - OS_LSFT, _________________QWERTY_L3_________________, ALL_T(KC_NO), TG(MDIA), _________________QWERTY_R3_________________, OS_RSFT, - LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, OSL(SYMB), - ALT_T(KC_APP), TG(GAME), KC_LALT, CTL_T(KC_ESC), - LT(FIRMWARE, KC_HOME), KC_PGUP, - KC_SPC, GUI_T(KC_BSPC), ALT_T(KC_END), GUI_T(KC_PGDN), CTL_T(KC_TAB), ALT_T(KC_ENT) -), - -[WIN] = LAYOUT_ergodox_pretty_wrapper( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_F1, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_TAB, _________________QWERTY_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, - KC_LCTL, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______, - _______, KC_ESC, _______, _______, - _______, _______, - _______, KC_BSPC, KC_LALT, KC_PGDN, CTL_T(KC_TAB), _______ -), - -[SYMB] = LAYOUT_ergodox_pretty_wrapper( -VRSN, ______________________F_L__________________, KC_F11, KC_F12 , ______________________F_R__________________, KC_NUM, -_______, _________________SYMBOL_L1_________________, _______, _______, _________________SYMBOL_R1_________________, _______, -_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______, -_______, _________________SYMBOL_L3_________________, _______, _______, _________________SYMBOL_R3_________________, _______, -_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PSLS, _______, - RGB_MOD, RGB_VAI, RGB_HUI, RGB_SLD, - RGB_VAD, RGB_HUD, - _______, _______, _______, RGB_TOG, _______, _______ -), - -[MDIA] = LAYOUT_ergodox( - // left hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_MS_U, _______, KC_WH_U, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_BTN1, KC_BTN2, - _______, KC_BTN5, - KC_BTN4, - KC_BTN1, KC_BTN2, KC_BTN3, - // right hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_WH_U, _______, _______, _______, - _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, KC_MPLY, - _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______, - KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, - _______, _______, - _______, - KC_ACL2, KC_ACL1, KC_ACL0 -), - -[GAME] = LAYOUT_ergodox( - // left hand - KC_ESCAPE, KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, - KC_F1, KC_Y, KC_Q, KC_W, KC_E, KC_R, KC_T, - KC_TAB, KC_LSFT, KC_A, KC_S, KC_D, KC_F, - KC_LCTL, KC_B, KC_Z, KC_X, KC_C, KC_V, KC_G, - LT(BASE, KC_L), KC_J, KC_I, KC_O, KC_M, - KC_ESCAPE, _______, - KC_ENTER, - KC_SPACE, KC_LCTL, KC_LALT, - // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), GUI_T(KC_QUOT), - MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB), - KC_LALT, CTL_T(KC_ESC), - KC_PGUP, - KC_PGDN, KC_TAB, KC_ENT -), - -[FIRMWARE] = LAYOUT_ergodox( - // left hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, - _______, - QK_BOOT, _______, _______, - // right hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, - _______, - _______, _______, EE_CLR -), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - switch (keycode) { - case VRSN: - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - return false; - #ifdef RGBLIGHT_ENABLE - case RGB_SLD: - rgblight_mode(1); - return false; - #endif - } - } - return true; -} - -// Runs just one time when the keyboard initializes. -void keyboard_post_init_user(void) { -#ifdef RGBLIGHT_COLOR_LAYER_0 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); -#endif -}; - -// Runs whenever there is a layer state change. -layer_state_t layer_state_set_user(layer_state_t state) { - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - - uint8_t layer = get_highest_layer(state); - switch (layer) { - case 0: - #ifdef RGBLIGHT_COLOR_LAYER_0 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); - #else - #ifdef RGBLIGHT_ENABLE - rgblight_init(); - #endif - #endif - break; - case 1: - ergodox_right_led_1_on(); - #ifdef RGBLIGHT_COLOR_LAYER_1 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); - #endif - break; - case 2: - ergodox_right_led_2_on(); - #ifdef RGBLIGHT_COLOR_LAYER_2 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); - #endif - break; - case 3: - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_3 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); - #endif - break; - case 4: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - #ifdef RGBLIGHT_COLOR_LAYER_4 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); - #endif - break; - case 5: - ergodox_right_led_1_on(); - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_5 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); - #endif - break; - case 6: - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_6 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); - #endif - break; - case 7: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - #ifdef RGBLIGHT_COLOR_LAYER_7 - rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7); - #endif - break; - default: - break; - } - - return state; -}; diff --git a/keyboards/ergodox_ez/keymaps/rishka/rules.mk b/keyboards/ergodox_ez/keymaps/rishka/rules.mk deleted file mode 100644 index c867f89718f2..000000000000 --- a/keyboards/ergodox_ez/keymaps/rishka/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -# TAP_DANCE_ENABLE = yes -MOUSEKEY_ENABLE = yes diff --git a/keyboards/ergodox_ez/keymaps/rmw/config.h b/keyboards/ergodox_ez/keymaps/rmw/config.h deleted file mode 100644 index 1b7528a4a72c..000000000000 --- a/keyboards/ergodox_ez/keymaps/rmw/config.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2012 Jun Wako -Copyright 2013 Oleg Kostyuk -Edited like hell 2017+ by Reed Williams - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 MACOSX - -#define USB_MAX_POWER_CONSUMPTION 500 - -/* Set 0 if debouncing isn't needed */ -#undef DEBOUNCE -#define DEBOUNCE 5 - - -#define ONESHOT_TIMEOUT 900 // how long before oneshot times out -//#define ONESHOT_TAP_TOGGLE 2 // how many taps before oneshot toggle is triggered - -#undef LOCKING_SUPPORT_ENABLE -#undef LOCKING_RESYNC_ENABLE - -#undef MOUSEKEY_DELAY -#define MOUSEKEY_DELAY 20 -#undef MOUSEKEY_MAX_SPEED -#define MOUSEKEY_MAX_SPEED 6 -#undef MOUSEKEY_TIME_TO_MAX -#define MOUSEKEY_TIME_TO_MAX 254 -#undef MOUSEKEY_WHEEL_MAX_SPEED -#define MOUSEKEY_WHEEL_MAX_SPEED 10 -#undef MOUSEKEY_WHEEL_TIME_TO_MAX -#define MOUSEKEY_WHEEL_TIME_TO_MAX 254 - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION -//#define DEBUG_MATRIX_SCAN_RATE diff --git a/keyboards/ergodox_ez/keymaps/rmw/keymap-mac.c b/keyboards/ergodox_ez/keymaps/rmw/keymap-mac.c deleted file mode 100644 index 9d230aaae08a..000000000000 --- a/keyboards/ergodox_ez/keymaps/rmw/keymap-mac.c +++ /dev/null @@ -1,188 +0,0 @@ -#include "rmw.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [QWERTY] = LAYOUT_ergodox( - TD(FRBK2), KC_1, KC_2, KC_3, KC_4, KC_5, KC_F4, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TO(EDIT), - OSL(EDIT), KC_A, LT(NUMPAD,KC_S), KC_D, LT(FSYM,KC_F), KC_G, - LCTL(KC_LEFT), KC_Z, KC_X, KC_C, KC_V, SFT_T(KC_B), KC_TAB, - TD(CTLALL), OSL(ADJUST), TD(GUCTL), TD(SGCA), TD(AGC), - OS_CMD, OS_CTL , - KC_ESCAPE, - KC_BSPC, TD(SHENT), OSL(EDIT), - - KC_F5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - TO(NUMPAD), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, LT(JSYM,KC_J), KC_K, KC_L, LT(EDIT,KC_SCLN), KC_QUOTE, - CTL_T(KC_B), KC_N, KC_M, KC_COMM, KC_DOT, LT(MEDIA,KC_SLSH), LCTL(KC_RIGHT), - TD(GCA), TD(CTLALL), KC_LBRC, KC_RBRC, KC_MS_BTN1, - OS_CALT, KC_TAB, - KC_DEL, - KC_CAPS, SFTENT, KC_SPC), - - - [MINIMAK4] = LAYOUT_ergodox( - TD(FRBK2), KC_1, KC_2, KC_3, KC_4, KC_5, KC_F4, - KC_TAB, KC_Q, KC_W, KC_D, KC_R, KC_K, TO(EDIT), - OSL(EDIT), KC_A, LT(NUMPAD,KC_S), KC_T, LT(FSYM,KC_F), KC_G, - OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, SFT_T(KC_B), KC_TAB, - TD(CTLALL), OSL(ADJUST), TD(GUCTL), TD(SGCA), TD(AGC), - OS_CMD, OS_CTL , - KC_ESCAPE, - KC_BSPC, TD(SHENT), OSL(EDIT), - KC_F5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - TO(NUMPAD), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, LT(JSYM,KC_J), KC_E, KC_L, LT(EDIT,KC_SCLN), KC_QUOTE, - CTL_T(KC_B), KC_N, KC_M, KC_COMM, KC_DOT, LT(MEDIA,KC_SLSH), KC_MS_BTN1, - TD(GCA), TD(CTLALL), LGUI(KC_GRV), KC_RBRC, KC_MS_BTN1, - OS_ALT, KC_TAB, - KC_DEL, - KC_CAPS, SFT_T(KC_ENT), KC_SPC), - - [NUMPAD] = LAYOUT_ergodox(VRSN, KC_F11, KC_F12, KC_F1, KC_F2, KC_F3, _______, - _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, TO(QWERTY), - _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, - _______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_Y), _______, - _______, _______, _______, _______, _______, - _______, _______, KC_PSCR, _______, _______, TO(QWERTY), - - _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - TO(EDIT), _______, KC_7, KC_8, KC_9, KC_KP_MINUS, _______, - _______, KC_4, KC_5, KC_6, KC_KP_PLUS, _______, - _______, KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH, _______, - KC_0, KC_DOT, KC_EQUAL, KC_KP_ASTERISK, _______, - _______, _______, KC_INSERT, TO(EDIT), _______, _______), - - [EDIT] = LAYOUT_ergodox(_______, _______, KC_MS_WH_UP, KC_MS_BTN1, KC_MS_BTN2, _______, _______, - _______, LGUI(LALT(KC_ESCAPE)), KC_MS_WH_DOWN, LALT(S(KC_LEFT)), LALT(S(KC_RIGHT)), _______, TO(NUMPAD), - _______, _______, LGUI(KC_GRV), LALT(KC_LEFT), LALT(KC_RIGHT), _______, - LCTL(KC_RIGHT), LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_Y), _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, TO(NUMPAD), - _______, _______, _______, S(KC_UP), _______, _______, KC_DELETE, - TO(QWERTY), LGUI(KC_T), KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, _______, - LGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LGUI(KC_RIGHT), _______, - _______, S(LGUI(KC_LEFT)), S(KC_LEFT), S(KC_DOWN), S(KC_RIGHT), S(LGUI(KC_RIGHT)), LCTL(KC_LEFT), - _______, _______, FORM_GET, FORM_PUT, _______, - _______, _______, _______, S(KC_F10), _______, _______), - - [FSYM] = LAYOUT_ergodox(_______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_TILD, KC_EXLM, _______, _______, - LCTL(KC_RIGHT), _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, DEL_WRD, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, KC_CIRC, KC_AMPR , KC_ASTR, KC_GRV , _______, _______, - KC_EQUAL, KC_MINUS, KC_UNDS, KC_BSLS, KC_COLON, KC_DQT , - _______, _______, KC_PLUS , KC_SLSH, KC_PIPE, _______ , _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), - - [JSYM] = LAYOUT_ergodox(_______, _______, _______, _______, _______, _______, _______, - _______, KC_GRV, KC_AT , KC_LCBR, KC_RCBR, _______, _______, - _______, KC_HASH, KC_DLR , KC_LPRN, KC_RPRN, KC_LEFT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_QUES, KC_SLSH, KC_COLON, _______, - _______, _______, _______, _______, _______, _______, LCTL(KC_LEFT), - _______, _______, _______, _______, _______, - _______, _______, _______, _______, LGUI(KC_DOWN), _______), - - [MEDIA] = LAYOUT_ergodox(_______, _______, KC_MS_BTN4, _______, KC_MS_BTN5, _______, _______, - _______, KC_MS_WH_UP, KC_MS_WH_LEFT, KC_MS_UP, KC_MS_WH_RIGHT, _______, _______, - _______, KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, - _______, _______, KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, - _______, _______, _______, _______, KC_MS_BTN3, - _______, _______, _______, KC_MS_BTN1, KC_MS_BTN2, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, _______, _______, - KC_MEDIA_REWIND, KC_MEDIA_FAST_FORWARD, _______, _______, _______, - _______, _______, _______, _______, KC_MS_BTN1, KC_MEDIA_PLAY_PAUSE), - - [ADJUST] = LAYOUT_ergodox(_______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, TO(EDIT), TO(NUMPAD), TO(FSYM), TO(JSYM), TO(MEDIA), - _______, _______, _______, _______, _______, _______, _______, - _______, TO(QWERTY), DF(MINIMAK4), DF(QWERTY), _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), - -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case VRSN: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - case FORM_GET: - if (record->event.pressed) { - tap_code(KC_BTN1); - tap_code16(G(KC_A)); - tap_code16(G(KC_C)); - } - return false; - case FORM_PUT: - if (record->event.pressed) { - tap_code(KC_BTN1); - tap_code16(G(KC_A)); - tap_code16(G(KC_V)); - } - return false; - } - return true; -} - -layer_state_t layer_state_set_user(layer_state_t state) { - switch (get_highest_layer(state)) { - case QWERTY: - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - break; - case NUMPAD: - ergodox_right_led_1_on(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - break; - case EDIT: - ergodox_right_led_1_off(); - ergodox_right_led_2_on(); - ergodox_right_led_3_off(); - break; - case FSYM: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_off(); - break; - case JSYM: - ergodox_right_led_1_on(); - ergodox_right_led_2_off(); - ergodox_right_led_3_on(); - break; - case MEDIA: - ergodox_right_led_1_off(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - case ADJUST: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - } - return state; -} diff --git a/keyboards/ergodox_ez/keymaps/rmw/keymap-win.c b/keyboards/ergodox_ez/keymaps/rmw/keymap-win.c deleted file mode 100644 index aada71fd4f59..000000000000 --- a/keyboards/ergodox_ez/keymaps/rmw/keymap-win.c +++ /dev/null @@ -1,159 +0,0 @@ -#include "rmw.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [QWERTY] = LAYOUT_ergodox( // LEFT HAND - TD(FRBK), KC_1, KC_2, KC_3, KC_4, KC_5, KC_F4, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TO(EDIT), - OSL(EDIT), KC_A, LT(NUMPAD,KC_S), KC_D, LT(FSYM,KC_F), KC_G, - OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, SFT_T(KC_B), KC_TAB, - TD(CTLAND), OSL(ADJUST), TD(SCAG), TD(TDGUI), TD(ACG), - OS_ALT, OS_CTL , - KC_ESCAPE, - KC_BSPC, TD(SHENT), OSL(EDIT), - - // RIGHT HAND - KC_F5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - TO(NUMPAD), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, LT(JSYM,KC_J), KC_K, KC_L, LT(EDIT,KC_SCLN), KC_QUOTE, - CTL_T(KC_B), KC_N, KC_M, KC_COMM, KC_DOT, LT(MEDIA,KC_SLSH), TD(SHENT), - TD(CAG), TD(TDGUI), KC_LBRC, KC_RBRC, KC_MS_BTN1, - OS_ALT, KC_TAB, - KC_DEL, - KC_CAPS, SFT_T(KC_ENT), KC_SPC), - - - [NUMPAD] = LAYOUT_ergodox(VRSN, KC_F11, KC_F12, KC_F1, KC_F2, KC_F3, _______, - _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, TO(0), - _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, - _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), LCTL(KC_Y), _______, - _______, _______, _______, _______, _______, - _______, _______, KC_PSCR, _______, _______, TO(0), - - _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, - TO(EDIT), _______, KC_7, KC_8, KC_9, KC_KP_MINUS, _______, - _______, KC_4, KC_5, KC_6, KC_KP_PLUS, _______, - _______, KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH, _______, - KC_0, KC_DOT, KC_EQUAL, KC_KP_ASTERISK, _______, - _______, _______, KC_INSERT, TO(EDIT), _______, _______), - - [EDIT] = LAYOUT_ergodox(KC_ESCAPE, LALT(LCTL(KC_DELETE)), KC_MS_WH_UP, KC_MS_BTN1, KC_MS_BTN2, _______, _______, - _______, LCTL(S(KC_ESCAPE)), KC_MS_WH_DOWN, LCTL(S(KC_LEFT)), LCTL(S(KC_RIGHT)), _______, TO(NUMPAD), - _______, _______, KC_LEFT, LCTL(KC_LEFT), LCTL(KC_RIGHT), _______, - _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), LCTL(KC_Y), _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, TO(NUMPAD), - _______, _______, _______, S(KC_UP), _______, _______, KC_DELETE, - TO(0), LCTL(KC_T), KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, _______, - KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, _______, - _______, S(KC_HOME), S(KC_LEFT), S(KC_DOWN), S(KC_RIGHT), S(KC_END), _______, - _______, _______, _______, _______, _______, - _______, _______, _______, S(KC_F10), _______, _______), - - [FSYM] = LAYOUT_ergodox(_______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_TILD, KC_EXLM, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, KC_CIRC, KC_AMPR , KC_ASTR, KC_GRV , _______, _______, - KC_EQUAL, KC_MINUS, KC_UNDS, KC_BSLS, KC_COLON, KC_DQT , - _______, _______, KC_PLUS , KC_SLSH, KC_PIPE, _______ , _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), - - [JSYM] = LAYOUT_ergodox(_______, _______, _______, _______, _______, _______, _______, - _______, KC_GRV, KC_AT , KC_LCBR, KC_RCBR, _______, _______, - _______, KC_HASH, KC_DLR , KC_LPRN, KC_RPRN, KC_LEFT, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_QUES, KC_SLSH, KC_COLON, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), - - [MEDIA] = LAYOUT_ergodox(_______, _______, KC_MS_BTN4, _______, KC_MS_BTN5, _______, _______, - _______, KC_MS_WH_UP, KC_MS_WH_LEFT, KC_MS_UP, KC_MS_WH_RIGHT, _______, _______, - _______, KC_MS_WH_DOWN, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, - _______, _______, KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, - _______, _______, _______, _______, KC_MS_BTN3, - _______, _______, _______, KC_MS_BTN1, KC_MS_BTN2, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, KC_AUDIO_VOL_DOWN, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, _______, _______, - KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, _______, _______, _______, - _______, _______, _______, _______, KC_MS_BTN1, KC_MEDIA_PLAY_PAUSE), - - [ADJUST] = LAYOUT_ergodox(_______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, TO(EDIT), TO(NUMPAD), TO(FSYM), TO(JSYM), TO(MEDIA), - _______, _______, _______, _______, _______, _______, _______, - _______, TO(QWERTY), _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______), - -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - // dynamically generate these. - case VRSN: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - return false; - } - return true; -} - - -layer_state_t layer_state_set_user(layer_state_t state) { - switch (get_highest_layer(state)) { - case QWERTY: - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - break; - case NUMPAD: - ergodox_right_led_1_on(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - break; - case EDIT: - ergodox_right_led_1_off(); - ergodox_right_led_2_on(); - ergodox_right_led_3_off(); - break; - case FSYM: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_off(); - break; - case JSYM: - ergodox_right_led_1_on(); - ergodox_right_led_2_off(); - ergodox_right_led_3_on(); - break; - case MEDIA: - ergodox_right_led_1_off(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - case ADJUST: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - } - return state; -} diff --git a/keyboards/ergodox_ez/keymaps/rmw/keymap.c b/keyboards/ergodox_ez/keymaps/rmw/keymap.c deleted file mode 100644 index d2cff99429d0..000000000000 --- a/keyboards/ergodox_ez/keymaps/rmw/keymap.c +++ /dev/null @@ -1,13 +0,0 @@ -#include QMK_KEYBOARD_H -#include "version.h" - -#define LONGPRESS_DELAY 180 -#define LAYER_TOGGLE_DELAY 350 - -#ifdef MACOSX -#include "keymap-mac.c" -#endif - -#ifdef WINDOWS -#include "keymap-win.c" -#endif diff --git a/keyboards/ergodox_ez/keymaps/rmw/readme.md b/keyboards/ergodox_ez/keymaps/rmw/readme.md deleted file mode 100644 index 36e0d1de00d6..000000000000 --- a/keyboards/ergodox_ez/keymaps/rmw/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# RMW Ergodox_EZ Layout - -This is the keymap I use on the Ergodox_EZ I use for work. I write reports and code in a variety of languages on this board and the various layers provide plenty of flexibility for navigating, editing text, and writing code and prose. - -I switched to a Mac in the past year, so my keymap now mostly gets used in the Mac mode; simply edit the keymap.c file to uncomment \#include keymap-win.c and comment out \#include keymap-mac.c to change back to the Windows version, but I haven't been updating that map as I've made changes moving forward on the Mac version. - -## The theory of this keymap - -The base layer is either QWERTY or MINIMAK4, as desired. Overlaid on that base layer are various layers triggered by one-shots, TOs, and LTs. Tapdances are used to cram lots of mods into few keys and provide freedom to hit combinations with either hand. Mods and layer things are one-shot (where reasonable) because I prefer that. - -An EDIT layer provides text navigation, selection, and editing capabilities in home position. The EXCEL layer offers a numpad and various spreadsheet-useful navigations and operations. Holding S will put the numpad under your right hand in home position. Keys F and J offer various useful symbols (mostly) on the opposite hand when held, including \[\]\(\)\{\} under the left pointer and middle fingers on bottom, middle, and top rows respectively. The MEDIA layer provides media controls (obvs) and some mouse movement and nav, in case I don't feel like reaching for the trackball/trackpad/mouse. diff --git a/keyboards/ergodox_ez/keymaps/rmw/rules.mk b/keyboards/ergodox_ez/keymaps/rmw/rules.mk deleted file mode 100644 index 31e0fcf29339..000000000000 --- a/keyboards/ergodox_ez/keymaps/rmw/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE=yes diff --git a/keyboards/ergodox_ez/keymaps/steno/keymap.c b/keyboards/ergodox_ez/keymaps/steno/keymap.c index 0e5d7e3a222d..84c18fbd95c0 100644 --- a/keyboards/ergodox_ez/keymaps/steno/keymap.c +++ b/keyboards/ergodox_ez/keymaps/steno/keymap.c @@ -1,7 +1,4 @@ #include QMK_KEYBOARD_H -#include "debug.h" -#include "action_layer.h" -#include "keymap_steno.h" #define BASE 0 // default layer #define SYMB 1 // symbols diff --git a/keyboards/ergodox_ez/led_i2c.c b/keyboards/ergodox_ez/led_i2c.c index fe40ab797e71..23ef91b74feb 100644 --- a/keyboards/ergodox_ez/led_i2c.c +++ b/keyboards/ergodox_ez/led_i2c.c @@ -22,7 +22,7 @@ along with this program. If not, see . # include "ergodox_ez.h" -void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) { +void rgblight_call_driver(rgb_led_t *led, uint8_t led_num) { i2c_init(); i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT); int i = 0; diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk index dc72f6385c7e..bba3bd86aef7 100644 --- a/keyboards/ergodox_ez/rules.mk +++ b/keyboards/ergodox_ez/rules.mk @@ -21,7 +21,7 @@ RGB_MATRIX_ENABLE = no # enable later # project specific files SRC += matrix.c \ led_i2c.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes # Disable unsupported hardware AUDIO_SUPPORTED = no diff --git a/keyboards/ergodox_stm32/rules.mk b/keyboards/ergodox_stm32/rules.mk index 5b86324f9a2c..5481eef1a2ee 100644 --- a/keyboards/ergodox_stm32/rules.mk +++ b/keyboards/ergodox_stm32/rules.mk @@ -16,4 +16,4 @@ CUSTOM_MATRIX = yes # Custom matrix file UNICODE_ENABLE = yes # Unicode SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/ergoslab/keymaps/default/keymap.c b/keyboards/ergoslab/keymaps/default/keymap.c index 093d586eba7c..e2a9f0b32239 100644 --- a/keyboards/ergoslab/keymaps/default/keymap.c +++ b/keyboards/ergoslab/keymaps/default/keymap.c @@ -16,7 +16,7 @@ enum layer_names { #endif const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [BASE] = LAYOUT_ergoslab( + [BASE] = LAYOUT( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, @@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LBRC, KC_LPRN, KC_ESC, MO(MDIA),KC_RGUI, KC_TAB, TG(MOUS), KC_BSPC, KC_RPRN, KC_RBRC ), - [MDIA] = LAYOUT_ergoslab( + [MDIA] = LAYOUT( KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, KC_F11, KC_F12, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, KC_MUTE, @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [NUMB] = LAYOUT_ergoslab( + [NUMB] = LAYOUT( KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_BSLS, KC_PIPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_GRV, KC_COLN, KC_TILD, _______, _______, _______, @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), - [MOUS] = LAYOUT_ergoslab( + [MOUS] = LAYOUT( _______, _______, KC_MS_U, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN3, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/ergoslab/rev1/info.json b/keyboards/ergoslab/rev1/info.json index e92dd4dccc86..51c522043b37 100644 --- a/keyboards/ergoslab/rev1/info.json +++ b/keyboards/ergoslab/rev1/info.json @@ -24,8 +24,11 @@ }, "processor": "atmega32u4", "bootloader": "caterina", + "layout_aliases": { + "LAYOUT_ergoslab": "LAYOUT" + }, "layouts": { - "LAYOUT_ergoslab": { + "LAYOUT": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0.625}, {"matrix": [0, 1], "x": 1, "y": 0.125}, diff --git a/keyboards/ergotravel/keymaps/jarred/config.h b/keyboards/ergotravel/keymaps/jarred/config.h deleted file mode 100644 index c2948493ed66..000000000000 --- a/keyboards/ergotravel/keymaps/jarred/config.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2017 Pierre Constantineau - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define USE_I2C - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS diff --git a/keyboards/ergotravel/keymaps/jarred/keymap.c b/keyboards/ergotravel/keymaps/jarred/keymap.c deleted file mode 100644 index adedebe6efae..000000000000 --- a/keyboards/ergotravel/keymaps/jarred/keymap.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright 2018 Jarred Steenvoorden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "jarred.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = LAYOUT_ergotravel_grid_wrapper( - QWERTY_L1, KC_NO, KC_NO, QWERTY_R1, - QWERTY_L2, KC_NO, KC_NO, QWERTY_R2, - QWERTY_L3, KC_NO, KC_NO, QWERTY_R3, - QWERTY_4_12), - - [_LW] = LAYOUT_ergotravel_grid_wrapper( - LOWER_L1, KC_NO, KC_NO, LOWER_R1, - LOWER_L2, KC_NO, KC_NO, LOWER_R2, - LOWER_L3, KC_NO, KC_NO, LOWER_R3, - LOWER_4_12), - - [_NV] = LAYOUT_ergotravel_grid_wrapper( - NAV_L1, KC_NO, KC_NO, NAV_R1, - NAV_L2, KC_NO, KC_NO, NAV_R2, - NAV_L3, KC_NO, KC_NO, NAV_R3, - NAV_4_12), - - [_NP] = LAYOUT_ergotravel_grid_wrapper( - NUMPAD_L1, KC_NO, KC_NO, NUMPAD_R1, - NUMPAD_L2, KC_NO, KC_NO, NUMPAD_R2, - NUMPAD_L3, KC_NO, KC_NO, NUMPAD_R3, - NUMPAD_4_12), - - [_MS] = LAYOUT_ergotravel_grid_wrapper( - MOUSE_L1, KC_NO, KC_NO, MOUSE_R1, - MOUSE_L2, KC_NO, KC_NO, MOUSE_R2, - MOUSE_L3, KC_NO, KC_NO, MOUSE_R3, - MOUSE_4_12) -}; diff --git a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 40cf1e37525d..000000000000 --- a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ -XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \ -) diff --git a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/ergotravel/keymaps/rs/config.h b/keyboards/ergotravel/keymaps/rs/config.h deleted file mode 100644 index 53487d0f9248..000000000000 --- a/keyboards/ergotravel/keymaps/rs/config.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright 2017 Pierre Constantineau - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#undef RGBLED_NUM -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#define RGBLED_NUM 12 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/ergotravel/keymaps/rs/keymap.c b/keyboards/ergotravel/keymaps/rs/keymap.c deleted file mode 100644 index f8c6de56bc7f..000000000000 --- a/keyboards/ergotravel/keymaps/rs/keymap.c +++ /dev/null @@ -1,38 +0,0 @@ -#include QMK_KEYBOARD_H -#include "rs.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_GRV, KC_BSLS, KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_EQL , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - KC_ESCC, KC_A , KC_S , KC_D , KC_F , KC_G ,KC_PIPE, KC_MINS, KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_SPC, KC_BSPC, KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_ENTS, - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - KC_FN ,_______,KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_BSPC, KC_CODE,KC_LEFT, KC_UP ,KC_DOWN,KC_RIGHT - //`----+----+----+--+-+----/----/ \----\----+----+----+----+----' - ), - [_CODE] = LAYOUT( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - KC_GRV ,KC_EXLM, KC_AT ,KC_HASH, KC_DLR,KC_PERC,_______, _______,KC_CIRC,KC_LPLT,KC_ASTR,KC_RPGT,KC_NEQL,_______, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 ,_______, _______,KC_MINS,KC_LBRC, KC_UP ,KC_RBRC,_______,KC_BSLS, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - _______, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_DOT, _______,KC_AMPR,KC_LEFT,KC_DOWN,KC_RGHT,_______,KC_PIPE, - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______ - //`----+----+----+----+----/----/ \----\----+----+----+----+----' - ), - [_FN] = LAYOUT( - //,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----. - _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 ,_______, _______, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10,KC_F11 , - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - _______,_______,_______,_______,_______,_______,KC_BRMU, _______,_______,_______,KC_PGUP,_______,_______,_______, - //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----| - _______,_______,_______,_______,_______, KC_RST,KC_BRMD, KC_VOLU,_______,KC_CTRA,KC_PGDN,KC_CTRE,_______,_______, - //|----+----+----+----+----+----+----. .----+----+----+----+----+----+----| - _______,_______,_______,_______,_______,_______, KC_VOLD,KC_MUTE,_______,_______,_______,_______ - //`----+----+----+----+----/----/ \----\----+----+----+----+----' - ), -}; diff --git a/keyboards/ergotravel/keymaps/rs/readme.md b/keyboards/ergotravel/keymaps/rs/readme.md deleted file mode 100644 index d23ab66877a5..000000000000 --- a/keyboards/ergotravel/keymaps/rs/readme.md +++ /dev/null @@ -1 +0,0 @@ -See [rs readme](../../../../users/rs/readme.md). \ No newline at end of file diff --git a/keyboards/ergotravel/keymaps/yanfali/config.h b/keyboards/ergotravel/keymaps/yanfali/config.h deleted file mode 100644 index 194503df2d4e..000000000000 --- a/keyboards/ergotravel/keymaps/yanfali/config.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2017 Pierre Constantineau - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS - -#undef RGBLED_NUM -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#define RGBLED_NUM 12 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 - -#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_LGUI))) diff --git a/keyboards/ergotravel/keymaps/yanfali/keymap.c b/keyboards/ergotravel/keymaps/yanfali/keymap.c deleted file mode 100644 index b2b62484a9ee..000000000000 --- a/keyboards/ergotravel/keymaps/yanfali/keymap.c +++ /dev/null @@ -1,108 +0,0 @@ -#include QMK_KEYBOARD_H - -extern keymap_config_t keymap_config; - -#define _QWERTY 0 -#define _LOWER 1 -#define _RAISE 2 -#define _ADJUST 16 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - LOWER, - RAISE, - ADJUST, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT( - //,---------------------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------. - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINUS, - //|---------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - MT(MOD_LCTL, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LCBR, KC_RCBR, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - //|---------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - //|---------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - ADJUST, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_BSPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT - //`---------------------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------' - ), - - [_LOWER] = LAYOUT( - //,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------. - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_Y, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - KC_CAPS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______ - //`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------' - ), - - - [_RAISE] = LAYOUT( - //,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------. - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, KC_Y, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______ - //`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------' - ), - - [_ADJUST] = LAYOUT( - //,--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------. - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - _______, _______, _______, _______, _______, _______, _______, RAISE, _______, _______, _______, _______ - //`--------+--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------+--------' - ) - -}; - - - - - - - -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/ergotravel/keymaps/yanfali/rules.mk b/keyboards/ergotravel/keymaps/yanfali/rules.mk deleted file mode 100644 index ab3621cd7ed7..000000000000 --- a/keyboards/ergotravel/keymaps/yanfali/rules.mk +++ /dev/null @@ -1,7 +0,0 @@ -BOOTLOADER = qmk-dfu - -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. -LTO_ENABLE = yes diff --git a/keyboards/etiennecollin/wave/info.json b/keyboards/etiennecollin/wave/info.json new file mode 100644 index 000000000000..5e31a1ca2afd --- /dev/null +++ b/keyboards/etiennecollin/wave/info.json @@ -0,0 +1,104 @@ +{ + "keyboard_name": "Wave", + "maintainer": "etiennecollin", + "manufacturer": "Etienne Collin", + "url": "https://github.com/etiennecollin/wave", + "bootloader_instructions": "Press the button marked RESET on the PCB or bridge the pins marked RST and GND on the Elite-C", + "tags": ["ortho", "split"], + + "build": { + "lto": true + }, + "development_board": "elite_c", + "pin_compatible": "elite_c", + "usb": { + "device_version": "0.0.1", + "vid": "0x6967", + "pid": "0x0000" + }, + + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + + "matrix_pins": { + "direct": [ + ["C6", "D4", "D0", "D1", "D3"], + ["B6", "B5", "B4", "E6", "D7"], + ["F6", "F7", "B1", "B3", "B2"], + ["NO_PIN", "NO_PIN", "F5", "F4", "B0"] + ] + }, + "community_layouts": ["split_3x5_3"], + "split": { + "enabled": true, + "soft_serial_pin": "D2", + "usb_detect": { + "enabled": true + }, + "matrix_pins": { + "right": { + "direct": [ + ["D3", "D1", "D0", "D4", "C6"], + ["D7", "E6", "B4", "B5", "B6"], + ["B2", "B3", "B1", "F7", "F6"], + ["B0", "F4", "F5", "NO_PIN", "NO_PIN"] + ] + } + } + }, + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0.93 }, + { "matrix": [0, 1], "x": 1, "y": 0.31 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0.28 }, + { "matrix": [0, 4], "x": 4, "y": 0.42 }, + + { "matrix": [4, 0], "x": 7, "y": 0.42 }, + { "matrix": [4, 1], "x": 8, "y": 0.28 }, + { "matrix": [4, 2], "x": 9, "y": 0 }, + { "matrix": [4, 3], "x": 10, "y": 0.31 }, + { "matrix": [4, 4], "x": 11, "y": 0.93 }, + + { "matrix": [1, 0], "x": 0, "y": 1.93 }, + { "matrix": [1, 1], "x": 1, "y": 1.31 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1.28 }, + { "matrix": [1, 4], "x": 4, "y": 1.42 }, + + { "matrix": [5, 0], "x": 7, "y": 1.42 }, + { "matrix": [5, 1], "x": 8, "y": 1.28 }, + { "matrix": [5, 2], "x": 9, "y": 1 }, + { "matrix": [5, 3], "x": 10, "y": 1.31 }, + { "matrix": [5, 4], "x": 11, "y": 1.93 }, + + { "matrix": [2, 0], "x": 0, "y": 2.93 }, + { "matrix": [2, 1], "x": 1, "y": 2.31 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2.28 }, + { "matrix": [2, 4], "x": 4, "y": 2.42 }, + + { "matrix": [6, 0], "x": 7, "y": 2.42 }, + { "matrix": [6, 1], "x": 8, "y": 2.28 }, + { "matrix": [6, 2], "x": 9, "y": 2 }, + { "matrix": [6, 3], "x": 10, "y": 2.31 }, + { "matrix": [6, 4], "x": 11, "y": 2.93 }, + + { "matrix": [3, 2], "x": 2.8, "y": 3.5 }, + { "matrix": [3, 3], "x": 3.8, "y": 3.75 }, + { "matrix": [3, 4], "x": 4.8, "y": 3.5, "h": 1.5 }, + + { "matrix": [7, 0], "x": 6.2, "y": 3.5, "h": 1.5 }, + { "matrix": [7, 1], "x": 7.2, "y": 3.75 }, + { "matrix": [7, 2], "x": 8.2, "y": 3.5 } + ] + } + } +} diff --git a/keyboards/etiennecollin/wave/keymaps/default/config.h b/keyboards/etiennecollin/wave/keymaps/default/config.h new file mode 100644 index 000000000000..8d60295560f3 --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/default/config.h @@ -0,0 +1,34 @@ +/* Copyright 2023 Etienne Collin (@etiennecollin) + * + * This program is free software: you can 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 + +// Activate caps word by pressing Left Shift + Right Shift +#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat +#define QUICK_TAP_TERM 0 + +// Maximum time between taps of tap dances +#define TAPPING_TERM 175 + +// Perform hold action if pressing a dual-role key, tapping another key and +// releasing the dual-role key withing tapping term +#define PERMISSIVE_HOLD + +// Perform hold action if pressing a dual-role key, pressing another key, +// releasing the dual-role key and releasing the other key withing tapping term +#define HOLD_ON_OTHER_KEY_PRESS \ No newline at end of file diff --git a/keyboards/etiennecollin/wave/keymaps/default/keymap.json b/keyboards/etiennecollin/wave/keymaps/default/keymap.json new file mode 100644 index 000000000000..993a1b854c12 --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/default/keymap.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "author": "etiennecollin", + "keyboard": "etiennecollin/wave", + "notes": "This is a keymap file for etiennecollin/wave", + "keymap": "default", + "layout": "LAYOUT_split_3x5_3", + "config": { + "features": { + "caps_word": true + } + }, + "layers": [ + [ + "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", + "LGUI_T(KC_A)", "LALT_T(KC_S)", "LCTL_T(KC_D)", "LSFT_T(KC_F)", "KC_G", "KC_H", "LSFT_T(KC_J)", "LCTL_T(KC_K)", "LALT_T(KC_L)", "LGUI_T(KC_SCLN)", + "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", + "KC_ESC", "KC_SPC", "KC_TAB", "KC_ENT", "KC_BSPC", "MO(1)" + ], + [ + "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", + "KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", + "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "_______" + ] + ] +} \ No newline at end of file diff --git a/keyboards/etiennecollin/wave/keymaps/default/readme.md b/keyboards/etiennecollin/wave/keymaps/default/readme.md new file mode 100644 index 000000000000..16586cc1f7eb --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/default/readme.md @@ -0,0 +1,6 @@ +# Default keymap + +This is a really simple QWERTY keymap with a single number/symbol layer. +It uses home row modifiers and the caps word feature because of the limited number of keys. + +For a more complete layout, see the `feature` layout. diff --git a/keyboards/etiennecollin/wave/keymaps/feature/config.h b/keyboards/etiennecollin/wave/keymaps/feature/config.h new file mode 100644 index 000000000000..42421b33d396 --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/feature/config.h @@ -0,0 +1,42 @@ +/* Copyright 2023 Etienne Collin (@etiennecollin) + * + * This program is free software: you can 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 + +// Activate caps word by pressing Left Shift + Right Shift +#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD + +// Maximum time between taps of tap dances +#define TAPPING_TERM 175 + +// Max time between taps to prevent hold function and hold auto-repeat +#define QUICK_TAP_TERM 100 + +// Perform hold action if pressing a dual-role key, tapping another key and +// releasing the dual-role key withing tapping term +#define PERMISSIVE_HOLD + +// Mouse key speed and acceleration. +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_INTERVAL 16 +#define MOUSEKEY_WHEEL_DELAY 0 +#define MOUSEKEY_MAX_SPEED 6 +#define MOUSEKEY_TIME_TO_MAX 64 + +// Thumb Combos +#define COMBO_COUNT 2 +#define COMBO_TERM 200 +#define EXTRA_SHORT_COMBOS diff --git a/keyboards/etiennecollin/wave/keymaps/feature/keymap.c b/keyboards/etiennecollin/wave/keymaps/feature/keymap.c new file mode 100644 index 000000000000..24bc85d5b499 --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/feature/keymap.c @@ -0,0 +1,191 @@ +/* Copyright 2023 Etienne Collin (@etiennecollin) + * + * This program is free software: you can 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 QMK_KEYBOARD_H + +enum custom_layers { + COL, + QWE, + GAM, + MED, + NAV, + MOS, + SYM, + NUM, + FUN, + SYS, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [COL] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | q | w | f | p | b | | j | l | u | y | ' | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | a | r | s | t | g | | m | n | e | i | o | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | z | x | c | d | v | | k | h | , | . | / | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | esc | spc | tab | | ent | bsp | del | + // --------+-------+-------- --------+-------+-------- + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, + LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + LT(MED, KC_ESC), LT(NAV, KC_SPC), LT(MOS, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL) + ), + [QWE] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | q | w | e | r | t | | y | u | i | o | p | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | a | s | d | f | g | | h | j | k | l | ' | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | z | x | c | v | b | | n | m | , | . | / | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | esc | spc | tab | | ent | bsp | del | + // --------+-------+-------- --------+-------+-------- + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + LT(MED, KC_ESC), LT(NAV, KC_SPC), LT(MOS, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL) + ), + [GAM] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | tab | q | w | e | r | | t | y | u | i | o | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | sht | a | s | d | f | | g | h | j | k | l | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | ctl | z | x | c | v | | b | n | m | , | . | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | alt | cps | spc | | ent | bsp | esc | + // --------+-------+-------- --------+-------+-------- + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, + KC_LALT, KC_CAPS, KC_SPC, LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_ESC) + ), + [MED] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | | | | | | | | | | | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | gui | alt | ctl | sht | | | | prev | vol - | vol + | next | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | | | | | | | | | | | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | ___ | | | | stop | pause | mute | + // --------+-------+-------- --------+-------+-------- + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MRWD, XXXXXXX, XXXXXXX, KC_MFFD, + _______, XXXXXXX, XXXXXXX, KC_MSTP, KC_MPLY, KC_MUTE + ), + [NAV] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | | | | | | | | | | | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | gui | alt | ctl | sht | | | cps | ← | ↓ | ↑ | → | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | | | | | | insrt | home | pageu | paged | end | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | ___ | | | ent | bsp | del | + // --------+-------+-------- --------+-------+-------- + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, + XXXXXXX, _______, XXXXXXX, KC_ENT, KC_BSPC, KC_DEL + ), + [MOS] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | | | | | | | | acc0 | acc1 | acc2 | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | gui | alt | ctl | sht | | | | ← | ↓ | ↑ | → | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | | | | | | | w← | w↓ | w↑ | w→ | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | | ___ | | left | right | mid | + // --------+-------+-------- --------+-------+-------- + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, + KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, + XXXXXXX, XXXXXXX, _______, KC_BTN1, KC_BTN2, KC_BTN3 + ), + [SYM] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | { | & | * | ( | } | | | | | | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | : | $ | % | ^ | + | | | sht | ctl | alt | gui | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | ~ | ! | @ | # | | | | | | | | | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | ( | ) | _ | | ___ | | | + // --------+-------+-------- --------+-------+-------- + KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_LPRN, KC_RPRN, KC_UNDS, _______, XXXXXXX, XXXXXXX + ), + [NUM] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | [ { | 7 & | 8 * | 9 ( | ] } | | | | | | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | ; : | 4 $ | 5 % | 6 ^ | = + | | | sht | ctl | alt | gui | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | ` ~ | 1 ! | 2 @ | 3 # | \ | | | | | | | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | . > | 0 ) | - _ | | | ___ | | + // --------+-------+-------- --------+-------+-------- + KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_DOT, KC_0, KC_MINS, XXXXXXX, _______, XXXXXXX + ), + [FUN] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | F12 | F 7 | F 8 | F 9 | PrScr | | | | | | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | F11 | F 4 | F 5 | F 6 | pause | | | sht | ctl | alt | gui | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | F10 | F 1 | F 2 | F 3 | scrlk | | | | | | | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | app | spc | tab | | | | ___ | + // --------+-------+-------- --------+-------+-------- + KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_F11, KC_F4, KC_F5, KC_F6, KC_PAUS, XXXXXXX, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, + KC_F10, KC_F1, KC_F2, KC_F3, KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_APP, KC_SPC, KC_TAB, XXXXXXX, XXXXXXX, _______ + ), + [SYS] = LAYOUT_split_3x5_3( + // ----------------------------------------- ----------------------------------------- + // | BOOT | | GAME | QWERT | COLMK | | COLMK | QWERT | GAME | | BOOT | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | | | | | | | | | | | + // |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | | | | | | | | | | | + // --------+-------+-------+-------+-------| |-------+-------+-------+-------+-------| + // | | | | | | | | + // --------+-------+-------- --------+-------+-------- + QK_BOOT, XXXXXXX, DF(GAM), DF(QWE), DF(COL), DF(COL), DF(QWE), DF(GAM), XXXXXXX, QK_BOOT, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______ + ) +}; + +const uint16_t PROGMEM combo_sys[] = {LT(MED, KC_ESC), LT(FUN, KC_DEL), COMBO_END}; +const uint16_t PROGMEM combo_sys_gam[] = {KC_LALT, LT(FUN, KC_ESC), COMBO_END}; + +combo_t key_combos[] = { + COMBO(combo_sys, MO(SYS)), + COMBO(combo_sys_gam, MO(SYS)) +}; diff --git a/keyboards/etiennecollin/wave/keymaps/feature/readme.md b/keyboards/etiennecollin/wave/keymaps/feature/readme.md new file mode 100644 index 000000000000..d9971b352b14 --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/feature/readme.md @@ -0,0 +1,11 @@ +# Feature keymap + +This keymap is heavily inspired by the [miryoku](https://github.com/manna-harbour/miryoku) layout. + +It defaults to a [COLEMAK mod dh](https://colemakmods.github.io/mod-dh/) layer, but a QWERTY and a gaming layer are available from the `sys` layer. + +It uses the following features: + +- Home row modifiers +- Usual special layers (`media`, `navigation`, `mouse`, `symbols`, `numbers`, `functions`, `system`) +- Combos (to access the `sys` layer by pressing both external thumb keys) diff --git a/keyboards/etiennecollin/wave/keymaps/feature/rules.mk b/keyboards/etiennecollin/wave/keymaps/feature/rules.mk new file mode 100644 index 000000000000..96093b82013e --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/feature/rules.mk @@ -0,0 +1,2 @@ +CAPS_WORD_ENABLE = yes +COMBO_ENABLE = yes diff --git a/keyboards/etiennecollin/wave/keymaps/test/keymap.json b/keyboards/etiennecollin/wave/keymaps/test/keymap.json new file mode 100644 index 000000000000..e73c86727309 --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/test/keymap.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "author": "etiennecollin", + "keyboard": "etiennecollin/wave", + "notes": "This is a keymap file for etiennecollin/wave", + "keymap": "test", + "layout": "LAYOUT_split_3x5_3", + "config": { + "features": { + "console": true, + "debug": true + } + }, + "layers": [ + [ + "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", + "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", + "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", + "KC_ESC", "KC_SPC", "KC_TAB", "KC_ENT", "KC_BSPC", "KC_DEL" + ] + ] +} \ No newline at end of file diff --git a/keyboards/etiennecollin/wave/keymaps/test/readme.md b/keyboards/etiennecollin/wave/keymaps/test/readme.md new file mode 100644 index 000000000000..3d3400b8f68e --- /dev/null +++ b/keyboards/etiennecollin/wave/keymaps/test/readme.md @@ -0,0 +1,4 @@ +# Test keymap + +Inspired by the [ferris sweep test keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/keymaps/test). +A simple QWERTY keymap used to test the keyboard. As such, it should not be used for other purposes than testing. diff --git a/keyboards/etiennecollin/wave/readme.md b/keyboards/etiennecollin/wave/readme.md new file mode 100644 index 000000000000..a66c6f71d3c2 --- /dev/null +++ b/keyboards/etiennecollin/wave/readme.md @@ -0,0 +1,37 @@ +# Wave + +![Wave pcb](https://i.imgur.com/oWF1Fnr.png) + +_The Wave is a small, reversible keyboard inspired by the [Ferris](https://github.com/pierrechevalier83/ferris), the [Ferris Sweep](https://github.com/davidphilipbarr/Sweep), the [Swoop](https://github.com/jimmerricks/swoop) and the [Sweep36](https://github.com/sadekbaroudi/sweep36). It aims to solve a few issues I found with the keyboards._ + +- Keyboard Maintainer: [Etienne Collin](https://github.com/etiennecollin) +- Hardware Supported: [Wave](https://github.com/etiennecollin/wave) +- Hardware Availability: Print the PCB with gerber files from [latest release in the repository](https://github.com/etiennecollin/wave/releases/latest) + +Make example for this keyboard (after setting up your build environment): + + make etiennecollin/wave:default + +Flashing example for this keyboard: + + make etiennecollin/wave:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Recommended Keymap + +For an everyday keyboard, it is recommended to use the `feature` keymap, as the default keymap is extremely barebone. Here is a make example: + + make etiennecollin/wave:feature + +Flashing example: + + make etiennecollin/wave:feature:flash + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Bootmagic reset**: Hold down the top left key of the left half of the keyboard and plug in the keyboard +- **Physical reset button**: Briefly press the reset button on the front of the PCB or short the GND and RST pins on the controller +- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/etiennecollin/wave/rules.mk b/keyboards/etiennecollin/wave/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/etiennecollin/wave/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/evolv/info.json b/keyboards/evolv/info.json index dc00260cf374..4274e9e43770 100644 --- a/keyboards/evolv/info.json +++ b/keyboards/evolv/info.json @@ -40,8 +40,12 @@ }, "processor": "STM32F072", "bootloader": "stm32-dfu", + "layout_aliases": { + "LAYOUT_evolv_ansi": "LAYOUT_ansi", + "LAYOUT_iso_ansi": "LAYOUT_iso" + }, "layouts": { - "LAYOUT_evolv_ansi": { + "LAYOUT_ansi": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, @@ -150,7 +154,7 @@ {"matrix": [5, 14], "x": 15, "y": 5.5} ] }, - "LAYOUT_evolv_iso": { + "LAYOUT_iso": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, diff --git a/keyboards/evolv/keymaps/default/keymap.c b/keyboards/evolv/keymaps/default/keymap.c index 22866270411e..d049c356b9f1 100755 --- a/keyboards/evolv/keymaps/default/keymap.c +++ b/keyboards/evolv/keymaps/default/keymap.c @@ -17,35 +17,19 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -#define MEDIA_KEY_DELAY 100 - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_evolv_ansi( + [0] = LAYOUT_ansi( KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_INS , - 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_DEL , KC_VOLU, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_DEL , KC_VOLU, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, KC_MPRV, KC_MPLY, KC_MNXT, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN, KC_VOLD, 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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_evolv_ansi( + [1] = LAYOUT_ansi( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS, - _______, _______, _______, _______, _______, _______, _______, _______, _______), - [2] = LAYOUT_evolv_ansi( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______), - [3] = LAYOUT_evolv_ansi( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/keyboards/evolv/keymaps/gondolindrim/keymap.c b/keyboards/evolv/keymaps/gondolindrim/keymap.c index bf0944fbd100..992901a86d9a 100755 --- a/keyboards/evolv/keymaps/gondolindrim/keymap.c +++ b/keyboards/evolv/keymaps/gondolindrim/keymap.c @@ -145,28 +145,28 @@ Due to the way rgblight.c stores to and re-stores RGB configurations from EEPROM Adapt this at will with the caveat that you should not have more nor less than four layers. And let's be honest, if you find yourself needing more than four layers on a 75% keyboard you are probably doing something wrong. */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_evolv_iso( + [0] = LAYOUT_iso( 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_INS , 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_DEL , ENCNTH, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_ENT , KC_PGUP, ENCWST , ENCCLK, ENCEST, 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_PGDN, ENCSTH, KC_LSFT, KC_BSLS, 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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_evolv_iso( + [1] = LAYOUT_iso( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCNTH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCWST , ENCCLK, ENCEST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCSTH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______), - [2] = LAYOUT_evolv_iso( + [2] = LAYOUT_iso( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCNTH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCWST , ENCCLK, ENCEST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCSTH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - [3] = LAYOUT_evolv_iso( + [3] = LAYOUT_iso( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCNTH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ENCWST , ENCCLK, ENCEST, diff --git a/keyboards/evolv/keymaps/iso/keymap.c b/keyboards/evolv/keymaps/iso/keymap.c index 391bcdf5bbf1..379b9a51caf2 100755 --- a/keyboards/evolv/keymaps/iso/keymap.c +++ b/keyboards/evolv/keymaps/iso/keymap.c @@ -17,35 +17,19 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -#define MEDIA_KEY_DELAY 100 - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_evolv_iso( + [0] = LAYOUT_iso( 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_INS , - 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_DEL , KC_VOLU, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_DEL , KC_VOLU, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_ENT , KC_PGUP, KC_MPRV, KC_MPLY, KC_MNXT, 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_PGDN, KC_VOLD, KC_LSFT, KC_BSLS, 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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_evolv_iso( + [1] = LAYOUT_iso( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS, - _______, _______, _______, _______, _______, _______, _______, _______, _______), - [2] = LAYOUT_evolv_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______), - [3] = LAYOUT_evolv_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/keyboards/evolv/keymaps/via/keymap.c b/keyboards/evolv/keymaps/via/keymap.c index 391bcdf5bbf1..379b9a51caf2 100755 --- a/keyboards/evolv/keymaps/via/keymap.c +++ b/keyboards/evolv/keymaps/via/keymap.c @@ -17,35 +17,19 @@ along with this program. If not, see . #include QMK_KEYBOARD_H -#define MEDIA_KEY_DELAY 100 - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_evolv_iso( + [0] = LAYOUT_iso( 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_INS , - 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_DEL , KC_VOLU, + KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_DEL , KC_VOLU, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_ENT , KC_PGUP, KC_MPRV, KC_MPLY, KC_MNXT, 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_PGDN, KC_VOLD, KC_LSFT, KC_BSLS, 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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), - [1] = LAYOUT_evolv_iso( + [1] = LAYOUT_iso( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TRNS, - _______, _______, _______, _______, _______, _______, _______, _______, _______), - [2] = LAYOUT_evolv_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______), - [3] = LAYOUT_evolv_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/keyboards/evyd13/atom47/rev5/config.h b/keyboards/evyd13/atom47/rev5/config.h index f50975beb3fa..53bbf4f51b38 100644 --- a/keyboards/evyd13/atom47/rev5/config.h +++ b/keyboards/evyd13/atom47/rev5/config.h @@ -38,18 +38,7 @@ along with this program. If not, see . //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT -// This is a 7-bit address, that gets left-shifted and bit 0 -// set to 0 for write, 1 for read (as per I2C protocol) -// The address will vary depending on your wiring: -// 00 <-> GND -// 01 <-> SCL -// 10 <-> SDA -// 11 <-> VCC -// ADDR1 represents A1:A0 of the 7-bit address. -// ADDR2 represents A3:A2 of the 7-bit address. -// The result is: 0b101(ADDR2)(ADDR1) -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_COUNT 1 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND #define RGB_MATRIX_LED_COUNT 64 // RGB Matrix Animation modes. Explicitly enabled diff --git a/keyboards/evyd13/atom47/rev5/rev5.c b/keyboards/evyd13/atom47/rev5/rev5.c index adec48e6bbe3..7bf2a961ff6d 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 "quantum.h" -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/evyd13/solheim68/info.json b/keyboards/evyd13/solheim68/info.json index a08f7860274d..f348b9855681 100644 --- a/keyboards/evyd13/solheim68/info.json +++ b/keyboards/evyd13/solheim68/info.json @@ -15,6 +15,7 @@ "diode_direction": "COL2ROW", "processor": "atmega32u4", "bootloader": "atmel-dfu", + "community_layouts": ["68_ansi", "68_iso"], "layouts": { "LAYOUT_all": { "layout": [ @@ -261,6 +262,88 @@ {"matrix": [4, 15], "x": 16.25, "y": 4} ] }, + "LAYOUT_68_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 14], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [3, 14], "x": 15.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + + {"matrix": [4, 13], "x": 14.25, "y": 4}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4} + ] + }, "LAYOUT_68_ansi_split_rshift": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, @@ -342,6 +425,89 @@ {"matrix": [4, 15], "x": 16.25, "y": 4} ] }, + "LAYOUT_68_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [2, 14], "x": 13, "y": 0}, + {"matrix": [0, 13], "x": 14, "y": 0}, + + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + + {"matrix": [3, 14], "x": 15.25, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + + {"matrix": [4, 13], "x": 14.25, "y": 4}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4} + ] + }, "LAYOUT_68_iso_split_rshift": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, diff --git a/keyboards/evyd13/solheim68/matrix_diagram.md b/keyboards/evyd13/solheim68/matrix_diagram.md new file mode 100644 index 000000000000..aa2026434519 --- /dev/null +++ b/keyboards/evyd13/solheim68/matrix_diagram.md @@ -0,0 +1,18 @@ +# Matrix diagram for Evyd13 solheim68 + +``` +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┐ ┌───────┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │2E │0D ││0E │0F │ │0D │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┤ └─┬─────┤ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D ││1E │1F │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┘ ┌──┴┐2D │ ISO Enter +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤┌───┐ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D ││3E │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴┬──┴┼───┼───┐ +│40 │41 │42 │46 │4A │4B │4C │ │4D │4E │4F │ +└────┴────┴────┴────────────────────────┴────┴────┴────┘ └───┴───┴───┘ +┌────────┐ ┌──────────┐ +│30 │ 2.25u LShift 2.75u RShift │3C │ +└────────┘ └──────────┘ +``` diff --git a/keyboards/evyd13/wasdat/keymaps/konstantin/config.h b/keyboards/evyd13/wasdat/keymaps/konstantin/config.h deleted file mode 100644 index 3c2583e2d46f..000000000000 --- a/keyboards/evyd13/wasdat/keymaps/konstantin/config.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -#define LAYER_FN -#define LAYER_NUMPAD diff --git a/keyboards/evyd13/wasdat/keymaps/konstantin/keymap.c b/keyboards/evyd13/wasdat/keymaps/konstantin/keymap.c deleted file mode 100644 index fcbab46b7219..000000000000 --- a/keyboards/evyd13/wasdat/keymaps/konstantin/keymap.c +++ /dev/null @@ -1,79 +0,0 @@ -#include QMK_KEYBOARD_H -#include "konstantin.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base layer - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┬───┬───┐ - * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12││PSc│SLk│Pau│ - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ - * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bspace ││Ins│Hom│PgU│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ - * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ ││Del│End│PgD│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐Ent │└───┴───┴───┘ - * │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ - * │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ RShift │ │ ↑ │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ - * │LCtl│LGui│LAlt│ Space │RAlt│RGui│FnFL│RCtl││ ← │ ↓ │ → │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ - */ - [L_BASE] = LAYOUT_tkl_iso( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_DEL, KC_END, KC_PGDN, - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, - KC_LSFT, RAL_RGU, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, FN_FNLK, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* Fn layer - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┬───┬───┐ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │Num│Mut│ - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ - * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Clear ││Ply│Stp│Vo+│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ - * │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │ │ │ │ │ ││Prv│Nxt│Vo-│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │└───┴───┴───┘ - * │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │ │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ - * │ │ │MA0│MA2│MW←│MW→│ │ │App│ │ │ │ │ │PgU│ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ - * │ │DtPR│DtNA│ MW↓ │ │ │ │ ││Hom│PgD│End│ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ - */ - [L_FN] = LAYOUT_tkl_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NUMPAD, KC_MUTE, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, CLEAR, KC_MPLY, KC_MSTP, KC_VOLU, - KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_NEXT, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, - _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP, _______, _______, _______, _______, KC_PGUP, - _______, DST_P_R, DST_N_A, KC_WH_D, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END - ), - - /* Numpad layer - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┬───┬───┐ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │Num│ │ - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐┌───┬───┬───┐ - * │ │ │ │ │ │ │ │P7 │P8 │P9 │P- │ − │ = │ ││ │ │ │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┼───┼───┤ - * │ │ │ │ │ │ │ │P4 │P5 │P6 │P+ │ ( │ ) │ ││ │ │ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐PEnt│└───┴───┴───┘ - * │ │ │ │ │ │ │ │P1 │P2 │P3 │P* │ × │ │ │ - * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ - * │ │ │ │ │ │ │ │P0 │P0 │ , │P. │P/ │ ÷ │ │ │ - * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───┐ - * │ │ │ │ │ │ │ │ ││ │ │ │ - * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ - */ - [L_NUMPAD] = LAYOUT_tkl_iso( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NUMPAD, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, MINUS, EQUALS, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, L_PAREN, R_PAREN, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PAST, TIMES, _______, KC_PENT, - _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P0, COMMA, KC_PDOT, KC_PSLS, DIVIDE, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), -}; diff --git a/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk b/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk deleted file mode 100644 index e5fc55e912a2..000000000000 --- a/keyboards/evyd13/wasdat/keymaps/konstantin/rules.mk +++ /dev/null @@ -1,17 +0,0 @@ -# Generic features -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -COMMAND_ENABLE = yes -CONSOLE_ENABLE = yes -EXTRAKEY_ENABLE = yes -MOUSEKEY_ENABLE = yes -NKRO_ENABLE = yes -TAP_DANCE_ENABLE = yes -UNICODEMAP_ENABLE = yes - -# Keyboard-specific features -VIA_ENABLE = yes - -# Firmware size reduction -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no -SPACE_CADET_ENABLE = no diff --git a/keyboards/evyd13/wonderland/keymaps/brandonschlack/config.h b/keyboards/evyd13/wonderland/keymaps/brandonschlack/config.h deleted file mode 100644 index 38383cffc258..000000000000 --- a/keyboards/evyd13/wonderland/keymaps/brandonschlack/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2019 Brandon Schlack - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#pragma once - -#define USE_LEDS_FOR_LAYERS -#define STOPLIGHT_LED diff --git a/keyboards/evyd13/wonderland/keymaps/brandonschlack/keymap.c b/keyboards/evyd13/wonderland/keymaps/brandonschlack/keymap.c deleted file mode 100755 index b8b62981df08..000000000000 --- a/keyboards/evyd13/wonderland/keymaps/brandonschlack/keymap.c +++ /dev/null @@ -1,170 +0,0 @@ -/* Copyright 2019 Brandon Schlack - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "brandonschlack.h" - -// LEDs -#define TOP_LED B1 -#define MIDDLE_LED B2 -#define BOTTOM_LED B3 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_BASE] = LAYOUT( - KC_HOME, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - 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_BSPC, - KC_PGDN, HY_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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, PLY_FN1, - KC_LOPT, KC_LCMD, SPC_RAI, KC_LCTL, SPC_RAI, KC_RCMD, KC_ROPT -), -[_FN1] = LAYOUT( - KC_MUTE, QM_MAKE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MC_LHPD, MC_SLPD, - KC_VOLU, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, KC_DEL, - KC_VOLD, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, KC_MPRV, KC_MNXT, KC_PGDN, KC_UP, KC_MPLY, - _______, RGB_LYR, RGB_THM, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, RGT_SFT, _______, - _______, _______, _______, _______, _______, _______, _______ - -), -[_FN2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - -), -[_ADJUST] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - -) -/* -[_BLANK] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - -) -*/ -}; - -#ifdef STOPLIGHT_LED -bool is_led_stoplight_active = false; -uint8_t led_stoplight_index = 0; -uint16_t led_stoplight_timer = 0; -void matrix_scan_led_stoplight(void); - -void led_stoplight_start(void) { - writePinHigh(TOP_LED); - writePinHigh(MIDDLE_LED); - writePinHigh(BOTTOM_LED); - - is_led_stoplight_active = true; - led_stoplight_timer = timer_read(); -}; - -void led_stoplight_set(pin_t pin) { - writePinLow(pin); -}; - -void led_stoplight_end(void) { - // Reset timer and status variables - led_stoplight_index = 0; - is_led_stoplight_active = false; - led_stoplight_timer = 0; - led_update_kb(host_keyboard_led_state()); -}; - -void matrix_scan_led_stoplight(void) { - if (is_led_stoplight_active) { - if (timer_elapsed(led_stoplight_timer) > (1000 * (led_stoplight_index + 1))) { - switch (led_stoplight_index){ - case 0: - led_stoplight_set(TOP_LED); - led_stoplight_index++; - break; - case 1: - led_stoplight_set(MIDDLE_LED); - led_stoplight_index++; - break; - case 2: - led_stoplight_set(BOTTOM_LED); - led_stoplight_index++; - break; - default: - led_stoplight_index = 0; - is_led_stoplight_active = false; - led_stoplight_timer = 0; - led_update_kb(host_keyboard_led_state()); - break; - } - } - } -}; -#endif - -void keyboard_post_init_keymap(void) { -#ifdef STOPLIGHT_LED - led_stoplight_start(); -#endif -}; - -void matrix_scan_keymap(void) { -#ifdef STOPLIGHT_LED - matrix_scan_led_stoplight(); -#endif -}; - -#ifdef USE_LEDS_FOR_LAYERS -// example of how to use LEDs as layer indicators -static uint8_t top = 0; -static uint8_t middle = 0; - -layer_state_t layer_state_set_keymap(layer_state_t state) { - top = middle = 0; - state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); - - switch (get_highest_layer(state)) { - case _FN1: - top = 1; - break; - case _FN2: - middle = 1; - break; - case _ADJUST: - top = 1; - middle = 1; - break; - default: // for any other layers, or the default layer - break; - } - return state; -} - -// override kb level function -bool led_update_user(led_t usb_led) { - if (!is_led_stoplight_active) { - writePin(TOP_LED, !top); - writePin(MIDDLE_LED, !middle); - writePin(BOTTOM_LED, !usb_led.caps_lock); // still use bottom for Caps Lock - }; - return false; // we are using LEDs for something else override kb -} -#endif diff --git a/keyboards/evyd13/wonderland/keymaps/brandonschlack/rules.mk b/keyboards/evyd13/wonderland/keymaps/brandonschlack/rules.mk deleted file mode 100755 index 80361c34fddc..000000000000 --- a/keyboards/evyd13/wonderland/keymaps/brandonschlack/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -# Build Options -# comment out to disable the options. -# -MOUSEKEY_ENABLE = yes # Mouse keys -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -VELOCIKEY_ENABLE = no - diff --git a/keyboards/exclusive/e6_rgb/config.h b/keyboards/exclusive/e6_rgb/config.h index 7f820b2cadff..62eb2320f70c 100644 --- a/keyboards/exclusive/e6_rgb/config.h +++ b/keyboards/exclusive/e6_rgb/config.h @@ -4,7 +4,6 @@ */ #pragma once -#define DRIVER_ADDR_1 0b1010000 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND -#define DRIVER_COUNT 1 #define RGB_MATRIX_LED_COUNT 63 diff --git a/keyboards/exclusive/e6_rgb/e6_rgb.c b/keyboards/exclusive/e6_rgb/e6_rgb.c index 2da1fbce6848..f34f40cc1f64 100644 --- a/keyboards/exclusive/e6_rgb/e6_rgb.c +++ b/keyboards/exclusive/e6_rgb/e6_rgb.c @@ -7,7 +7,7 @@ void matrix_init_kb(void) { matrix_init_user(); } -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/eyeohdesigns/babyv/info.json b/keyboards/eyeohdesigns/babyv/info.json index 453cdf2c819c..14f52889ba0b 100644 --- a/keyboards/eyeohdesigns/babyv/info.json +++ b/keyboards/eyeohdesigns/babyv/info.json @@ -34,6 +34,48 @@ "twinkle": true } }, + "rgb_matrix": { + "driver": "ws2812", + "animations": { + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_pinwheel": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_rain": true, + "pixel_flow": true + }, + "layout": [ + {"x": 123, "y": 74, "flags": 2}, + {"x": 188, "y": 67, "flags": 2}, + {"x": 206, "y": 62, "flags": 2}, + {"x": 206, "y": 0, "flags": 2}, + {"x": 175, "y": 0, "flags": 2}, + {"x": 141, "y": 0, "flags": 2}, + {"x": 83, "y": 0, "flags": 2}, + {"x": 65, "y": 0, "flags": 2}, + {"x": 18, "y": 0, "flags": 2}, + {"x": 18, "y": 62, "flags": 2}, + {"x": 40, "y": 67, "flags": 2}, + {"x": 99, "y": 74, "flags": 2} + ], + "sat_steps": 8, + "val_steps": 8, + "led_count": 12, + "center_point": [112, 38] + }, "ws2812": { "pin": "B7" }, diff --git a/keyboards/eyeohdesigns/babyv/keymaps/bghull/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/bghull/keymap.c index 7d22ebc67086..7bccc6a46aa8 100644 --- a/keyboards/eyeohdesigns/babyv/keymaps/bghull/keymap.c +++ b/keyboards/eyeohdesigns/babyv/keymaps/bghull/keymap.c @@ -14,7 +14,6 @@ */ #include QMK_KEYBOARD_H -#include "keymap_steno.h" #include "g/keymap_combo.h" diff --git a/keyboards/eyeohdesigns/humble40/config.h b/keyboards/eyeohdesigns/humble40/config.h new file mode 100644 index 000000000000..2458474199aa --- /dev/null +++ b/keyboards/eyeohdesigns/humble40/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2022 Eye Oh Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define BACKLIGHT_PWM_DRIVER PWMD6 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A diff --git a/keyboards/eyeohdesigns/humble40/halconf.h b/keyboards/eyeohdesigns/humble40/halconf.h new file mode 100644 index 000000000000..a8ee2ba9520f --- /dev/null +++ b/keyboards/eyeohdesigns/humble40/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 The QMK Community (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/eyeohdesigns/humble40/info.json b/keyboards/eyeohdesigns/humble40/info.json new file mode 100644 index 000000000000..214927c27fb7 --- /dev/null +++ b/keyboards/eyeohdesigns/humble40/info.json @@ -0,0 +1,359 @@ +{ + "manufacturer": "Eye Oh Designs", + "keyboard_name": "humble40", + "maintainer": "joedinkle", + "backlight": { + "breathing": true, + "driver": "pwm", + "levels": 10, + "pin": "GP28" + }, + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "backlight": true, + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": false + }, + "matrix_pins": { + "cols": ["GP19", "GP11", "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9"], + "rows": ["GP29", "GP20", "GP10", "GP12"] + }, + "processor": "RP2040", + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "url": "https://eyeohdesigns.com/products/humble40", + "usb": { + "device_version": "0.0.1", + "pid": "0x6834", + "vid": "0xFEED" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_full_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 2.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2, "y": 3, "w": 1.25}, + {"matrix": [3, 6], "x": 3.25, "y": 3, "w": 6}, + {"matrix": [3, 9], "x": 9.25, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 10], "x": 10.25, "y": 1}, + {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3, "w": 2}, + {"matrix": [3, 6], "x": 6.25, "y": 3, "w": 2.25}, + {"matrix": [3, 7], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25} + ] + }, + "LAYOUT_split_enter_full_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 10], "x": 10.25, "y": 1}, + {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2, "y": 3, "w": 1.25}, + {"matrix": [3, 6], "x": 3.25, "y": 3, "w": 6}, + {"matrix": [3, 9], "x": 9.25, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25} + ] + }, + "LAYOUT_standard_full_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 2.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2, "w": 1.75}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2, "y": 3, "w": 1.25}, + {"matrix": [3, 6], "x": 3.25, "y": 3, "w": 6}, + {"matrix": [3, 9], "x": 9.25, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25} + ] + }, + "LAYOUT_standard_split_enter_full_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 10], "x": 10.25, "y": 1}, + {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2, "w": 1.75}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2, "y": 3, "w": 1.25}, + {"matrix": [3, 6], "x": 3.25, "y": 3, "w": 6}, + {"matrix": [3, 9], "x": 9.25, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25} + ] + }, + "LAYOUT_standard_split_enter_split_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 10], "x": 10.25, "y": 1}, + {"matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2, "w": 1.75}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3, "w": 2}, + {"matrix": [3, 6], "x": 6.25, "y": 3, "w": 2.25}, + {"matrix": [3, 7], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25} + ] + }, + "LAYOUT_standard_split_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 2.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2, "w": 1.75}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 2, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3, "w": 2}, + {"matrix": [3, 6], "x": 6.25, "y": 3, "w": 2.25}, + {"matrix": [3, 7], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25} + ] + } + } +} diff --git a/keyboards/eyeohdesigns/humble40/keymaps/default/keymap.json b/keyboards/eyeohdesigns/humble40/keymaps/default/keymap.json new file mode 100644 index 000000000000..ee160b5ef461 --- /dev/null +++ b/keyboards/eyeohdesigns/humble40/keymaps/default/keymap.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "keyboard": "eyeohdesigns/humble40", + "keymap": "default", + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "RSFT_T(KC_SLSH)", "KC_RSFT", + "KC_LCTL", "KC_LGUI", "KC_LALT", "LT(1,KC_SPC)", "LT(1,KC_SPC)", "KC_RGUI", "KC_RALT", "MO(2)" + ], + [ + "KC_TRNS", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_DEL", + "KC_CAPS", "KC_GRV", "KC_LBRC", "KC_RBRC", "KC_MINS", "KC_TRNS", "KC_TRNS", "KC_EQL", "KC_BSLS", "KC_SCLN", "KC_TRNS", "KC_QUOT", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ], + [ + "KC_TRNS", "KC_TRNS", "KC_UP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "BL_TOGG", "BL_BRTG", "BL_STEP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ] +} diff --git a/keyboards/eyeohdesigns/humble40/mcuconf.h b/keyboards/eyeohdesigns/humble40/mcuconf.h new file mode 100644 index 000000000000..94bd53b289ad --- /dev/null +++ b/keyboards/eyeohdesigns/humble40/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 The QMK Community (@qmk) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM6 +#define RP_PWM_USE_PWM6 TRUE diff --git a/keyboards/eyeohdesigns/humble40/readme.md b/keyboards/eyeohdesigns/humble40/readme.md new file mode 100644 index 000000000000..cf82fa264a49 --- /dev/null +++ b/keyboards/eyeohdesigns/humble40/readme.md @@ -0,0 +1,31 @@ +# humble40 + +![humble40](https://i.imgur.com/yI0mwn9h.jpg) + +A 12.5u WKL 40% offering uniform and standard row stagger configurations. + +* Keyboard Maintainer: [Eye Oh Designs](https://github.com/joedinkle) +* Hardware Supported: humble40 (RP2040 MCU) +* Hardware Availability: Group buy took place between 2022-06-17 1900 UTC and 2022-07-09 0400 UTC on [Eye Oh Designs](https://eyeohdesigns.com/) + +Make example for this keyboard (after setting up your build environment): + + make eyeohdesigns/humble40:default + +Flashing example for this keyboard + + make eyeohdesigns/humble40:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset button**: Short the two holes in the PCB marked `TP6` and plug the board in. +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-provided keymaps, but you may assign this key in any keymaps you create. + +## Flashing + +After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `RPI-RP2`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded. diff --git a/keyboards/eyeohdesigns/humble40/rules.mk b/keyboards/eyeohdesigns/humble40/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/eyeohdesigns/humble40/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/fallacy/config.h b/keyboards/fallacy/config.h index 21231c7c574a..14df31805dda 100755 --- a/keyboards/fallacy/config.h +++ b/keyboards/fallacy/config.h @@ -18,9 +18,8 @@ /* IS31FL3731 driver address (for status LEDs) * Using the default defines here, but using a custom implementation */ -#define LED_DRIVER_ADDR_1 0b1110100 -#define LED_DRIVER_COUNT 1 -#define LED_MATRIX_LED_COUNT 3 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_LED_COUNT 3 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ diff --git a/keyboards/fallacy/indicators.c b/keyboards/fallacy/indicators.c index b9a4a8705651..b95786db417f 100755 --- a/keyboards/fallacy/indicators.c +++ b/keyboards/fallacy/indicators.c @@ -22,21 +22,14 @@ * init IS31FL3731 and i2c */ void init_fallacy_leds(void) { - i2c_init(); - is31fl3731_init(LED_DRIVER_ADDR_1); - - for (int i = 0; i < LED_MATRIX_LED_COUNT; i++) { - is31fl3731_set_led_control_register(i, true); - } - - is31fl3731_update_led_control_registers(LED_DRIVER_ADDR_1, 0); + is31fl3731_init_drivers(); } /* update the buffer */ void update_fallacy_leds(void) { - is31fl3731_update_pwm_buffers(LED_DRIVER_ADDR_1, 0); + is31fl3731_flush(); } @@ -54,7 +47,7 @@ void set_fallacy_led(int index, bool state) { /* define LED matrix */ -const is31_led PROGMEM g_is31_leds[LED_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = { {0, C1_1}, {0, C2_1}, {0, C3_1}, diff --git a/keyboards/fallacy/rules.mk b/keyboards/fallacy/rules.mk index 704204983c42..7fa230bae23c 100755 --- a/keyboards/fallacy/rules.mk +++ b/keyboards/fallacy/rules.mk @@ -14,4 +14,4 @@ AUDIO_ENABLE = no # Audio output # project specific files SRC += indicators.c \ drivers/led/issi/is31fl3731-simple.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/fc660c/actuation_point.c b/keyboards/fc660c/actuation_point.c deleted file mode 100644 index 5f4cb16f40b1..000000000000 --- a/keyboards/fc660c/actuation_point.c +++ /dev/null @@ -1,87 +0,0 @@ -/* -Copyright 2017 Balz Guenat -based on work by 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 "actuation_point.h" -#include "i2c.h" - -/////////////////////////////////////////////////////////////////////////////// -// -// AD5258 I2C digital potentiometer -// http://www.analog.com/media/en/technical-documentation/data-sheets/AD5258.pdf -// -#define AD5258_ADDR 0b0011000 -#define AD5258_INST_RDAC 0x00 -#define AD5258_INST_EEPROM 0x20 - -uint8_t read_rdac(void) { - // read RDAC register - i2c_start_write(AD5258_ADDR); - i2c_master_write(AD5258_INST_RDAC); - i2c_start_read(AD5258_ADDR); - uint8_t ret = i2c_master_read(I2C_NACK); - i2c_master_stop(); - return ret; -}; - -uint8_t read_eeprom(void) { - i2c_start_write(AD5258_ADDR); - i2c_master_write(AD5258_INST_EEPROM); - i2c_start_read(AD5258_ADDR); - uint8_t ret = i2c_master_read(I2C_NACK); - i2c_master_stop(); - return ret; -}; - -void write_rdac(uint8_t rdac) { - // write RDAC register: - i2c_start_write(AD5258_ADDR); - i2c_master_write(AD5258_INST_RDAC); - i2c_master_write(rdac & 0x3F); - i2c_master_stop(); -}; - -void actuation_point_up(void) { - // write RDAC register: lower value makes actuation point shallow - uint8_t rdac = read_rdac(); - if (rdac == 0) - write_rdac(0); - else - write_rdac(rdac-1); -}; - -void actuation_point_down(void) { - // write RDAC register: higher value makes actuation point deep - uint8_t rdac = read_rdac(); - if (rdac == 63) - write_rdac(63); - else - write_rdac(rdac+1); -}; - -void adjust_actuation_point(int offset) { - i2c_master_init(); - uint8_t rdac = read_eeprom() + offset; - if (rdac > 63) { // protects from under and overflows - if (offset > 0) - write_rdac(63); - else - write_rdac(0); - } else { - write_rdac(rdac); - } -} diff --git a/keyboards/fc660c/actuation_point.h b/keyboards/fc660c/actuation_point.h deleted file mode 100644 index e02832186c09..000000000000 --- a/keyboards/fc660c/actuation_point.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2017 Balz Guenat - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// see keymaps/actuation-point-example to see how these functions can be used. -uint8_t read_rdac(void); -uint8_t read_eeprom(void); -void actuation_point_up(void); -void actuation_point_down(void); - -// be careful with this. -void adjust_actuation_point(int offset); diff --git a/keyboards/fc660c/ad5258.c b/keyboards/fc660c/ad5258.c new file mode 100644 index 000000000000..f7ff2f3dc18f --- /dev/null +++ b/keyboards/fc660c/ad5258.c @@ -0,0 +1,52 @@ +/* +Copyright 2017 Balz Guenat +based on work by 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 "ad5258.h" +#include "i2c_master.h" + +/////////////////////////////////////////////////////////////////////////////// +// +// AD5258 I2C digital potentiometer +// http://www.analog.com/media/en/technical-documentation/data-sheets/AD5258.pdf +// +#define AD5258_I2C_ADDRESS 0x30 +#define AD5258_INST_RDAC 0x00 +#define AD5258_INST_EEPROM 0x20 + +void ad5258_init(void) { + i2c_init(); +} + +uint8_t ad5258_read_rdac(void) { + // read RDAC register + uint8_t ret = 0; + i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &ret, 1, 100); + return ret; +} + +uint8_t ad5258_read_eeprom(void) { + uint8_t ret = 0; + i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_EEPROM, &ret, 1, 100); + return ret; +} + +void ad5258_write_rdac(uint8_t rdac) { + // write RDAC register: + uint8_t data = rdac & 0x3F; + i2c_writeReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &data, 1, 100); +} diff --git a/keyboards/fc660c/ad5258.h b/keyboards/fc660c/ad5258.h new file mode 100644 index 000000000000..c27f247675df --- /dev/null +++ b/keyboards/fc660c/ad5258.h @@ -0,0 +1,28 @@ +/* +Copyright 2017 Balz Guenat + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 + +void ad5258_init(void); + +uint8_t ad5258_read_rdac(void); + +uint8_t ad5258_read_eeprom(void); + +void ad5258_write_rdac(uint8_t rdac); diff --git a/keyboards/fc660c/config.h b/keyboards/fc660c/config.h index cd23bdb2b82c..beff84d9be7a 100644 --- a/keyboards/fc660c/config.h +++ b/keyboards/fc660c/config.h @@ -27,8 +27,6 @@ along with this program. If not, see . * These options are also useful to firmware size reduction. */ -#define USE_I2C - /* disable debug print */ //#define NO_DEBUG diff --git a/keyboards/fc660c/fc660c.c b/keyboards/fc660c/fc660c.c index 2054cd2818ca..50540cbfb9bc 100644 --- a/keyboards/fc660c/fc660c.c +++ b/keyboards/fc660c/fc660c.c @@ -14,16 +14,47 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "quantum.h" -#ifdef ACTUATION_DEPTH_ADJUSTMENT -#include "actuation_point.h" -#endif +#include "fc660c.h" -void matrix_init_kb(void) { #ifdef ACTUATION_DEPTH_ADJUSTMENT +void matrix_init_kb(void) { adjust_actuation_point(ACTUATION_DEPTH_ADJUSTMENT); -#endif - matrix_init_user(); + matrix_init_user(); +} + +void actuation_point_up(void) { + // write RDAC register: lower value makes actuation point shallow + uint8_t rdac = ad5258_read_rdac(); + if (rdac == 0) { + ad5258_write_rdac(0); + } else { + ad5258_write_rdac(rdac - 1); + } +} + +void actuation_point_down(void) { + // write RDAC register: higher value makes actuation point deep + uint8_t rdac = ad5258_read_rdac(); + if (rdac == 63) { + ad5258_write_rdac(63); + } else { + ad5258_write_rdac(rdac + 1); + } } + +void adjust_actuation_point(int offset) { + ad5258_init(); + uint8_t rdac = ad5258_read_eeprom() + offset; + if (rdac > 63) { // protects from under and overflows + if (offset > 0) { + ad5258_write_rdac(63); + } else { + ad5258_write_rdac(0); + } + } else { + ad5258_write_rdac(rdac); + } +} +#endif diff --git a/keyboards/fc660c/fc660c.h b/keyboards/fc660c/fc660c.h new file mode 100644 index 000000000000..aa98e36be945 --- /dev/null +++ b/keyboards/fc660c/fc660c.h @@ -0,0 +1,31 @@ +/* +Copyright 2017 Balz Guenat + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 ACTUATION_DEPTH_ADJUSTMENT +# include "ad5258.h" + +// see keymaps/actuation-point-example to see how these functions can be used. +void actuation_point_up(void); +void actuation_point_down(void); + +// be careful with this. +void adjust_actuation_point(int offset); +#endif diff --git a/keyboards/fc660c/i2c.c b/keyboards/fc660c/i2c.c deleted file mode 100644 index 084c890c405f..000000000000 --- a/keyboards/fc660c/i2c.c +++ /dev/null @@ -1,162 +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< slave ACK -// 1 => slave NACK -uint8_t i2c_master_write(uint8_t data) { - TWDR = data; - TWCR = (1<= SLAVE_BUFFER_SIZE ) { - ack = 0; - slave_buffer_pos = 0; - } - slave_has_register_set = true; - } else { - i2c_slave_buffer[slave_buffer_pos] = TWDR; - BUFFER_POS_INC(); - } - break; - - case TW_ST_SLA_ACK: - case TW_ST_DATA_ACK: - // master has addressed this device as a slave transmitter and is - // requesting data. - TWDR = i2c_slave_buffer[slave_buffer_pos]; - BUFFER_POS_INC(); - break; - - case TW_BUS_ERROR: // something went wrong, reset twi state - TWCR = 0; - default: - break; - } - // Reset everything, so we are ready for the next TWI interrupt - TWCR |= (1< - -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -#define I2C_READ 1 -#define I2C_WRITE 0 - -#define I2C_ACK 1 -#define I2C_NACK 0 - -#define SLAVE_BUFFER_SIZE 0x10 - -// i2c SCL clock frequency -#define SCL_CLOCK 400000L - -extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; - -void i2c_master_init(void); -uint8_t i2c_master_start(uint8_t address); -void i2c_master_stop(void); -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); - - -static inline unsigned char i2c_start_read(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_READ); -} - -static inline unsigned char i2c_start_write(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_WRITE); -} - -// from SSD1306 scrips -extern unsigned char i2c_rep_start(unsigned char addr); -extern void i2c_start_wait(unsigned char addr); -extern unsigned char i2c_readAck(void); -extern unsigned char i2c_readNak(void); -extern unsigned char i2c_read(unsigned char ack); - -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); diff --git a/keyboards/fc660c/keymaps/zyber/keymap.c b/keyboards/fc660c/keymaps/zyber/keymap.c deleted file mode 100644 index 60178359ef17..000000000000 --- a/keyboards/fc660c/keymaps/zyber/keymap.c +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2022 ZyBeR (@ZyberSE) -// SPDX-License-Identifier: GPL-2.0 - -#include "zyber.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* BASE layer: Default Layer - * ,--------------------------------------------------------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace | | ` | - * |-----------------------------------------------------------------------------------------+ +-----+ - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | | Del | - * |-----------------------------------------------------------------------------------------+ +-----+ - * | Explode | A | S | D | F | G | H | J | K | L | ; | ' | Enter | - * |--------------------------------------------------------------------------------------------+ - * | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Up | - * +--------------------------------------------------------------------------------------------+-----+ - * | Ctrl | Alt | Cmd | Space | Alt | Ctrl | Fn | Left| Down|Right| - * `--------------------------------------------------------------------------------------------------´ - */ - [0] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, TD(SSHT), KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, TD(LBRC), KC_RBRC, KC_BSLS, KC_DEL, - L1_EXPL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TD(SCLN), TD(QUOT), KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, ROPT_SRH, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL, MO(1), KC_LEFT,KC_DOWN,KC_RGHT - ), - /* FN layer - * ,--------------------------------------------------------------------------------------------------. - * | Esc| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | |C_BLK| - * |-----------------------------------------------------------------------------------------+ +-----+ - * | | | | | | | | |PrtSc| Slck| Paus| | | | | | - * |-----------------------------------------------------------------------------------------+ +-----+ - * | | Vol-| Vol+| Mute|Eject| | | | Home| PgUp| | | | - * |--------------------------------------------------------------------------------------------+ - * | | Prev| Play| Next| | | | | End | PgDn| | | | - * +--------------------------------------------------------------------------------------------+-----+ - * | | | | | | | | | | | - * `--------------------------------------------------------------------------------------------------´ - */ - [1] = LAYOUT( - QK_BOOT,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, C_BLK, - _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SCRL,KC_PAUS,_______,_______,_______, _______, - _______,KC_VOLD,KC_VOLU,KC_MUTE,KC_EJCT,_______,_______,_______,KC_HOME,KC_PGUP,_______,_______, _______, - _______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,_______,KC_END, KC_PGDN,_______,_______, _______, - _______,_______,_______, _______, _______,_______,MO(1), _______,_______,_______ - ) -}; diff --git a/keyboards/fc660c/rules.mk b/keyboards/fc660c/rules.mk index ed4a7ca66d17..03a674d668cf 100644 --- a/keyboards/fc660c/rules.mk +++ b/keyboards/fc660c/rules.mk @@ -11,7 +11,7 @@ NKRO_ENABLE = yes # Enable N-Key Rollover # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax +I2C_DRIVER_REQUIRED = yes + CUSTOM_MATRIX = yes -SRC += matrix.c \ - actuation_point.c \ - i2c.c +SRC += matrix.c ad5258.c diff --git a/keyboards/fc980c/actuation_point.c b/keyboards/fc980c/actuation_point.c deleted file mode 100644 index 5f4cb16f40b1..000000000000 --- a/keyboards/fc980c/actuation_point.c +++ /dev/null @@ -1,87 +0,0 @@ -/* -Copyright 2017 Balz Guenat -based on work by 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 "actuation_point.h" -#include "i2c.h" - -/////////////////////////////////////////////////////////////////////////////// -// -// AD5258 I2C digital potentiometer -// http://www.analog.com/media/en/technical-documentation/data-sheets/AD5258.pdf -// -#define AD5258_ADDR 0b0011000 -#define AD5258_INST_RDAC 0x00 -#define AD5258_INST_EEPROM 0x20 - -uint8_t read_rdac(void) { - // read RDAC register - i2c_start_write(AD5258_ADDR); - i2c_master_write(AD5258_INST_RDAC); - i2c_start_read(AD5258_ADDR); - uint8_t ret = i2c_master_read(I2C_NACK); - i2c_master_stop(); - return ret; -}; - -uint8_t read_eeprom(void) { - i2c_start_write(AD5258_ADDR); - i2c_master_write(AD5258_INST_EEPROM); - i2c_start_read(AD5258_ADDR); - uint8_t ret = i2c_master_read(I2C_NACK); - i2c_master_stop(); - return ret; -}; - -void write_rdac(uint8_t rdac) { - // write RDAC register: - i2c_start_write(AD5258_ADDR); - i2c_master_write(AD5258_INST_RDAC); - i2c_master_write(rdac & 0x3F); - i2c_master_stop(); -}; - -void actuation_point_up(void) { - // write RDAC register: lower value makes actuation point shallow - uint8_t rdac = read_rdac(); - if (rdac == 0) - write_rdac(0); - else - write_rdac(rdac-1); -}; - -void actuation_point_down(void) { - // write RDAC register: higher value makes actuation point deep - uint8_t rdac = read_rdac(); - if (rdac == 63) - write_rdac(63); - else - write_rdac(rdac+1); -}; - -void adjust_actuation_point(int offset) { - i2c_master_init(); - uint8_t rdac = read_eeprom() + offset; - if (rdac > 63) { // protects from under and overflows - if (offset > 0) - write_rdac(63); - else - write_rdac(0); - } else { - write_rdac(rdac); - } -} diff --git a/keyboards/fc980c/actuation_point.h b/keyboards/fc980c/actuation_point.h deleted file mode 100644 index e02832186c09..000000000000 --- a/keyboards/fc980c/actuation_point.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -Copyright 2017 Balz Guenat - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// see keymaps/actuation-point-example to see how these functions can be used. -uint8_t read_rdac(void); -uint8_t read_eeprom(void); -void actuation_point_up(void); -void actuation_point_down(void); - -// be careful with this. -void adjust_actuation_point(int offset); diff --git a/keyboards/fc980c/ad5258.c b/keyboards/fc980c/ad5258.c new file mode 100644 index 000000000000..f7ff2f3dc18f --- /dev/null +++ b/keyboards/fc980c/ad5258.c @@ -0,0 +1,52 @@ +/* +Copyright 2017 Balz Guenat +based on work by 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 "ad5258.h" +#include "i2c_master.h" + +/////////////////////////////////////////////////////////////////////////////// +// +// AD5258 I2C digital potentiometer +// http://www.analog.com/media/en/technical-documentation/data-sheets/AD5258.pdf +// +#define AD5258_I2C_ADDRESS 0x30 +#define AD5258_INST_RDAC 0x00 +#define AD5258_INST_EEPROM 0x20 + +void ad5258_init(void) { + i2c_init(); +} + +uint8_t ad5258_read_rdac(void) { + // read RDAC register + uint8_t ret = 0; + i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &ret, 1, 100); + return ret; +} + +uint8_t ad5258_read_eeprom(void) { + uint8_t ret = 0; + i2c_readReg(AD5258_I2C_ADDRESS, AD5258_INST_EEPROM, &ret, 1, 100); + return ret; +} + +void ad5258_write_rdac(uint8_t rdac) { + // write RDAC register: + uint8_t data = rdac & 0x3F; + i2c_writeReg(AD5258_I2C_ADDRESS, AD5258_INST_RDAC, &data, 1, 100); +} diff --git a/keyboards/fc980c/ad5258.h b/keyboards/fc980c/ad5258.h new file mode 100644 index 000000000000..c27f247675df --- /dev/null +++ b/keyboards/fc980c/ad5258.h @@ -0,0 +1,28 @@ +/* +Copyright 2017 Balz Guenat + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 + +void ad5258_init(void); + +uint8_t ad5258_read_rdac(void); + +uint8_t ad5258_read_eeprom(void); + +void ad5258_write_rdac(uint8_t rdac); diff --git a/keyboards/fc980c/config.h b/keyboards/fc980c/config.h index 7c0c3b31a68b..776b8ef35fcf 100644 --- a/keyboards/fc980c/config.h +++ b/keyboards/fc980c/config.h @@ -30,8 +30,6 @@ along with this program. If not, see . * These options are also useful to firmware size reduction. */ -#define USE_I2C - /* disable debug print */ //#define NO_DEBUG diff --git a/keyboards/fc980c/fc980c.c b/keyboards/fc980c/fc980c.c index fc3696f244bf..c1c62da9ac5e 100644 --- a/keyboards/fc980c/fc980c.c +++ b/keyboards/fc980c/fc980c.c @@ -15,16 +15,46 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "quantum.h" +#include "fc980c.h" #ifdef ACTUATION_DEPTH_ADJUSTMENT -#include "actuation_point.h" -#endif - void matrix_init_kb(void) { -#ifdef ACTUATION_DEPTH_ADJUSTMENT adjust_actuation_point(ACTUATION_DEPTH_ADJUSTMENT); -#endif - matrix_init_user(); + matrix_init_user(); +} + +void actuation_point_up(void) { + // write RDAC register: lower value makes actuation point shallow + uint8_t rdac = ad5258_read_rdac(); + if (rdac == 0) { + ad5258_write_rdac(0); + } else { + ad5258_write_rdac(rdac - 1); + } } + +void actuation_point_down(void) { + // write RDAC register: higher value makes actuation point deep + uint8_t rdac = ad5258_read_rdac(); + if (rdac == 63) { + ad5258_write_rdac(63); + } else { + ad5258_write_rdac(rdac + 1); + } +} + +void adjust_actuation_point(int offset) { + ad5258_init(); + uint8_t rdac = ad5258_read_eeprom() + offset; + if (rdac > 63) { // protects from under and overflows + if (offset > 0) { + ad5258_write_rdac(63); + } else { + ad5258_write_rdac(0); + } + } else { + ad5258_write_rdac(rdac); + } +} +#endif diff --git a/keyboards/fc980c/fc980c.h b/keyboards/fc980c/fc980c.h new file mode 100644 index 000000000000..aa98e36be945 --- /dev/null +++ b/keyboards/fc980c/fc980c.h @@ -0,0 +1,31 @@ +/* +Copyright 2017 Balz Guenat + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 ACTUATION_DEPTH_ADJUSTMENT +# include "ad5258.h" + +// see keymaps/actuation-point-example to see how these functions can be used. +void actuation_point_up(void); +void actuation_point_down(void); + +// be careful with this. +void adjust_actuation_point(int offset); +#endif diff --git a/keyboards/fc980c/i2c.c b/keyboards/fc980c/i2c.c deleted file mode 100644 index 084c890c405f..000000000000 --- a/keyboards/fc980c/i2c.c +++ /dev/null @@ -1,162 +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< slave ACK -// 1 => slave NACK -uint8_t i2c_master_write(uint8_t data) { - TWDR = data; - TWCR = (1<= SLAVE_BUFFER_SIZE ) { - ack = 0; - slave_buffer_pos = 0; - } - slave_has_register_set = true; - } else { - i2c_slave_buffer[slave_buffer_pos] = TWDR; - BUFFER_POS_INC(); - } - break; - - case TW_ST_SLA_ACK: - case TW_ST_DATA_ACK: - // master has addressed this device as a slave transmitter and is - // requesting data. - TWDR = i2c_slave_buffer[slave_buffer_pos]; - BUFFER_POS_INC(); - break; - - case TW_BUS_ERROR: // something went wrong, reset twi state - TWCR = 0; - default: - break; - } - // Reset everything, so we are ready for the next TWI interrupt - TWCR |= (1< - -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -#define I2C_READ 1 -#define I2C_WRITE 0 - -#define I2C_ACK 1 -#define I2C_NACK 0 - -#define SLAVE_BUFFER_SIZE 0x10 - -// i2c SCL clock frequency -#define SCL_CLOCK 400000L - -extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; - -void i2c_master_init(void); -uint8_t i2c_master_start(uint8_t address); -void i2c_master_stop(void); -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); - - -static inline unsigned char i2c_start_read(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_READ); -} - -static inline unsigned char i2c_start_write(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_WRITE); -} - -// from SSD1306 scrips -extern unsigned char i2c_rep_start(unsigned char addr); -extern void i2c_start_wait(unsigned char addr); -extern unsigned char i2c_readAck(void); -extern unsigned char i2c_readNak(void); -extern unsigned char i2c_read(unsigned char ack); - -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); diff --git a/keyboards/fc980c/keymaps/actuation-point-example/config.h b/keyboards/fc980c/keymaps/actuation-point-example/config.h index c2a538b6ae57..a4ecab70fdeb 100644 --- a/keyboards/fc980c/keymaps/actuation-point-example/config.h +++ b/keyboards/fc980c/keymaps/actuation-point-example/config.h @@ -14,11 +14,7 @@ * along with this program. If not, see . */ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - - -// place overrides here +#pragma once // higher value means deeper actuation point, less sensitive // be careful and only make small adjustments (steps of 1 or 2). @@ -27,5 +23,3 @@ // this should probably stay in the range +/-5. #undef ACTUATION_DEPTH_ADJUSTMENT #define ACTUATION_DEPTH_ADJUSTMENT +1 - -#endif diff --git a/keyboards/fc980c/keymaps/actuation-point-example/keymap.c b/keyboards/fc980c/keymaps/actuation-point-example/keymap.c index 85e782d6259c..50b6a9ff40b9 100644 --- a/keyboards/fc980c/keymaps/actuation-point-example/keymap.c +++ b/keyboards/fc980c/keymaps/actuation-point-example/keymap.c @@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H -#include "actuation_point.h" enum custom_keycodes { @@ -62,12 +61,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) } case AP_READ_RDAC: { - xprintf("RDAC: %d", read_rdac()); + xprintf("RDAC: %d", ad5258_read_rdac()); return false; } case AP_READ_EEPROM: { - xprintf("EEPROM: %d", read_eeprom()); + xprintf("EEPROM: %d", ad5258_read_eeprom()); return false; } diff --git a/keyboards/fc980c/rules.mk b/keyboards/fc980c/rules.mk index ed4a7ca66d17..03a674d668cf 100644 --- a/keyboards/fc980c/rules.mk +++ b/keyboards/fc980c/rules.mk @@ -11,7 +11,7 @@ NKRO_ENABLE = yes # Enable N-Key Rollover # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax +I2C_DRIVER_REQUIRED = yes + CUSTOM_MATRIX = yes -SRC += matrix.c \ - actuation_point.c \ - i2c.c +SRC += matrix.c ad5258.c diff --git a/keyboards/feker/ik75/config.h b/keyboards/feker/ik75/config.h index a9914722fc94..b49621bda01a 100644 --- a/keyboards/feker/ik75/config.h +++ b/keyboards/feker/ik75/config.h @@ -20,14 +20,12 @@ #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 - #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS /* RGB Matrix config */ - #define DRIVER_ADDR_1 0b1011111 - #define DRIVER_ADDR_2 0b1010000 - #define DRIVER_COUNT 2 + #define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_VCC_VCC + #define IS31FL3733_I2C_ADDRESS_2 IS31FL3733_I2C_ADDRESS_GND_GND #define DRIVER_1_LED_TOTAL 63 #define DRIVER_2_LED_TOTAL 64 diff --git a/keyboards/feker/ik75/ik75.c b/keyboards/feker/ik75/ik75.c index 98b24abfe86f..826afab01b44 100644 --- a/keyboards/feker/ik75/ik75.c +++ b/keyboards/feker/ik75/ik75.c @@ -18,7 +18,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | G location diff --git a/keyboards/ferris/0_1/rules.mk b/keyboards/ferris/0_1/rules.mk index 487375928e0b..f971aa9a48bf 100644 --- a/keyboards/ferris/0_1/rules.mk +++ b/keyboards/ferris/0_1/rules.mk @@ -16,4 +16,4 @@ NO_USB_STARTUP_CHECK = yes LTO_ENABLE = yes SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/ferris/0_2/bling/bling.c b/keyboards/ferris/0_2/bling/bling.c index 8af1d33e85e7..07f58149cc9f 100644 --- a/keyboards/ferris/0_2/bling/bling.c +++ b/keyboards/ferris/0_2/bling/bling.c @@ -27,7 +27,7 @@ along with this program. If not, see . | | 4 | | || | | 4 | | | 6 | | | 2 || 2 | | | 5 | */ -const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/ferris/0_2/bling/config.h b/keyboards/ferris/0_2/bling/config.h index cbb3b11c90e9..64e7a6de2d91 100644 --- a/keyboards/ferris/0_2/bling/config.h +++ b/keyboards/ferris/0_2/bling/config.h @@ -18,9 +18,8 @@ along with this program. If not, see . #pragma once /* LED Drivers */ -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110101 -#define DRIVER_COUNT 2 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL #define DRIVER_1_LED_TOTAL 7 #define DRIVER_2_LED_TOTAL 7 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk index f3760b7b62c4..6f67e3dece37 100644 --- a/keyboards/ferris/0_2/rules.mk +++ b/keyboards/ferris/0_2/rules.mk @@ -16,6 +16,6 @@ NO_USB_STARTUP_CHECK = yes LTO_ENABLE = no SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes DEFAULT_FOLDER = ferris/0_2/base diff --git a/keyboards/flashquark/horizon_z/config.h b/keyboards/flashquark/horizon_z/config.h index 8828834d740c..ddeafe578d13 100755 --- a/keyboards/flashquark/horizon_z/config.h +++ b/keyboards/flashquark/horizon_z/config.h @@ -72,7 +72,6 @@ // # define ENABLE_RGB_MATRIX_SOLID_SPLASH // # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -# define DRIVER_ADDR_1 0b1010000 -# define DRIVER_COUNT 1 +# define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND # define RGB_MATRIX_LED_COUNT 62 #endif diff --git a/keyboards/flashquark/horizon_z/horizon_z.c b/keyboards/flashquark/horizon_z/horizon_z.c index da62deaf29bf..a9faa5a943fe 100755 --- a/keyboards/flashquark/horizon_z/horizon_z.c +++ b/keyboards/flashquark/horizon_z/horizon_z.c @@ -17,7 +17,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[RGB_MATRIX_LED_COUNT] = { {0, B_1, A_1, C_1}, {0, B_2, A_2, C_2}, {0, B_3, A_3, C_3}, diff --git a/keyboards/flehrad/bigswitch/keymaps/333fred/config.h b/keyboards/flehrad/bigswitch/keymaps/333fred/config.h deleted file mode 100644 index 6e9219115cc4..000000000000 --- a/keyboards/flehrad/bigswitch/keymaps/333fred/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#pragma once - -// Long tapping term on the big switch, because it takes so long to press -#define TAPPING_TERM 500 -#define PERMISSIVE_HOLD diff --git a/keyboards/flehrad/bigswitch/keymaps/333fred/keymap.c b/keyboards/flehrad/bigswitch/keymaps/333fred/keymap.c deleted file mode 100644 index d323bcc2c482..000000000000 --- a/keyboards/flehrad/bigswitch/keymaps/333fred/keymap.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include QMK_KEYBOARD_H - -typedef enum { - SINGLE_TAP, SINGLE_HOLD, DOUBLE, TRIPLE, QUAD -} tap_dance_state_enum; - -enum { - TD_KEY = 0 -}; - -static tap_dance_state_enum tap_dance_state; -static bool tap_dance_active = false; -static uint16_t timer; - -void dance_cycle(bool override_timer) { - if (tap_dance_active) - { - if (timer_elapsed(timer) > 100 || override_timer) - { - switch (tap_dance_state) - { - case SINGLE_HOLD: - { - rgblight_increase_hue_noeeprom(); - break; - } - - case DOUBLE: - { - rgblight_step_noeeprom(); - break; - } - - case TRIPLE: - { - rgblight_toggle_noeeprom(); - break; - } - - default: - // Not needed - break; - } - - timer = timer_read(); - } - } -} - -void dance_finished(tap_dance_state_t *state, void* user_data) { - // Determine the current state - switch (state->count) - { - case 1: - { - if (state->interrupted || state->pressed == 0) tap_dance_state = SINGLE_TAP; - else tap_dance_state = SINGLE_HOLD; - break; - } - case 2: - { - tap_dance_state = DOUBLE; - break; - } - case 3: - { - tap_dance_state = TRIPLE; - break; - } - default: - { - tap_dance_state = QUAD; - break; - } - } - - switch (tap_dance_state) - { - case SINGLE_TAP: - { - // VS Build: CTRL+SHIFT+B - send_string_with_delay_P(PSTR(SS_DOWN(X_LCTL) SS_DOWN(X_LSFT) "b" SS_UP(X_LSFT) SS_UP(X_LCTL)), 10); - tap_dance_active = false; - break; - } - - case SINGLE_HOLD: - case DOUBLE: - case TRIPLE: - { - // These are handled by the matrix_scan, which will register the appropriate rgb - // functions every scan - tap_dance_active = true; - timer = timer_read(); - dance_cycle(true); - break; - } - - case QUAD: - { - // Reprogram - reset_keyboard(); - break; - } - } -} - -void dance_reset(tap_dance_state_t *state, void* user_data) -{ - tap_dance_active = false; -} - -tap_dance_action_t tap_dance_actions[] = { - [TD_KEY] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_finished, dance_reset) -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT(TD(TD_KEY)) -}; - -void matrix_scan_user(void) { - dance_cycle(false); -} diff --git a/keyboards/flehrad/bigswitch/keymaps/333fred/rules.mk b/keyboards/flehrad/bigswitch/keymaps/333fred/rules.mk deleted file mode 100644 index 20aaadacbcd8..000000000000 --- a/keyboards/flehrad/bigswitch/keymaps/333fred/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -# I'm not using things from my userpace in this one -USER_NAME = disable - -RGBLIGHT_ENABLE = yes -TAP_DANCE_ENABLE = yes diff --git a/keyboards/flehrad/bigswitch/keymaps/wanleg/config.h b/keyboards/flehrad/bigswitch/keymaps/wanleg/config.h deleted file mode 100644 index bb638ce599b6..000000000000 --- a/keyboards/flehrad/bigswitch/keymaps/wanleg/config.h +++ /dev/null @@ -1,42 +0,0 @@ -/* Copyright 2018 wanleg - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -// place overrides here -#undef MATRIX_ROW_PINS -#define MATRIX_ROW_PINS { B4 } -#undef MATRIX_COL_PINS -#define MATRIX_COL_PINS { B6 } - -/* COL2ROW, ROW2COL*/ -#undef DIODE_DIRECTION -#define DIODE_DIRECTION COL2ROW - -#define BACKLIGHT_PIN B5 -#define BACKLIGHT_BREATHING -#define BACKLIGHT_LEVELS 3 -#define BREATHING_PERIOD 5 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#undef DEBOUNCE -#define DEBOUNCE 5 - -// set flashing LED with QMK DFU -#define QMK_LED B0 - -// set audio pin -#define AUDIO_PIN C6 diff --git a/keyboards/flehrad/bigswitch/keymaps/wanleg/keymap.c b/keyboards/flehrad/bigswitch/keymaps/wanleg/keymap.c deleted file mode 100644 index 4a34640466e0..000000000000 --- a/keyboards/flehrad/bigswitch/keymaps/wanleg/keymap.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright 2018 wanleg - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "wanleg.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT( /* Base */ -TD(CAD_TD) -), -[1] = LAYOUT( /*Secondary*/ -TD(BSW_TAP_DANCE) -), -}; \ No newline at end of file diff --git a/keyboards/flehrad/bigswitch/keymaps/wanleg/rules.mk b/keyboards/flehrad/bigswitch/keymaps/wanleg/rules.mk deleted file mode 100644 index d6c3b1880e83..000000000000 --- a/keyboards/flehrad/bigswitch/keymaps/wanleg/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -#If using a ProMicro and it has the QMK DFU bootloader instead of Caterina, -#run "make : dfu=qmk" when compiling to ensure it is flagged properly after being flashed -ifeq ($(strip $(dfu)), qmk) - BOOTLOADER = qmk-dfu -endif - -AUDIO_ENABLE = yes # Audio output on port C6 -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config) -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/foostan/cornelius/keymaps/hvp/config.h b/keyboards/foostan/cornelius/keymaps/hvp/config.h deleted file mode 100644 index a2a492ff271e..000000000000 --- a/keyboards/foostan/cornelius/keymaps/hvp/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2018 Carlos Filoteo - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 TAPPING_TERM 200 -#define TAPPING_TERM_PER_KEY diff --git a/keyboards/foostan/cornelius/keymaps/hvp/keymap.c b/keyboards/foostan/cornelius/keymaps/hvp/keymap.c deleted file mode 100644 index 247eaf7a4e30..000000000000 --- a/keyboards/foostan/cornelius/keymaps/hvp/keymap.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Copyright 2020 foostan - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "hvp.c" - -#define LT3_ESC LT(3, KC_ESC) -#define LT4_TAB LT(5, KC_TAB) -#define LT2 LT(2, KC_LEFT_CURLY_BRACE) -#define LT1 LT(1, KC_RIGHT_CURLY_BRACE) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = LAYOUT( - LT4_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - LT3_ESC, MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_S), MT(MOD_LSFT, KC_D), MT(MOD_LCTL, KC_F), LT(4,KC_G), MT(MOD_RCTL, KC_H), MT(MOD_RSFT, KC_J), MT(MOD_RALT,KC_K), MT(MOD_RGUI,KC_L), TD(TD1), TD(TD2), - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, TD(TD3), SC_SENT, - SC_LCPO, KC_LCTL, KC_LGUI, KC_LALT, LT2, KC_SPC, KC_ENT, LT1, KC_RALT, KC_RGUI, KC_RCTL, SC_RSPC - ), - -[1] = LAYOUT( /* Right */ - KC_TILDE, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - KC_DEL, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -[2] = LAYOUT( /* Left */ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_DEL, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -[3] = LAYOUT( /* 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_DELETE, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, - _______, _______, _______, _______, _______, KC_MUTE, KC_MPLY, KC_MSTP, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT - ), - -[4] = LAYOUT( - _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), KC_7, KC_8, KC_9, KC_BSPC, - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_4, KC_5, KC_6, KC_0, - _______, _______, _______, _______, _______, _______, XXXXXXX, KC_0, KC_1, KC_2, KC_3, _______, - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -[5] = LAYOUT( - _______, G(S(KC_1)), G(S(KC_2)), G(S(KC_3)), G(S(KC_4)), G(S(KC_5)), G(S(KC_6)), G(S(KC_7)), G(S(KC_8)), G(S(KC_9)), G(S(KC_0)), _______, - _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS, - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NUM - ), -}; diff --git a/keyboards/foostan/cornelius/keymaps/hvp/readme.md b/keyboards/foostan/cornelius/keymaps/hvp/readme.md deleted file mode 100644 index cb35bd8a29d9..000000000000 --- a/keyboards/foostan/cornelius/keymaps/hvp/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for cornelius diff --git a/keyboards/foostan/cornelius/keymaps/hvp/rules.mk b/keyboards/foostan/cornelius/keymaps/hvp/rules.mk deleted file mode 100644 index 1ba2fa8fbefa..000000000000 --- a/keyboards/foostan/cornelius/keymaps/hvp/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/foostan/cornelius/keymaps/pdl/config.h b/keyboards/foostan/cornelius/keymaps/pdl/config.h deleted file mode 100644 index f2a5a522eac3..000000000000 --- a/keyboards/foostan/cornelius/keymaps/pdl/config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -This is the c configuration file for the keymap - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert -Copyright 2021 Daniel Perrett - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 TAPPING_TOGGLE 2 -#define TAPPING_TERM 200 - -#define COMBO_PDL -#define COMBO_TERM 100 diff --git a/keyboards/foostan/cornelius/keymaps/pdl/keymap.c b/keyboards/foostan/cornelius/keymaps/pdl/keymap.c deleted file mode 100644 index 3b71280ad8bd..000000000000 --- a/keyboards/foostan/cornelius/keymaps/pdl/keymap.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright 2021 Daniel Perrett - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "pdl.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_wrapper( - MY_FESC, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC, - KC_TAB, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, MY_SQUO, - MY_SBSL, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, NUMBRS, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN, MY_AMNU, FUNCTN, MY_CENT - ), - [_PROXIM] = LAYOUT_wrapper( - MY_FESC, _________________PROXIM_L1_________________, _________________PROXIM_R1_________________, KC_BSPC, - KC_TAB, _________________PROXIM_L2_________________, _________________PROXIM_R2_________________, MY_ASCL, - MY_SBSL, _________________PROXIM_L3_________________, _________________PROXIM_R3_________________, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, NUMBRS, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN, MY_AMNU, FUNCTN, MY_CENT - ), - [_NAVIGN] = LAYOUT_wrapper( - _______, _________________NAVIGN_L1_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NAVIGN_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NAVIGN_L3_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_PUNCTN] = LAYOUT_wrapper( - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R1_________________, _______, - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R2_________________, _______, - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_NUMBRS] = LAYOUT_wrapper( - _______, _________________NUMBRS_L1_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NUMBRS_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NUMBRS_L3_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_CODING] = LAYOUT_wrapper( - _______, _______, _______, _______, _______, _______, _________________CODING_R1_________________, _______, - _______, _______, _______, _______, _______, _______, _________________CODING_R2_________________, _______, - _______, _______, _______, _______, _______, _______, _________________CODING_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_FUNCTN] = LAYOUT_wrapper( - _______, _________________FUNCTN_L1_________________, _________________FUNCTN_R1_________________, MY_CAD, - _______, _________________FUNCTN_L2_________________, _________________FUNCTN_R2_________________, KC_PSCR, - _______, _________________FUNCTN_L3_________________, _________________FUNCTN_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/foostan/cornelius/keymaps/pdl/readme.md b/keyboards/foostan/cornelius/keymaps/pdl/readme.md deleted file mode 100644 index 59bb03d18bb8..000000000000 --- a/keyboards/foostan/cornelius/keymaps/pdl/readme.md +++ /dev/null @@ -1 +0,0 @@ -# A keymap for cornelius used by pdl diff --git a/keyboards/foostan/cornelius/keymaps/vial/config.h b/keyboards/foostan/cornelius/keymaps/vial/config.h new file mode 100644 index 000000000000..fa3da1b96333 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/vial/config.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0xF6, 0x6F, 0x8F, 0xDF, 0x63, 0xDF, 0x04, 0x7B} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 6 } \ No newline at end of file diff --git a/keyboards/foostan/cornelius/keymaps/vial/keymap.c b/keyboards/foostan/cornelius/keymaps/vial/keymap.c new file mode 100644 index 000000000000..8aa3deca21f4 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/vial/keymap.c @@ -0,0 +1,39 @@ +/* Copyright 2020 foostan + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + XXXXXXX, KC_LCTL, KC_LGUI, KC_LALT, TL_LOWR, KC_SPC, KC_ENT, TL_UPPR, KC_RALT, KC_RGUI, KC_RCTL, XXXXXXX + ), + + [1] = LAYOUT( + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) +}; diff --git a/keyboards/foostan/cornelius/keymaps/vial/rules.mk b/keyboards/foostan/cornelius/keymaps/vial/rules.mk new file mode 100644 index 000000000000..35d8927592f1 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/vial/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +LTO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/foostan/cornelius/keymaps/vial/vial.json b/keyboards/foostan/cornelius/keymaps/vial/vial.json new file mode 100644 index 000000000000..fdfa8a3ba941 --- /dev/null +++ b/keyboards/foostan/cornelius/keymaps/vial/vial.json @@ -0,0 +1,40 @@ +{ + "lighting": "none", + "matrix": {"rows": 4, "cols": 12}, + "layouts": { + "keymap": [ + [{"r": 10, "rx": 1.5, "x": 2.5}, "0,3"], + [{"y": -0.875, "x": 3.5}, "0,4"], + [{"y": -0.875, "x": 1.5}, "0,2", {"x": 2}, "0,5"], + [{"y": -0.625, "x": -0.5}, "0,0", "0,1"], + [{"y": -0.625, "x": 2.5}, "1,3"], + [{"y": -0.875, "x": 3.5}, "1,4"], + [{"y": -0.875, "x": 1.5}, "1,2", {"x": 2}, "1,5"], + [{"y": -0.625, "x": -0.5}, "1,0", "1,1"], + [{"y": -0.625, "x": 2.5}, "2,3"], + [{"y": -0.875, "x": 3.5}, "2,4"], + [{"y": -0.875, "x": 1.5}, "2,2", {"x": 2}, "2,5"], + [{"y": -0.625, "x": -0.5}, "2,0", "2,1"], + [{"y": -0.375, "x": 1.5}, "3,2", {"x": 0.5}, "3,3"], + [{"y": -0.625, "x": -0.5}, "3,0", "3,1"], + [{"r": 25, "y": -2.515, "x": 4.97}, "3,4"], + [{"r": 40, "y": -2.6, "x": 6.55}, "3,5"], + [{"r": -40, "rx": 13.25, "y": 0.51, "x": -7.55}, "3,6"], + [{"r": -25, "y": 0.6, "x": -5.97}, "3,7"], + [{"r": -10, "y": -3.11, "x": -3.5}, "0,8"], + [{"y": -0.875, "x": -4.5}, "0,7"], + [{"y": -0.875, "x": -5.5}, "0,6", {"x": 2}, "0,9"], + [{"y": -0.625, "x": -1.5}, "0,10", "0,11"], + [{"y": -0.625, "x": -3.5}, "1,8"], + [{"y": -0.875, "x": -4.5}, "1,7"], + [{"y": -0.875, "x": -5.5}, "1,6", {"x": 2}, "1,9"], + [{"y": -0.625, "x": -1.5}, "1,10", "1,11"], + [{"y": -0.625, "x": -3.5}, "2,8"], + [{"y": -0.875, "x": -4.5}, "2,7"], + [{"y": -0.875, "x": -5.5}, "2,6", {"x": 2}, "2,9"], + [{"y": -0.625, "x": -1.5}, "2,10", "2,11"], + [{"y": -0.375, "x": -4}, "3,8", {"x": 0.5}, "3,9"], + [{"y": -0.625, "x": -1.5}, "3,10", "3,11"] + ] + } +} diff --git a/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h b/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index c05e920287f1..000000000000 --- a/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT(\ -XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ -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,\ - K32, K33, K34, K35, K36, K37\ -) diff --git a/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/fortitude60/keymaps/manna-harbour_miryoku/config.h b/keyboards/fortitude60/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index e335d5d8b86e..000000000000 --- a/keyboards/fortitude60/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT(\ -XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ - XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX\ -) diff --git a/keyboards/fortitude60/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/fortitude60/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/fortitude60/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c b/keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c deleted file mode 100644 index 63374f401fec..000000000000 --- a/keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2019 Jarred Steenvoorden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "jarred.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QW] = LAYOUT_60_hhkb( - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV , - KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC, - NAVI , 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_ENT , - KC_LCTL, KC_LGUI, KC_SPC , KC_RALT, KC_RCTL - ), - - [_NV] = LAYOUT_60_hhkb( - KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, - _______, _______, _______, _______, KC_DEL , KC_BSPC, _______, KC_HOME, KC_UP , KC_END , KC_INS , _______, _______, _______, - _______, _______, _______, KC_LSFT, KC_LCTL, KC_ENT , _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL , KC_DEL , _______, - _______ , _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, _______, _______, - _______, _______, ALT_TAB , _______, QK_BOOT - ), - -}; diff --git a/keyboards/foxlab/leaf60/universal/keymaps/jarred/readme.md b/keyboards/foxlab/leaf60/universal/keymaps/jarred/readme.md deleted file mode 100644 index 6b0a57a1e657..000000000000 --- a/keyboards/foxlab/leaf60/universal/keymaps/jarred/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Jarred's Leaf60 Layout - -Check out [user space readme](../../../../../../users/jarred/readme.md) for more info - -# Flash - -``` -make foxlab/leaf60/universal:jarred:dfu -``` diff --git a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/config.h b/keyboards/foxlab/leaf60/universal/keymaps/mguterl/config.h deleted file mode 100644 index d8f6533c6ba9..000000000000 --- a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/config.h +++ /dev/null @@ -1,19 +0,0 @@ -/* Copyright 2019 Fox Lab - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -// place overrides here diff --git a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c b/keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c deleted file mode 100644 index 22dede06960a..000000000000 --- a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Copyright 2019 Fox Lab - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "mguterl.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QWERTY] = LAYOUT_all( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - ESC_CTL, 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_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(UTIL), - KC_LALT, KC_LALT, KC_LGUI, SPC_UTL, SPC_UTL, SPC_UTL, KC_RALT, MO(1), KC_RGUI, KC_RCTL), - - [_GAMING] = LAYOUT_all( - KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______), - - [_UTIL] = LAYOUT_all( - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - TG_GAME, KC_MPLY, KC_MPRV, KC_MNXT, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, - _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) - - -}; diff --git a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/readme.md b/keyboards/foxlab/leaf60/universal/keymaps/mguterl/readme.md deleted file mode 100644 index 7f1d982bce97..000000000000 --- a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Michael Guterl's Leaf60 WKL Layout - -Check out my [userspace](/users/mguterl) for the custom keycodes that are used -in keymap.c. - -This is a pretty standard 60% WKL layout. I add a couple of layers to add -some conveniences and add vimkeys for navigation. - -```sh -make foxlab/leaf60/universal:mguterl:flash -``` diff --git a/keyboards/frobiac/blackbowl/rules.mk b/keyboards/frobiac/blackbowl/rules.mk index 6004c37f9eaa..4e81c7280cdb 100644 --- a/keyboards/frobiac/blackbowl/rules.mk +++ b/keyboards/frobiac/blackbowl/rules.mk @@ -1,7 +1,7 @@ CUSTOM_MATRIX = lite # project specific files -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes SRC += matrix.c PS2_MOUSE_ENABLE = yes diff --git a/keyboards/frooastboard/walnut/config.h b/keyboards/frooastboard/walnut/config.h index 2703ec1e3766..710cd1934208 100644 --- a/keyboards/frooastboard/walnut/config.h +++ b/keyboards/frooastboard/walnut/config.h @@ -3,14 +3,9 @@ #pragma once -#define ISSI_TIMEOUT 100 -#define ISSI_PERSISTENCE 0 -#define ISSI_PWM_FREQUENCY 0b010 -#define ISSI_SWPULLUP PUR_0R -#define ISSI_CSPULLUP PUR_0R -#define DRIVER_COUNT 1 +#define IS31FL3737_PWM_FREQUENCY IS31FL3737_PWM_FREQUENCY_26K7_HZ #define RGB_MATRIX_LED_COUNT 48 -#define DRIVER_ADDR_1 0b1010000 +#define IS31FL3737_I2C_ADDRESS_1 IS31FL3737_I2C_ADDRESS_GND #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 191 @@ -45,8 +40,5 @@ #define ENABLE_RGB_MATRIX_PIXEL_FLOW #define RGB_MATRIX_LED_FLUSH_LIMIT 16 -#define RGB_MATRIX_DEFAULT_HUE 0 -#define RGB_MATRIX_DEFAULT_SAT 255 #define RGB_MATRIX_DEFAULT_SPD 191 -#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON diff --git a/keyboards/frooastboard/walnut/walnut.c b/keyboards/frooastboard/walnut/walnut.c index 7163af011db2..48d1677f7ac6 100644 --- a/keyboards/frooastboard/walnut/walnut.c +++ b/keyboards/frooastboard/walnut/walnut.c @@ -5,7 +5,7 @@ #if defined(RGB_MATRIX_ENABLE) -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3737_led_t PROGMEM g_is31fl3737_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/fruitykeeb/fruitbar/fruitbar.c b/keyboards/fruitykeeb/fruitbar/fruitbar.c new file mode 100644 index 000000000000..9a1bb316f961 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/fruitbar.c @@ -0,0 +1,38 @@ +/* +Copyright 2021 ojthetiny + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "quantum.h" + +#ifdef OLED_ENABLE +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + // Layer Status + oled_write_P(PSTR("Layer:"), false); + oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); + + return true; +} +#endif diff --git a/keyboards/fruitykeeb/fruitbar/info.json b/keyboards/fruitykeeb/fruitbar/info.json new file mode 100644 index 000000000000..af1fb3fe43a9 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/info.json @@ -0,0 +1,7 @@ +{ + "manufacturer": "Fruitykeeb", + "url": "https://fruitykeeb.xyz", + "usb": { + "vid": "0x666B" + } +} diff --git a/keyboards/fruitykeeb/fruitbar/r1/elite_c/info.json b/keyboards/fruitykeeb/fruitbar/r1/elite_c/info.json new file mode 100644 index 000000000000..759b9a1af147 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r1/elite_c/info.json @@ -0,0 +1,37 @@ +{ + "development_board": "elite_c", + "encoder": { + "rotary": [ + {"pin_a": "F0", "pin_b": "F1"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true, + "rgblight": true + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 8, + "max_brightness": 175, + "sleep": true + }, + "ws2812": { + "pin": "C7" + } +} diff --git a/keyboards/fruitykeeb/fruitbar/r1/elite_c/rules.mk b/keyboards/fruitykeeb/fruitbar/r1/elite_c/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r1/elite_c/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/fruitykeeb/fruitbar/r1/info.json b/keyboards/fruitykeeb/fruitbar/r1/info.json new file mode 100644 index 000000000000..64347e198d9f --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r1/info.json @@ -0,0 +1,256 @@ +{ + "keyboard_name": "Fruitbar", + "maintainer": "blewis308", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["D3", "D2", "D4", "C6", "D7", "E6", "B4", "B5", "B6", "B2", "B3"], + "rows": ["F4", "F5", "F6", "F7", "B1"] + }, + "qmk": { + "locking": { + "enabled": true, + "resync": true + } + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x6661" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_all" + }, + "layouts": { + "LAYOUT_625u": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [1, 1], "x": 2.5, "y": 0}, + {"matrix": [0, 2], "x": 3.5, "y": 0}, + {"matrix": [0, 3], "x": 4.5, "y": 0}, + {"matrix": [0, 4], "x": 5.5, "y": 0}, + {"matrix": [0, 5], "x": 6.5, "y": 0}, + {"matrix": [1, 5], "x": 7.5, "y": 0}, + {"matrix": [0, 6], "x": 8.5, "y": 0}, + {"matrix": [1, 6], "x": 9.5, "y": 0}, + {"matrix": [0, 7], "x": 10.5, "y": 0}, + {"matrix": [0, 8], "x": 11.5, "y": 0}, + {"matrix": [1, 8], "x": 12.5, "y": 0}, + {"matrix": [0, 9], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 10], "x": 15.5, "y": 0}, + {"matrix": [1, 10], "x": 16.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [2, 2], "x": 3.75, "y": 1}, + {"matrix": [1, 3], "x": 4.75, "y": 1}, + {"matrix": [1, 4], "x": 5.75, "y": 1}, + {"matrix": [2, 5], "x": 6.75, "y": 1}, + {"matrix": [3, 5], "x": 7.75, "y": 1}, + {"matrix": [2, 6], "x": 8.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [2, 7], "x": 10.75, "y": 1}, + {"matrix": [2, 8], "x": 11.75, "y": 1}, + {"matrix": [2, 9], "x": 12.75, "y": 1, "w": 2.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 2}, + {"matrix": [3, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [3, 3], "x": 5.25, "y": 2}, + {"matrix": [2, 4], "x": 6.25, "y": 2}, + {"matrix": [3, 4], "x": 7.25, "y": 2}, + {"matrix": [4, 5], "x": 8.25, "y": 2}, + {"matrix": [3, 6], "x": 9.25, "y": 2}, + {"matrix": [3, 7], "x": 10.25, "y": 2}, + {"matrix": [3, 8], "x": 11.25, "y": 2}, + {"matrix": [3, 9], "x": 12.25, "y": 2, "w": 2.25}, + {"matrix": [2, 10], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 0], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [4, 1], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [4, 2], "x": 3.75, "y": 3, "w": 2.25}, + {"matrix": [4, 3], "x": 6, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 7.25, "y": 3, "w": 2.75}, + {"matrix": [4, 6], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [4, 7], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [4, 8], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [4, 9], "x": 14.5, "y": 3}, + {"matrix": [3, 10], "x": 15.5, "y": 3}, + {"matrix": [4, 10], "x": 16.5, "y": 3} + ] + }, + "LAYOUT_625u_split_enter": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [1, 1], "x": 2.5, "y": 0}, + {"matrix": [0, 2], "x": 3.5, "y": 0}, + {"matrix": [0, 3], "x": 4.5, "y": 0}, + {"matrix": [0, 4], "x": 5.5, "y": 0}, + {"matrix": [0, 5], "x": 6.5, "y": 0}, + {"matrix": [1, 5], "x": 7.5, "y": 0}, + {"matrix": [0, 6], "x": 8.5, "y": 0}, + {"matrix": [1, 6], "x": 9.5, "y": 0}, + {"matrix": [0, 7], "x": 10.5, "y": 0}, + {"matrix": [0, 8], "x": 11.5, "y": 0}, + {"matrix": [1, 8], "x": 12.5, "y": 0}, + {"matrix": [0, 9], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 10], "x": 15.5, "y": 0}, + {"matrix": [1, 10], "x": 16.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [2, 2], "x": 3.75, "y": 1}, + {"matrix": [1, 3], "x": 4.75, "y": 1}, + {"matrix": [1, 4], "x": 5.75, "y": 1}, + {"matrix": [2, 5], "x": 6.75, "y": 1}, + {"matrix": [3, 5], "x": 7.75, "y": 1}, + {"matrix": [2, 6], "x": 8.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [2, 7], "x": 10.75, "y": 1}, + {"matrix": [2, 8], "x": 11.75, "y": 1}, + {"matrix": [1, 9], "x": 12.75, "y": 1}, + {"matrix": [2, 9], "x": 13.75, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 2}, + {"matrix": [3, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [3, 3], "x": 5.25, "y": 2}, + {"matrix": [2, 4], "x": 6.25, "y": 2}, + {"matrix": [3, 4], "x": 7.25, "y": 2}, + {"matrix": [4, 5], "x": 8.25, "y": 2}, + {"matrix": [3, 6], "x": 9.25, "y": 2}, + {"matrix": [3, 7], "x": 10.25, "y": 2}, + {"matrix": [3, 8], "x": 11.25, "y": 2}, + {"matrix": [3, 9], "x": 12.25, "y": 2, "w": 2.25}, + {"matrix": [2, 10], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 0], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [4, 1], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [4, 3], "x": 3.75, "y": 3, "w": 6.25}, + {"matrix": [4, 6], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [4, 7], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [4, 8], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [4, 9], "x": 14.5, "y": 3}, + {"matrix": [3, 10], "x": 15.5, "y": 3}, + {"matrix": [4, 10], "x": 16.5, "y": 3} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [1, 1], "x": 2.5, "y": 0}, + {"matrix": [0, 2], "x": 3.5, "y": 0}, + {"matrix": [0, 3], "x": 4.5, "y": 0}, + {"matrix": [0, 4], "x": 5.5, "y": 0}, + {"matrix": [0, 5], "x": 6.5, "y": 0}, + {"matrix": [1, 5], "x": 7.5, "y": 0}, + {"matrix": [0, 6], "x": 8.5, "y": 0}, + {"matrix": [1, 6], "x": 9.5, "y": 0}, + {"matrix": [0, 7], "x": 10.5, "y": 0}, + {"matrix": [0, 8], "x": 11.5, "y": 0}, + {"matrix": [1, 8], "x": 12.5, "y": 0}, + {"matrix": [0, 9], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 10], "x": 15.5, "y": 0}, + {"matrix": [1, 10], "x": 16.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [2, 2], "x": 3.75, "y": 1}, + {"matrix": [1, 3], "x": 4.75, "y": 1}, + {"matrix": [1, 4], "x": 5.75, "y": 1}, + {"matrix": [2, 5], "x": 6.75, "y": 1}, + {"matrix": [3, 5], "x": 7.75, "y": 1}, + {"matrix": [2, 6], "x": 8.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [2, 7], "x": 10.75, "y": 1}, + {"matrix": [2, 8], "x": 11.75, "y": 1}, + {"matrix": [1, 9], "x": 12.75, "y": 1}, + {"matrix": [2, 9], "x": 13.75, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 2}, + {"matrix": [3, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [3, 3], "x": 5.25, "y": 2}, + {"matrix": [2, 4], "x": 6.25, "y": 2}, + {"matrix": [3, 4], "x": 7.25, "y": 2}, + {"matrix": [4, 5], "x": 8.25, "y": 2}, + {"matrix": [3, 6], "x": 9.25, "y": 2}, + {"matrix": [3, 7], "x": 10.25, "y": 2}, + {"matrix": [3, 8], "x": 11.25, "y": 2}, + {"matrix": [3, 9], "x": 12.25, "y": 2, "w": 2.25}, + {"matrix": [2, 10], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 0], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [4, 1], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [4, 2], "x": 3.75, "y": 3, "w": 2.25}, + {"matrix": [4, 3], "x": 6, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 7.25, "y": 3, "w": 2.75}, + {"matrix": [4, 6], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [4, 7], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [4, 8], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [4, 9], "x": 14.5, "y": 3}, + {"matrix": [3, 10], "x": 15.5, "y": 3}, + {"matrix": [4, 10], "x": 16.5, "y": 3} + ] + }, + "LAYOUT_split_space": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [1, 1], "x": 2.5, "y": 0}, + {"matrix": [0, 2], "x": 3.5, "y": 0}, + {"matrix": [0, 3], "x": 4.5, "y": 0}, + {"matrix": [0, 4], "x": 5.5, "y": 0}, + {"matrix": [0, 5], "x": 6.5, "y": 0}, + {"matrix": [1, 5], "x": 7.5, "y": 0}, + {"matrix": [0, 6], "x": 8.5, "y": 0}, + {"matrix": [1, 6], "x": 9.5, "y": 0}, + {"matrix": [0, 7], "x": 10.5, "y": 0}, + {"matrix": [0, 8], "x": 11.5, "y": 0}, + {"matrix": [1, 8], "x": 12.5, "y": 0}, + {"matrix": [0, 9], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 10], "x": 15.5, "y": 0}, + {"matrix": [1, 10], "x": 16.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [2, 2], "x": 3.75, "y": 1}, + {"matrix": [1, 3], "x": 4.75, "y": 1}, + {"matrix": [1, 4], "x": 5.75, "y": 1}, + {"matrix": [2, 5], "x": 6.75, "y": 1}, + {"matrix": [3, 5], "x": 7.75, "y": 1}, + {"matrix": [2, 6], "x": 8.75, "y": 1}, + {"matrix": [1, 7], "x": 9.75, "y": 1}, + {"matrix": [2, 7], "x": 10.75, "y": 1}, + {"matrix": [2, 8], "x": 11.75, "y": 1}, + {"matrix": [2, 9], "x": 12.75, "y": 1, "w": 2.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 2}, + {"matrix": [3, 2], "x": 3.25, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [3, 3], "x": 5.25, "y": 2}, + {"matrix": [2, 4], "x": 6.25, "y": 2}, + {"matrix": [3, 4], "x": 7.25, "y": 2}, + {"matrix": [4, 5], "x": 8.25, "y": 2}, + {"matrix": [3, 6], "x": 9.25, "y": 2}, + {"matrix": [3, 7], "x": 10.25, "y": 2}, + {"matrix": [3, 8], "x": 11.25, "y": 2}, + {"matrix": [3, 9], "x": 12.25, "y": 2, "w": 2.25}, + {"matrix": [2, 10], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [4, 0], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [4, 1], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [4, 2], "x": 3.75, "y": 3, "w": 2.25}, + {"matrix": [4, 3], "x": 6, "y": 3, "w": 1.25}, + {"matrix": [4, 4], "x": 7.25, "y": 3, "w": 2.75}, + {"matrix": [4, 6], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [4, 7], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [4, 8], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [4, 9], "x": 14.5, "y": 3}, + {"matrix": [3, 10], "x": 15.5, "y": 3}, + {"matrix": [4, 10], "x": 16.5, "y": 3} + ] + } + } +} diff --git a/keyboards/fruitykeeb/fruitbar/r1/keymaps/default/keymap.json b/keyboards/fruitykeeb/fruitbar/r1/keymaps/default/keymap.json new file mode 100644 index 000000000000..43130c015255 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r1/keymaps/default/keymap.json @@ -0,0 +1,20 @@ +{ + "keyboard": "fruitykeeb/fruitbar/r1", + "keymap": "default", + "version": 1, + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSPC", "KC_HOME", "KC_END", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUBS", "KC_ENT", + "KC_LSFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_UP", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_RALT", "MO(1)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT" + ], + [ + "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_DEL", "KC_PGDN", "KC_PGUP", + "KC_CAPS", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_TRNS", "KC_F12", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "QK_BOOT", "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/fruitykeeb/fruitbar/r1/promicro/info.json b/keyboards/fruitykeeb/fruitbar/r1/promicro/info.json new file mode 100644 index 000000000000..fca024fcae14 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r1/promicro/info.json @@ -0,0 +1,10 @@ +{ + "development_board": "promicro", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true + } +} diff --git a/keyboards/fruitykeeb/fruitbar/r1/promicro/rules.mk b/keyboards/fruitykeeb/fruitbar/r1/promicro/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r1/promicro/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/fruitykeeb/fruitbar/r1/rules.mk b/keyboards/fruitykeeb/fruitbar/r1/rules.mk new file mode 100644 index 000000000000..3328de6095a6 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r1/rules.mk @@ -0,0 +1 @@ +DEFAULT_FOLDER = fruitykeeb/fruitbar/r1/promicro diff --git a/keyboards/fruitykeeb/fruitbar/r2/config.h b/keyboards/fruitykeeb/fruitbar/r2/config.h new file mode 100644 index 000000000000..320889eb91a2 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r2/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2022 ojthetiny + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 I2C_DRIVER I2CD1 +#define I2C1_SCL_PIN GP27 +#define I2C1_SDA_PIN GP26 + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U diff --git a/keyboards/fruitykeeb/fruitbar/r2/halconf.h b/keyboards/fruitykeeb/fruitbar/r2/halconf.h new file mode 100644 index 000000000000..727e8508b003 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r2/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2022 @ojthetiny +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/fruitykeeb/fruitbar/r2/info.json b/keyboards/fruitykeeb/fruitbar/r2/info.json new file mode 100644 index 000000000000..c2b496926bd2 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r2/info.json @@ -0,0 +1,290 @@ +{ + "keyboard_name": "Fruitbar r2", + "maintainer": "ojthetiny", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "GP0", "pin_b": "GP1"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP17", "GP16", "GP15", "GP13", "GP12", "GP11", "GP9", "GP8", "GP7", "GP3"], + "rows": ["GP29", "GP18", "GP10", "GP6"] + }, + "processor": "RP2040", + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 8, + "max_brightness": 175, + "sleep": true + }, + "usb": { + "device_version": "2.0.0", + "pid": "0x6662" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP28" + }, + "layouts": { + "LAYOUT_625u_split_enter_split_lshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 10.5, "y": 0}, + {"matrix": [0, 11], "x": 11.5, "y": 0}, + {"matrix": [0, 12], "x": 12.5, "y": 0}, + {"matrix": [0, 13], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 14], "x": 15.5, "y": 0}, + {"matrix": [0, 15], "x": 16.5, "y": 0, "encoder": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [1, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.25}, + {"matrix": [2, 1], "x": 1.25, "y": 2}, + {"matrix": [2, 2], "x": 2.25, "y": 2}, + {"matrix": [2, 3], "x": 3.25, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2}, + {"matrix": [2, 5], "x": 5.25, "y": 2}, + {"matrix": [2, 6], "x": 6.25, "y": 2}, + {"matrix": [2, 7], "x": 7.25, "y": 2}, + {"matrix": [2, 8], "x": 8.25, "y": 2}, + {"matrix": [2, 9], "x": 9.25, "y": 2}, + {"matrix": [2, 10], "x": 10.25, "y": 2}, + {"matrix": [2, 11], "x": 11.25, "y": 2}, + {"matrix": [2, 12], "x": 12.25, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 7], "x": 3.75, "y": 3, "w": 6.25}, + {"matrix": [3, 10], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [3, 12], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [3, 13], "x": 14.5, "y": 3}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3} + ] + }, + "LAYOUT_625u_split_enter_split_lshift_split_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 10.5, "y": 0}, + {"matrix": [0, 11], "x": 11.5, "y": 0}, + {"matrix": [0, 12], "x": 12.5, "y": 0}, + {"matrix": [0, 13], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 14], "x": 15.5, "y": 0}, + {"matrix": [0, 15], "x": 16.5, "y": 0, "encoder": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [1, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.25}, + {"matrix": [2, 1], "x": 1.25, "y": 2}, + {"matrix": [2, 2], "x": 2.25, "y": 2}, + {"matrix": [2, 3], "x": 3.25, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2}, + {"matrix": [2, 5], "x": 5.25, "y": 2}, + {"matrix": [2, 6], "x": 6.25, "y": 2}, + {"matrix": [2, 7], "x": 7.25, "y": 2}, + {"matrix": [2, 8], "x": 8.25, "y": 2}, + {"matrix": [2, 9], "x": 9.25, "y": 2}, + {"matrix": [2, 10], "x": 10.25, "y": 2}, + {"matrix": [2, 11], "x": 11.25, "y": 2}, + {"matrix": [2, 12], "x": 12.25, "y": 2, "w": 1.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2}, + {"matrix": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 7], "x": 3.75, "y": 3, "w": 6.25}, + {"matrix": [3, 10], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [3, 12], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [3, 13], "x": 14.5, "y": 3}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 10.5, "y": 0}, + {"matrix": [0, 11], "x": 11.5, "y": 0}, + {"matrix": [0, 12], "x": 12.5, "y": 0}, + {"matrix": [0, 13], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 14], "x": 15.5, "y": 0}, + {"matrix": [0, 15], "x": 16.5, "y": 0, "encoder": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [1, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.25}, + {"matrix": [2, 1], "x": 1.25, "y": 2}, + {"matrix": [2, 2], "x": 2.25, "y": 2}, + {"matrix": [2, 3], "x": 3.25, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2}, + {"matrix": [2, 5], "x": 5.25, "y": 2}, + {"matrix": [2, 6], "x": 6.25, "y": 2}, + {"matrix": [2, 7], "x": 7.25, "y": 2}, + {"matrix": [2, 8], "x": 8.25, "y": 2}, + {"matrix": [2, 9], "x": 9.25, "y": 2}, + {"matrix": [2, 10], "x": 10.25, "y": 2}, + {"matrix": [2, 11], "x": 11.25, "y": 2}, + {"matrix": [2, 12], "x": 12.25, "y": 2, "w": 1.25}, + {"matrix": [2, 13], "x": 13.5, "y": 2}, + {"matrix": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 4], "x": 3.75, "y": 3, "w": 2.75}, + {"matrix": [3, 7], "x": 6.5, "y": 3, "w": 2.25}, + {"matrix": [3, 9], "x": 8.75, "y": 3, "w": 1.25}, + {"matrix": [3, 10], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [3, 12], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [3, 13], "x": 14.5, "y": 3}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3} + ] + }, + "LAYOUT_split_space_split_enter_split_lshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5}, + {"matrix": [0, 1], "x": 1.5, "y": 0}, + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.5, "y": 0}, + {"matrix": [0, 4], "x": 4.5, "y": 0}, + {"matrix": [0, 5], "x": 5.5, "y": 0}, + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 10.5, "y": 0}, + {"matrix": [0, 11], "x": 11.5, "y": 0}, + {"matrix": [0, 12], "x": 12.5, "y": 0}, + {"matrix": [0, 13], "x": 13.5, "y": 0, "w": 1.5}, + {"matrix": [0, 14], "x": 15.5, "y": 0}, + {"matrix": [0, 15], "x": 16.5, "y": 0, "encoder": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75}, + {"matrix": [1, 1], "x": 1.75, "y": 1}, + {"matrix": [1, 2], "x": 2.75, "y": 1}, + {"matrix": [1, 3], "x": 3.75, "y": 1}, + {"matrix": [1, 4], "x": 4.75, "y": 1}, + {"matrix": [1, 5], "x": 5.75, "y": 1}, + {"matrix": [1, 6], "x": 6.75, "y": 1}, + {"matrix": [1, 7], "x": 7.75, "y": 1}, + {"matrix": [1, 8], "x": 8.75, "y": 1}, + {"matrix": [1, 9], "x": 9.75, "y": 1}, + {"matrix": [1, 10], "x": 10.75, "y": 1}, + {"matrix": [1, 11], "x": 11.75, "y": 1}, + {"matrix": [1, 12], "x": 12.75, "y": 1}, + {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.25}, + {"matrix": [2, 1], "x": 1.25, "y": 2}, + {"matrix": [2, 2], "x": 2.25, "y": 2}, + {"matrix": [2, 3], "x": 3.25, "y": 2}, + {"matrix": [2, 4], "x": 4.25, "y": 2}, + {"matrix": [2, 5], "x": 5.25, "y": 2}, + {"matrix": [2, 6], "x": 6.25, "y": 2}, + {"matrix": [2, 7], "x": 7.25, "y": 2}, + {"matrix": [2, 8], "x": 8.25, "y": 2}, + {"matrix": [2, 9], "x": 9.25, "y": 2}, + {"matrix": [2, 10], "x": 10.25, "y": 2}, + {"matrix": [2, 11], "x": 11.25, "y": 2}, + {"matrix": [2, 12], "x": 12.25, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25}, + {"matrix": [3, 4], "x": 3.75, "y": 3, "w": 2.75}, + {"matrix": [3, 7], "x": 6.5, "y": 3, "w": 2.25}, + {"matrix": [3, 9], "x": 8.75, "y": 3, "w": 1.25}, + {"matrix": [3, 10], "x": 10, "y": 3, "w": 1.25}, + {"matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.25}, + {"matrix": [3, 12], "x": 12.5, "y": 3, "w": 1.25}, + {"matrix": [3, 13], "x": 14.5, "y": 3}, + {"matrix": [3, 14], "x": 15.5, "y": 3}, + {"matrix": [3, 15], "x": 16.5, "y": 3} + ] + } + } +} diff --git a/keyboards/fruitykeeb/fruitbar/r2/keymaps/default/keymap.json b/keyboards/fruitykeeb/fruitbar/r2/keymaps/default/keymap.json new file mode 100644 index 000000000000..954e264d1e2f --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r2/keymaps/default/keymap.json @@ -0,0 +1,33 @@ +{ + "keyboard": "fruitykeeb/fruitbar/r2", + "keymap": "default", + "version": 1, + "layout": "LAYOUT_all", + "layers": [ + [ + "KC_ESC", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSPC", "KC_HOME", "KC_END", + "KC_TAB", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUBS", "KC_ENT", + "KC_LSFT", "KC_NUHS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "MO(1)", "KC_UP", + "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_RALT", "MO(1)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT" + ], + [ + "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_DEL", "KC_PGDN", "KC_PGUP", + "KC_CAPS", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_TRNS", "KC_F12", + "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", + "QK_BOOT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS" + ] + ], + "config": { + "features": { + "encoder_map": true + } + }, + "encoders": [ + [ + { "ccw": "KC_VOLD", "cw": "KC_VOLU" } + ], + [ + { "ccw": "KC_TRNS", "cw": "KC_TRNS" } + ] + ] +} diff --git a/keyboards/fruitykeeb/fruitbar/r2/mcuconf.h b/keyboards/fruitykeeb/fruitbar/r2/mcuconf.h new file mode 100644 index 000000000000..406ea844dab6 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r2/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2022 @ojthetiny +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE diff --git a/keyboards/fruitykeeb/fruitbar/r2/rules.mk b/keyboards/fruitykeeb/fruitbar/r2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/r2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/fruitykeeb/fruitbar/readme.md b/keyboards/fruitykeeb/fruitbar/readme.md new file mode 100644 index 000000000000..1668659f324d --- /dev/null +++ b/keyboards/fruitykeeb/fruitbar/readme.md @@ -0,0 +1,36 @@ +# Fruitbar + +![Fruitbar](https://i.imgur.com/MlJudRrh.jpeg) + +A budget-oriented 40% with base kit compatibility. Perfect for those who have always wanted to try a 40% but worried about the lack of punctuation and arrow keys. + +* Keyboard Maintainer: [The QMK Community](https://github.com/qmk) +* Hardware Supported: + * Fruitbar PCB R1 (atmega32u4) + * If the keyboard was built with an Elite-C, use the `fruitykeeb/fruitbar/r1/elite_c` firmware for RGB and encoder support. + * Fruitbar PCB R2 (RP2040, rp2040) +* Hardware Availability: + * R1 Group Buy took place between 2021-10-01 and 2021-10-24 on [FruityKeeb](https://fruitykeeb.xyz/). + * R2 Group Buy took place between 2023-02-01 1400 UTC and 2023-03-04 0359 UTC on [P3DStore](https://p3dstore.com)(US), [42keebs.eu](https://42keebs.eu)(EU), [CustomKBD](https://customkbd.com)(AU). + +Make example for this keyboard (after setting up your build environment): + + make fruitykeeb/fruitbar/r1:default + make fruitykeeb/fruitbar/r2:default + +Flashing example for this keyboard: + + make fruitykeeb/fruitbar/r1:default:flash + make fruitykeeb/fruitbar/r2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear EEPROM/emulated EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset**: + - R1: Short the RST and GND pins on the Pro Micro. + - R2: While holding down the `Boot` button, press the `Reset` button. +* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the default keymap it is on the second layer, replacing the Left Control key in the bottom left. diff --git a/keyboards/gboards/butterstick/keymaps/dennytom/README.md b/keyboards/gboards/butterstick/keymaps/dennytom/README.md deleted file mode 100644 index a75bcc7506e2..000000000000 --- a/keyboards/gboards/butterstick/keymaps/dennytom/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# # Dennytom's Butterstick Layout - -This keymap is using a custom chording engine. Head out to my (DennyTom) user space to find the source files and details. - -To make a real keymap from the JSON file, run - -```sh -python3 parser.py keymap_def.json keymap.c -``` - -Somehow it fits the whole keyboard on 20 keys. For longer typing sessions, use the ASET NIOP mode. \ No newline at end of file diff --git a/keyboards/gboards/butterstick/keymaps/dennytom/keymap.c b/keyboards/gboards/butterstick/keymaps/dennytom/keymap.c deleted file mode 100644 index c90431cd9db1..000000000000 --- a/keyboards/gboards/butterstick/keymaps/dennytom/keymap.c +++ /dev/null @@ -1,1418 +0,0 @@ -#include QMK_KEYBOARD_H - -#define CHORD_TIMEOUT 100 -#define DANCE_TIMEOUT 200 -#define LEADER_TIMEOUT 750 -#define TAP_TIMEOUT 50 -#define LONG_PRESS_MULTIPLIER 3 -#define DYNAMIC_MACRO_MAX_LENGTH 20 -#define COMMAND_MAX_LENGTH 5 -#define LEADER_MAX_LENGTH 5 -#define HASH_TYPE uint32_t -#define NUMBER_OF_KEYS 20 -#define DEFAULT_PSEUDOLAYER QWERTY - -#define H_TOP1 ((HASH_TYPE) 1 << 0) -#define H_TOP2 ((HASH_TYPE) 1 << 1) -#define H_TOP3 ((HASH_TYPE) 1 << 2) -#define H_TOP4 ((HASH_TYPE) 1 << 3) -#define H_TOP5 ((HASH_TYPE) 1 << 4) -#define H_TOP6 ((HASH_TYPE) 1 << 5) -#define H_TOP7 ((HASH_TYPE) 1 << 6) -#define H_TOP8 ((HASH_TYPE) 1 << 7) -#define H_TOP9 ((HASH_TYPE) 1 << 8) -#define H_TOP0 ((HASH_TYPE) 1 << 9) -#define H_BOT1 ((HASH_TYPE) 1 << 10) -#define H_BOT2 ((HASH_TYPE) 1 << 11) -#define H_BOT3 ((HASH_TYPE) 1 << 12) -#define H_BOT4 ((HASH_TYPE) 1 << 13) -#define H_BOT5 ((HASH_TYPE) 1 << 14) -#define H_BOT6 ((HASH_TYPE) 1 << 15) -#define H_BOT7 ((HASH_TYPE) 1 << 16) -#define H_BOT8 ((HASH_TYPE) 1 << 17) -#define H_BOT9 ((HASH_TYPE) 1 << 18) -#define H_BOT0 ((HASH_TYPE) 1 << 19) - -enum internal_keycodes { - TOP1 = SAFE_RANGE, - TOP2, TOP3, TOP4, TOP5, TOP6, TOP7, TOP8, TOP9, TOP0, BOT1, BOT2, BOT3, BOT4, BOT5, BOT6, BOT7, BOT8, BOT9, BOT0, - FIRST_INTERNAL_KEYCODE = TOP1, - LAST_INTERNAL_KEYCODE = BOT0 -}; - -enum pseudolayers { - ALWAYS_ON, QWERTY, NUM, MOV, MOUSE, ASETNIOP, ASETNIOP_123, ASETNIOP_FN -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_butter(TOP1, TOP2, TOP3, TOP4, TOP5, TOP6, TOP7, TOP8, TOP9, TOP0, BOT1, BOT2, BOT3, BOT4, BOT5, BOT6, BOT7, BOT8, BOT9, BOT0), -}; -size_t keymapsCount = 1; - -uint8_t keycodes_buffer_array[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -uint8_t command_buffer[] = { - 0, 0, 0, 0, 0 -}; - -uint16_t leader_buffer[] = { - 0, 0, 0, 0, 0 -}; - -uint8_t dynamic_macro_buffer[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -enum chord_states { - IDLE, - READY, - ACTIVATED, - DEACTIVATED, - PRESS_FROM_ACTIVE, - FINISHED_FROM_ACTIVE, - IDLE_IN_DANCE, - READY_IN_DANCE, - FINISHED, - LOCKED, - READY_LOCKED, - RESTART, - IN_ONE_SHOT -}; - -struct Chord { - uint32_t keycodes_hash; - uint8_t pseudolayer; - uint8_t* state; - uint8_t* counter; - uint16_t value1; - uint8_t value2; - void (*function) (const struct Chord*); -}; - -uint8_t current_pseudolayer = DEFAULT_PSEUDOLAYER; -bool lock_next = false; -uint16_t chord_timer = 0; -uint16_t dance_timer = 0; -bool autoshift_mode = true; -uint8_t keycode_index = 0; -uint8_t command_mode = 0; -uint8_t command_ind = 0; -bool in_leader_mode = false; -uint8_t leader_ind = 0; -uint16_t leader_timer = 0; -uint8_t dynamic_macro_mode = false; -uint8_t dynamic_macro_ind = 0; -bool a_key_went_through = false; -struct Chord* last_chord = NULL; - -bool handle_US_ANSI_shifted_keys(int16_t keycode, bool in) { - bool is_US_ANSI_shifted = true; - - int16_t regular_keycode = KC_NO; - switch (keycode) { - case KC_TILDE: - regular_keycode = KC_GRAVE; - break; - case KC_EXCLAIM: - regular_keycode = KC_1; - break; - case KC_AT: - regular_keycode = KC_2; - break; - case KC_HASH: - regular_keycode = KC_3; - break; - case KC_DOLLAR: - regular_keycode = KC_4; - break; - case KC_PERCENT: - regular_keycode = KC_5; - break; - case KC_CIRCUMFLEX: - regular_keycode = KC_6; - break; - case KC_AMPERSAND: - regular_keycode = KC_7; - break; - case KC_ASTERISK: - regular_keycode = KC_8; - break; - case KC_LEFT_PAREN: - regular_keycode = KC_9; - break; - case KC_RIGHT_PAREN: - regular_keycode = KC_0; - break; - case KC_UNDERSCORE: - regular_keycode = KC_MINUS; - break; - case KC_PLUS: - regular_keycode = KC_EQUAL; - break; - case KC_LEFT_CURLY_BRACE: - regular_keycode = KC_LEFT_BRACKET; - break; - case KC_RIGHT_CURLY_BRACE: - regular_keycode = KC_RIGHT_BRACKET; - break; - case KC_PIPE: - regular_keycode = KC_BACKSLASH; - break; - case KC_COLON: - regular_keycode = KC_SEMICOLON; - break; - case KC_DOUBLE_QUOTE: - regular_keycode = KC_QUOTE; - break; - case KC_LEFT_ANGLE_BRACKET: - regular_keycode = KC_COMMA; - break; - case KC_RIGHT_ANGLE_BRACKET: - regular_keycode = KC_DOT; - break; - case KC_QUESTION: - regular_keycode = KC_SLASH; - break; - default: - is_US_ANSI_shifted = false; - } - if (is_US_ANSI_shifted) { - if (in) { - register_code(KC_LSFT); - register_code(regular_keycode); - } else { - unregister_code(regular_keycode); - unregister_code(KC_LSFT); - } - } - return is_US_ANSI_shifted; -} - -void key_in(int16_t keycode) { - if (command_mode == 1 && command_ind < COMMAND_MAX_LENGTH) { - command_buffer[command_ind] = keycode; - command_ind++; - a_key_went_through = true; - } else if (in_leader_mode && leader_ind < LEADER_MAX_LENGTH) { - leader_buffer[leader_ind] = keycode; - leader_ind++; - a_key_went_through = true; - } else if (dynamic_macro_mode && dynamic_macro_ind < DYNAMIC_MACRO_MAX_LENGTH) { - dynamic_macro_buffer[dynamic_macro_ind] = keycode; - dynamic_macro_ind++; - a_key_went_through = true; - } else { - if (!handle_US_ANSI_shifted_keys(keycode, true)) { - register_code(keycode); - } - send_keyboard_report(); - a_key_went_through = true; - } -} - -void key_out(int16_t keycode) { - if (command_mode == 0) { - if (!handle_US_ANSI_shifted_keys(keycode, false)) { - if (command_mode == 0 && in_leader_mode == false && dynamic_macro_mode == false) { - unregister_code(keycode); - } - } - send_keyboard_report(); - } -} - -void tap_key(int16_t keycode) { - key_in(keycode); - wait_ms(TAP_TIMEOUT); - key_out(keycode); -} -void single_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - key_in(self->value1); - break; - case DEACTIVATED: - key_out(self->value1); - *self->state = IDLE; - break; - case RESTART: - key_out(self->value1); - break; - default: - break; - } -} - -void key_layer_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value2; - a_key_went_through = false; - break; - case DEACTIVATED: - case RESTART: - if (!a_key_went_through) { - tap_key(self->value1); - } - current_pseudolayer = self->pseudolayer; - *self->state = IDLE; // does not have effect if the state was RESTART - break; - default: - break; - } -} - -void key_mod_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - key_in(self->value2); - a_key_went_through = false; - break; - case DEACTIVATED: - case RESTART: - key_out(self->value2); - if (!a_key_went_through) { - tap_key(self->value1); - } - *self->state = IDLE; // does not have effect if the state was RESTART - break; - default: - break; - } -} - -void key_key_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - tap_key(self->value1); - *self->state = IDLE; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - key_in(self->value2); - break; - case RESTART: - key_out(self->value2); - break; - default: - break; - } -} - -void autoshift_dance_impl(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - *self->counter = 0; - break; - case DEACTIVATED: - case RESTART: - tap_key(self->value1); - *self->state = IDLE; - break; - case FINISHED_FROM_ACTIVE: - if (*self->counter == (LONG_PRESS_MULTIPLIER - 2)) { - key_in(KC_LSFT); - tap_key(self->value1); - key_out(KC_LSFT); - *self->state = IDLE; - // the skip to IDLE is usually just a lag optimization, - // in this case it has a logic function, on a short - // press (still longer than a tap) the key does not get shifted - } else { - *self->counter += 1; - *self->state = PRESS_FROM_ACTIVE; - dance_timer = timer_read(); - } - break; - default: - break; - } -} - -void autoshift_dance(const struct Chord* self) { - if (autoshift_mode) { - autoshift_dance_impl(self); - } else { - single_dance(self); - } -} - -void autoshift_toggle(const struct Chord* self){ - if (*self->state == ACTIVATED) { - autoshift_mode = !autoshift_mode; - *self->state = IDLE; - } -} - -void temp_pseudolayer(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value1; - break; - case DEACTIVATED: - current_pseudolayer = self->pseudolayer; - *self->state = IDLE; - break; - case RESTART: - current_pseudolayer = self->pseudolayer; - break; - default: - break; - } -} - -void perm_pseudolayer(const struct Chord* self) { - if (*self->state == ACTIVATED) { - current_pseudolayer = self->value1; - *self->state = IDLE; - } -} - -void switch_layer(const struct Chord* self) { - if (*self->state == ACTIVATED) { - layer_move(self->value1); - *self->state = IDLE; - } -} - -void lock(const struct Chord* self) { - if (*self->state == ACTIVATED) { - lock_next = true; - *self->state = IDLE; - } -} - -void one_shot_key(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - key_in(self->value1); - *self->state = IN_ONE_SHOT; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - key_in(self->value1); - a_key_went_through = false; - break; - case RESTART: - if (a_key_went_through) { - key_out(self->value1); - } else { - *self->state = IN_ONE_SHOT; - } - default: - break; - } -} - -void one_shot_layer(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - current_pseudolayer = self->value1; - *self->state = IN_ONE_SHOT; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - current_pseudolayer = self->value1; - a_key_went_through = false; - break; - case RESTART: - if (a_key_went_through) { - current_pseudolayer = self->pseudolayer; - } else { - *self->state = IN_ONE_SHOT; - } - default: - break; - } -} - -void command(const struct Chord* self) { - if (*self->state == ACTIVATED) { - command_mode++; - *self->state = IDLE; - } -} - -bool identical(uint16_t* buffer1, uint16_t* buffer2) { - bool same = true; - for (int i = 0; i < LEADER_MAX_LENGTH; i++) { - same = same && (buffer1[i] == buffer2[i]); - } - return same; -} - -void leader(const struct Chord* self) { - if (*self->state == ACTIVATED) { - in_leader_mode = true; - *self->state = IDLE; - } -} - -void dynamic_macro_record(const struct Chord* self) { - if (*self->state == ACTIVATED) { - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - dynamic_macro_buffer[i] = 0; - } - dynamic_macro_mode = true; - *self->state = IDLE; - } -} - -void dynamic_macro_next(const struct Chord* self) { - if (*self->state == ACTIVATED) { - if (dynamic_macro_mode && dynamic_macro_ind < DYNAMIC_MACRO_MAX_LENGTH) { - dynamic_macro_buffer[dynamic_macro_ind] = 0; - dynamic_macro_ind++; - } - *self->state = IDLE; - } -} - -void dynamic_macro_end(const struct Chord* self) { - if (*self->state == ACTIVATED) { - if (dynamic_macro_mode) { - dynamic_macro_mode = false; - } - *self->state = IDLE; - } -} - -void dynamic_macro_play(const struct Chord* self) { - if (*self->state == ACTIVATED) { - int ind_start = 0; - while (ind_start < DYNAMIC_MACRO_MAX_LENGTH) { - for (int i = ind_start; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - if (dynamic_macro_buffer[i] == 0) { - break; - } - register_code(dynamic_macro_buffer[i]); - } - send_keyboard_report(); - wait_ms(TAP_TIMEOUT); - for (int i = ind_start; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - if (dynamic_macro_buffer[i] == 0) { - ind_start = i + 1; - break; - } - unregister_code(dynamic_macro_buffer[i]); - } - send_keyboard_report(); - } - *self->state = IDLE; - } -} - -void clear(const struct Chord* self); - -void reset_keyboard_kb(void){ -#ifdef WATCHDOG_ENABLE - MCUSR = 0; - wdt_disable(); - wdt_reset(); -#endif - reset_keyboard(); -} - -void reset(const struct Chord* self) { - if (*self->state == ACTIVATED) { - reset_keyboard_kb(); - } -} - -uint8_t state_0 = IDLE; -const struct Chord chord_0 PROGMEM = {H_TOP1 + H_TOP2 + H_BOT1 + H_BOT2, ALWAYS_ON, &state_0, NULL, 0, 0, lock}; -uint8_t state_1 = IDLE; -const struct Chord chord_1 PROGMEM = {H_TOP2 + H_TOP3 + H_BOT2 + H_BOT3, ALWAYS_ON, &state_1, NULL, 0, 0, autoshift_toggle}; -uint8_t state_2 = IDLE; -const struct Chord chord_2 PROGMEM = {H_TOP5 + H_TOP6 + H_BOT5 + H_BOT6, ALWAYS_ON, &state_2, NULL, 0, 0, command}; -uint8_t state_3 = IDLE; -const struct Chord chord_3 PROGMEM = {H_TOP1 + H_TOP2 + H_TOP9 + H_TOP0 + H_BOT1 + H_BOT2 + H_BOT9 + H_BOT0, ALWAYS_ON, &state_3, NULL, 0, 0, clear}; -uint8_t state_4 = IDLE; -uint8_t counter_4 = 0; -const struct Chord chord_4 PROGMEM = {H_TOP1, QWERTY, &state_4, &counter_4, KC_Q, 0, autoshift_dance}; -uint8_t state_5 = IDLE; -uint8_t counter_5 = 0; -const struct Chord chord_5 PROGMEM = {H_TOP2, QWERTY, &state_5, &counter_5, KC_W, 0, autoshift_dance}; -uint8_t state_6 = IDLE; -uint8_t counter_6 = 0; -const struct Chord chord_6 PROGMEM = {H_TOP3, QWERTY, &state_6, &counter_6, KC_E, 0, autoshift_dance}; -uint8_t state_7 = IDLE; -uint8_t counter_7 = 0; -const struct Chord chord_7 PROGMEM = {H_TOP4, QWERTY, &state_7, &counter_7, KC_R, 0, autoshift_dance}; -uint8_t state_8 = IDLE; -uint8_t counter_8 = 0; -const struct Chord chord_8 PROGMEM = {H_TOP5, QWERTY, &state_8, &counter_8, KC_T, 0, autoshift_dance}; -uint8_t state_9 = IDLE; -uint8_t counter_9 = 0; -const struct Chord chord_9 PROGMEM = {H_TOP6, QWERTY, &state_9, &counter_9, KC_Y, 0, autoshift_dance}; -uint8_t state_10 = IDLE; -uint8_t counter_10 = 0; -const struct Chord chord_10 PROGMEM = {H_TOP7, QWERTY, &state_10, &counter_10, KC_U, 0, autoshift_dance}; -uint8_t state_11 = IDLE; -uint8_t counter_11 = 0; -const struct Chord chord_11 PROGMEM = {H_TOP8, QWERTY, &state_11, &counter_11, KC_I, 0, autoshift_dance}; -uint8_t state_12 = IDLE; -uint8_t counter_12 = 0; -const struct Chord chord_12 PROGMEM = {H_TOP9, QWERTY, &state_12, &counter_12, KC_O, 0, autoshift_dance}; -uint8_t state_13 = IDLE; -uint8_t counter_13 = 0; -const struct Chord chord_13 PROGMEM = {H_TOP0, QWERTY, &state_13, &counter_13, KC_P, 0, autoshift_dance}; -uint8_t state_14 = IDLE; -uint8_t counter_14 = 0; -const struct Chord chord_14 PROGMEM = {H_TOP1 + H_BOT1, QWERTY, &state_14, &counter_14, KC_A, 0, autoshift_dance}; -uint8_t state_15 = IDLE; -uint8_t counter_15 = 0; -const struct Chord chord_15 PROGMEM = {H_TOP2 + H_BOT2, QWERTY, &state_15, &counter_15, KC_S, 0, autoshift_dance}; -uint8_t state_16 = IDLE; -uint8_t counter_16 = 0; -const struct Chord chord_16 PROGMEM = {H_TOP3 + H_BOT3, QWERTY, &state_16, &counter_16, KC_D, 0, autoshift_dance}; -uint8_t state_17 = IDLE; -uint8_t counter_17 = 0; -const struct Chord chord_17 PROGMEM = {H_TOP4 + H_BOT4, QWERTY, &state_17, &counter_17, KC_F, 0, autoshift_dance}; -uint8_t state_18 = IDLE; -uint8_t counter_18 = 0; -const struct Chord chord_18 PROGMEM = {H_TOP5 + H_BOT5, QWERTY, &state_18, &counter_18, KC_G, 0, autoshift_dance}; -uint8_t state_19 = IDLE; -uint8_t counter_19 = 0; -const struct Chord chord_19 PROGMEM = {H_TOP6 + H_BOT6, QWERTY, &state_19, &counter_19, KC_H, 0, autoshift_dance}; -uint8_t state_20 = IDLE; -uint8_t counter_20 = 0; -const struct Chord chord_20 PROGMEM = {H_TOP7 + H_BOT7, QWERTY, &state_20, &counter_20, KC_J, 0, autoshift_dance}; -uint8_t state_21 = IDLE; -uint8_t counter_21 = 0; -const struct Chord chord_21 PROGMEM = {H_TOP8 + H_BOT8, QWERTY, &state_21, &counter_21, KC_K, 0, autoshift_dance}; -uint8_t state_22 = IDLE; -uint8_t counter_22 = 0; -const struct Chord chord_22 PROGMEM = {H_TOP9 + H_BOT9, QWERTY, &state_22, &counter_22, KC_L, 0, autoshift_dance}; -uint8_t state_23 = IDLE; -uint8_t counter_23 = 0; -const struct Chord chord_23 PROGMEM = {H_TOP0 + H_BOT0, QWERTY, &state_23, &counter_23, KC_SEMICOLON, 0, autoshift_dance}; -uint8_t state_24 = IDLE; -uint8_t counter_24 = 0; -const struct Chord chord_24 PROGMEM = {H_BOT1, QWERTY, &state_24, &counter_24, KC_Z, 0, autoshift_dance}; -uint8_t state_25 = IDLE; -uint8_t counter_25 = 0; -const struct Chord chord_25 PROGMEM = {H_BOT2, QWERTY, &state_25, &counter_25, KC_X, 0, autoshift_dance}; -uint8_t state_26 = IDLE; -uint8_t counter_26 = 0; -const struct Chord chord_26 PROGMEM = {H_BOT3, QWERTY, &state_26, &counter_26, KC_C, 0, autoshift_dance}; -uint8_t state_27 = IDLE; -uint8_t counter_27 = 0; -const struct Chord chord_27 PROGMEM = {H_BOT4, QWERTY, &state_27, &counter_27, KC_V, 0, autoshift_dance}; -uint8_t state_28 = IDLE; -uint8_t counter_28 = 0; -const struct Chord chord_28 PROGMEM = {H_BOT5, QWERTY, &state_28, &counter_28, KC_B, 0, autoshift_dance}; -uint8_t state_29 = IDLE; -uint8_t counter_29 = 0; -const struct Chord chord_29 PROGMEM = {H_BOT6, QWERTY, &state_29, &counter_29, KC_N, 0, autoshift_dance}; -uint8_t state_30 = IDLE; -uint8_t counter_30 = 0; -const struct Chord chord_30 PROGMEM = {H_BOT7, QWERTY, &state_30, &counter_30, KC_M, 0, autoshift_dance}; -uint8_t state_31 = IDLE; -uint8_t counter_31 = 0; -const struct Chord chord_31 PROGMEM = {H_BOT8, QWERTY, &state_31, &counter_31, KC_COMMA, 0, autoshift_dance}; -uint8_t state_32 = IDLE; -uint8_t counter_32 = 0; -const struct Chord chord_32 PROGMEM = {H_BOT9, QWERTY, &state_32, &counter_32, KC_DOT, 0, autoshift_dance}; -uint8_t state_33 = IDLE; -uint8_t counter_33 = 0; -const struct Chord chord_33 PROGMEM = {H_BOT0, QWERTY, &state_33, &counter_33, KC_SLASH, 0, autoshift_dance}; -uint8_t state_34 = IDLE; -const struct Chord chord_34 PROGMEM = {H_TOP1 + H_TOP2, QWERTY, &state_34, NULL, KC_ESC, 0, single_dance}; -uint8_t state_35 = IDLE; -const struct Chord chord_35 PROGMEM = {H_TOP2 + H_TOP3, QWERTY, &state_35, NULL, MOV, 0, temp_pseudolayer}; -uint8_t state_36 = IDLE; -const struct Chord chord_36 PROGMEM = {H_TOP3 + H_TOP4, QWERTY, &state_36, NULL, KC_TAB, 0, single_dance}; -uint8_t state_37 = IDLE; -const struct Chord chord_37 PROGMEM = {H_TOP5 + H_TOP6, QWERTY, &state_37, NULL, KC_RGUI, 0, one_shot_key}; -uint8_t state_38 = IDLE; -const struct Chord chord_38 PROGMEM = {H_TOP7 + H_TOP8, QWERTY, &state_38, NULL, KC_INS, 0, single_dance}; -uint8_t state_39 = IDLE; -const struct Chord chord_39 PROGMEM = {H_TOP8 + H_TOP9, QWERTY, &state_39, NULL, KC_DEL, 0, single_dance}; -uint8_t state_40 = IDLE; -const struct Chord chord_40 PROGMEM = {H_TOP9 + H_TOP0, QWERTY, &state_40, NULL, KC_BSPC, 0, single_dance}; -uint8_t state_41 = IDLE; -const struct Chord chord_41 PROGMEM = {H_TOP9 + H_TOP0 + H_BOT9 + H_BOT0, QWERTY, &state_41, NULL, KC_ENTER, 0, single_dance}; -uint8_t state_42 = IDLE; -const struct Chord chord_42 PROGMEM = {H_BOT1 + H_BOT2, QWERTY, &state_42, NULL, KC_LSFT, 0, one_shot_key}; -uint8_t state_43 = IDLE; -const struct Chord chord_43 PROGMEM = {H_BOT2 + H_BOT3, QWERTY, &state_43, NULL, KC_LCTL, 0, one_shot_key}; -uint8_t state_44 = IDLE; -const struct Chord chord_44 PROGMEM = {H_BOT3 + H_BOT4, QWERTY, &state_44, NULL, KC_LALT, 0, one_shot_key}; -uint8_t state_45 = IDLE; -const struct Chord chord_45 PROGMEM = {H_BOT4 + H_BOT5, QWERTY, &state_45, NULL, NUM, 0, one_shot_layer}; -uint8_t state_46 = IDLE; -const struct Chord chord_46 PROGMEM = {H_BOT5 + H_BOT6, QWERTY, &state_46, NULL, KC_LGUI, 0, one_shot_key}; -uint8_t state_47 = IDLE; -const struct Chord chord_47 PROGMEM = {H_BOT6 + H_BOT7, QWERTY, &state_47, NULL, NUM, 0, one_shot_layer}; -uint8_t state_48 = IDLE; -const struct Chord chord_48 PROGMEM = {H_BOT7 + H_BOT8, QWERTY, &state_48, NULL, KC_RALT, 0, one_shot_key}; -uint8_t state_49 = IDLE; -const struct Chord chord_49 PROGMEM = {H_BOT8 + H_BOT9, QWERTY, &state_49, NULL, KC_RCTL, 0, one_shot_key}; -uint8_t state_50 = IDLE; -const struct Chord chord_50 PROGMEM = {H_BOT9 + H_BOT0, QWERTY, &state_50, NULL, KC_RSFT, 0, one_shot_key}; -uint8_t state_51 = IDLE; -const struct Chord chord_51 PROGMEM = {H_BOT1 + H_BOT0, QWERTY, &state_51, NULL, KC_SPACE, 0, single_dance}; -uint8_t state_52 = IDLE; -const struct Chord chord_52 PROGMEM = {H_TOP1 + H_TOP2 + H_TOP3 + H_TOP4, QWERTY, &state_52, NULL, MOUSE, 0, temp_pseudolayer}; -uint8_t state_53 = IDLE; -const struct Chord chord_53 PROGMEM = {H_TOP1 + H_TOP2 + H_TOP3 + H_TOP4, QWERTY, &state_53, NULL, ASETNIOP, 0, perm_pseudolayer}; -uint8_t state_54 = IDLE; -uint8_t counter_54 = 0; -const struct Chord chord_54 PROGMEM = {H_TOP1, NUM, &state_54, &counter_54, KC_1, 0, autoshift_dance}; -uint8_t state_55 = IDLE; -uint8_t counter_55 = 0; -const struct Chord chord_55 PROGMEM = {H_TOP2, NUM, &state_55, &counter_55, KC_2, 0, autoshift_dance}; -uint8_t state_56 = IDLE; -uint8_t counter_56 = 0; -const struct Chord chord_56 PROGMEM = {H_TOP3, NUM, &state_56, &counter_56, KC_3, 0, autoshift_dance}; -uint8_t state_57 = IDLE; -uint8_t counter_57 = 0; -const struct Chord chord_57 PROGMEM = {H_TOP4, NUM, &state_57, &counter_57, KC_4, 0, autoshift_dance}; -uint8_t state_58 = IDLE; -uint8_t counter_58 = 0; -const struct Chord chord_58 PROGMEM = {H_TOP5, NUM, &state_58, &counter_58, KC_5, 0, autoshift_dance}; -uint8_t state_59 = IDLE; -uint8_t counter_59 = 0; -const struct Chord chord_59 PROGMEM = {H_TOP6, NUM, &state_59, &counter_59, KC_6, 0, autoshift_dance}; -uint8_t state_60 = IDLE; -uint8_t counter_60 = 0; -const struct Chord chord_60 PROGMEM = {H_TOP7, NUM, &state_60, &counter_60, KC_7, 0, autoshift_dance}; -uint8_t state_61 = IDLE; -uint8_t counter_61 = 0; -const struct Chord chord_61 PROGMEM = {H_TOP8, NUM, &state_61, &counter_61, KC_8, 0, autoshift_dance}; -uint8_t state_62 = IDLE; -uint8_t counter_62 = 0; -const struct Chord chord_62 PROGMEM = {H_TOP9, NUM, &state_62, &counter_62, KC_9, 0, autoshift_dance}; -uint8_t state_63 = IDLE; -uint8_t counter_63 = 0; -const struct Chord chord_63 PROGMEM = {H_TOP0, NUM, &state_63, &counter_63, KC_0, 0, autoshift_dance}; -uint8_t state_64 = IDLE; -const struct Chord chord_64 PROGMEM = {H_TOP1 + H_BOT1, NUM, &state_64, NULL, KC_F1, 0, single_dance}; -uint8_t state_65 = IDLE; -const struct Chord chord_65 PROGMEM = {H_TOP2 + H_BOT2, NUM, &state_65, NULL, KC_F2, 0, single_dance}; -uint8_t state_66 = IDLE; -const struct Chord chord_66 PROGMEM = {H_TOP3 + H_BOT3, NUM, &state_66, NULL, KC_F3, 0, single_dance}; -uint8_t state_67 = IDLE; -const struct Chord chord_67 PROGMEM = {H_TOP4 + H_BOT4, NUM, &state_67, NULL, KC_F4, 0, single_dance}; -uint8_t state_68 = IDLE; -const struct Chord chord_68 PROGMEM = {H_TOP5 + H_BOT5, NUM, &state_68, NULL, KC_F5, 0, single_dance}; -uint8_t state_69 = IDLE; -const struct Chord chord_69 PROGMEM = {H_TOP6 + H_BOT6, NUM, &state_69, NULL, KC_F6, 0, single_dance}; -uint8_t state_70 = IDLE; -const struct Chord chord_70 PROGMEM = {H_TOP7 + H_BOT7, NUM, &state_70, NULL, KC_F7, 0, single_dance}; -uint8_t state_71 = IDLE; -const struct Chord chord_71 PROGMEM = {H_TOP8 + H_BOT8, NUM, &state_71, NULL, KC_F8, 0, single_dance}; -uint8_t state_72 = IDLE; -const struct Chord chord_72 PROGMEM = {H_TOP9 + H_BOT9, NUM, &state_72, NULL, KC_F9, 0, single_dance}; -uint8_t state_73 = IDLE; -const struct Chord chord_73 PROGMEM = {H_TOP0 + H_BOT0, NUM, &state_73, NULL, KC_F10, 0, single_dance}; -uint8_t state_74 = IDLE; -uint8_t counter_74 = 0; -const struct Chord chord_74 PROGMEM = {H_BOT1, NUM, &state_74, &counter_74, KC_GRAVE, 0, autoshift_dance}; -uint8_t state_75 = IDLE; -uint8_t counter_75 = 0; -const struct Chord chord_75 PROGMEM = {H_BOT2, NUM, &state_75, &counter_75, KC_MINUS, 0, autoshift_dance}; -uint8_t state_76 = IDLE; -uint8_t counter_76 = 0; -const struct Chord chord_76 PROGMEM = {H_BOT3, NUM, &state_76, &counter_76, KC_EQUAL, 0, autoshift_dance}; -uint8_t state_77 = IDLE; -uint8_t counter_77 = 0; -const struct Chord chord_77 PROGMEM = {H_BOT4, NUM, &state_77, &counter_77, KC_LEFT_BRACKET, 0, autoshift_dance}; -uint8_t state_78 = IDLE; -uint8_t counter_78 = 0; -const struct Chord chord_78 PROGMEM = {H_BOT5, NUM, &state_78, &counter_78, KC_RIGHT_BRACKET, 0, autoshift_dance}; -uint8_t state_79 = IDLE; -uint8_t counter_79 = 0; -const struct Chord chord_79 PROGMEM = {H_BOT6, NUM, &state_79, &counter_79, KC_BACKSLASH, 0, autoshift_dance}; -uint8_t state_80 = IDLE; -uint8_t counter_80 = 0; -const struct Chord chord_80 PROGMEM = {H_BOT7, NUM, &state_80, &counter_80, KC_QUOTE, 0, autoshift_dance}; -uint8_t state_81 = IDLE; -const struct Chord chord_81 PROGMEM = {H_BOT9, NUM, &state_81, NULL, KC_F11, 0, single_dance}; -uint8_t state_82 = IDLE; -const struct Chord chord_82 PROGMEM = {H_BOT0, NUM, &state_82, NULL, KC_F12, 0, single_dance}; -uint8_t state_83 = IDLE; -const struct Chord chord_83 PROGMEM = {H_TOP1 + H_TOP2, NUM, &state_83, NULL, KC_ESC, 0, single_dance}; -uint8_t state_84 = IDLE; -const struct Chord chord_84 PROGMEM = {H_TOP3 + H_TOP4, NUM, &state_84, NULL, KC_TAB, 0, single_dance}; -uint8_t state_85 = IDLE; -const struct Chord chord_85 PROGMEM = {H_TOP5 + H_TOP6, NUM, &state_85, NULL, KC_RGUI, 0, one_shot_key}; -uint8_t state_86 = IDLE; -const struct Chord chord_86 PROGMEM = {H_TOP7 + H_TOP8, NUM, &state_86, NULL, KC_INS, 0, single_dance}; -uint8_t state_87 = IDLE; -const struct Chord chord_87 PROGMEM = {H_TOP8 + H_TOP9, NUM, &state_87, NULL, KC_DEL, 0, single_dance}; -uint8_t state_88 = IDLE; -const struct Chord chord_88 PROGMEM = {H_TOP9 + H_TOP0, NUM, &state_88, NULL, KC_BSPC, 0, single_dance}; -uint8_t state_89 = IDLE; -const struct Chord chord_89 PROGMEM = {H_TOP9 + H_TOP0 + H_BOT9 + H_BOT0, NUM, &state_89, NULL, KC_ENTER, 0, single_dance}; -uint8_t state_90 = IDLE; -const struct Chord chord_90 PROGMEM = {H_BOT1 + H_BOT2, NUM, &state_90, NULL, KC_LSFT, 0, one_shot_key}; -uint8_t state_91 = IDLE; -const struct Chord chord_91 PROGMEM = {H_BOT2 + H_BOT3, NUM, &state_91, NULL, KC_LCTL, 0, one_shot_key}; -uint8_t state_92 = IDLE; -const struct Chord chord_92 PROGMEM = {H_BOT3 + H_BOT4, NUM, &state_92, NULL, KC_LALT, 0, one_shot_key}; -uint8_t state_93 = IDLE; -const struct Chord chord_93 PROGMEM = {H_BOT5 + H_BOT6, NUM, &state_93, NULL, KC_LGUI, 0, one_shot_key}; -uint8_t state_94 = IDLE; -const struct Chord chord_94 PROGMEM = {H_BOT7 + H_BOT8, NUM, &state_94, NULL, KC_RALT, 0, one_shot_key}; -uint8_t state_95 = IDLE; -const struct Chord chord_95 PROGMEM = {H_BOT8 + H_BOT9, NUM, &state_95, NULL, KC_RCTL, 0, one_shot_key}; -uint8_t state_96 = IDLE; -const struct Chord chord_96 PROGMEM = {H_BOT9 + H_BOT0, NUM, &state_96, NULL, KC_RSFT, 0, one_shot_key}; -uint8_t state_97 = IDLE; -const struct Chord chord_97 PROGMEM = {H_BOT1 + H_BOT0, NUM, &state_97, NULL, KC_SPACE, 0, single_dance}; -uint8_t state_98 = IDLE; -const struct Chord chord_98 PROGMEM = {H_TOP7, MOV, &state_98, NULL, KC_HOME, 0, single_dance}; -uint8_t state_99 = IDLE; -const struct Chord chord_99 PROGMEM = {H_TOP8, MOV, &state_99, NULL, KC_UP, 0, single_dance}; -uint8_t state_100 = IDLE; -const struct Chord chord_100 PROGMEM = {H_TOP9, MOV, &state_100, NULL, KC_END, 0, single_dance}; -uint8_t state_101 = IDLE; -const struct Chord chord_101 PROGMEM = {H_TOP0, MOV, &state_101, NULL, KC_PGUP, 0, single_dance}; -uint8_t state_102 = IDLE; -const struct Chord chord_102 PROGMEM = {H_BOT3, MOV, &state_102, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_103 = IDLE; -const struct Chord chord_103 PROGMEM = {H_BOT4, MOV, &state_103, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_104 = IDLE; -const struct Chord chord_104 PROGMEM = {H_BOT5, MOV, &state_104, NULL, KC_LALT, 0, single_dance}; -uint8_t state_105 = IDLE; -const struct Chord chord_105 PROGMEM = {H_BOT6, MOV, &state_105, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_106 = IDLE; -const struct Chord chord_106 PROGMEM = {H_BOT7, MOV, &state_106, NULL, KC_LEFT, 0, single_dance}; -uint8_t state_107 = IDLE; -const struct Chord chord_107 PROGMEM = {H_BOT8, MOV, &state_107, NULL, KC_DOWN, 0, single_dance}; -uint8_t state_108 = IDLE; -const struct Chord chord_108 PROGMEM = {H_BOT9, MOV, &state_108, NULL, KC_RIGHT, 0, single_dance}; -uint8_t state_109 = IDLE; -const struct Chord chord_109 PROGMEM = {H_BOT0, MOV, &state_109, NULL, KC_PGDN, 0, single_dance}; -uint8_t state_110 = IDLE; -const struct Chord chord_110 PROGMEM = {H_TOP7, MOUSE, &state_110, NULL, KC_BTN1, 0, single_dance}; -uint8_t state_111 = IDLE; -const struct Chord chord_111 PROGMEM = {H_TOP8, MOUSE, &state_111, NULL, KC_MS_U, 0, single_dance}; -uint8_t state_112 = IDLE; -const struct Chord chord_112 PROGMEM = {H_TOP9, MOUSE, &state_112, NULL, KC_BTN2, 0, single_dance}; -uint8_t state_113 = IDLE; -const struct Chord chord_113 PROGMEM = {H_TOP0, MOUSE, &state_113, NULL, KC_WH_U, 0, single_dance}; -uint8_t state_114 = IDLE; -const struct Chord chord_114 PROGMEM = {H_BOT3, MOUSE, &state_114, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_115 = IDLE; -const struct Chord chord_115 PROGMEM = {H_BOT4, MOUSE, &state_115, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_116 = IDLE; -const struct Chord chord_116 PROGMEM = {H_BOT5, MOUSE, &state_116, NULL, KC_LALT, 0, single_dance}; -uint8_t state_117 = IDLE; -const struct Chord chord_117 PROGMEM = {H_BOT6, MOUSE, &state_117, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_118 = IDLE; -const struct Chord chord_118 PROGMEM = {H_BOT7, MOUSE, &state_118, NULL, KC_MS_L, 0, single_dance}; -uint8_t state_119 = IDLE; -const struct Chord chord_119 PROGMEM = {H_BOT8, MOUSE, &state_119, NULL, KC_MS_D, 0, single_dance}; -uint8_t state_120 = IDLE; -const struct Chord chord_120 PROGMEM = {H_BOT9, MOUSE, &state_120, NULL, KC_MS_R, 0, single_dance}; -uint8_t state_121 = IDLE; -const struct Chord chord_121 PROGMEM = {H_BOT0, MOUSE, &state_121, NULL, KC_WH_D, 0, single_dance}; -uint8_t state_122 = IDLE; -const struct Chord chord_122 PROGMEM = {H_TOP1, ASETNIOP, &state_122, NULL, KC_A, 0, single_dance}; -uint8_t state_123 = IDLE; -const struct Chord chord_123 PROGMEM = {H_TOP2, ASETNIOP, &state_123, NULL, KC_S, 0, single_dance}; -uint8_t state_124 = IDLE; -const struct Chord chord_124 PROGMEM = {H_TOP3, ASETNIOP, &state_124, NULL, KC_E, 0, single_dance}; -uint8_t state_125 = IDLE; -const struct Chord chord_125 PROGMEM = {H_TOP4, ASETNIOP, &state_125, NULL, KC_T, 0, single_dance}; -uint8_t state_126 = IDLE; -const struct Chord chord_126 PROGMEM = {H_TOP7, ASETNIOP, &state_126, NULL, KC_N, 0, single_dance}; -uint8_t state_127 = IDLE; -const struct Chord chord_127 PROGMEM = {H_TOP8, ASETNIOP, &state_127, NULL, KC_I, 0, single_dance}; -uint8_t state_128 = IDLE; -const struct Chord chord_128 PROGMEM = {H_TOP9, ASETNIOP, &state_128, NULL, KC_O, 0, single_dance}; -uint8_t state_129 = IDLE; -const struct Chord chord_129 PROGMEM = {H_TOP0, ASETNIOP, &state_129, NULL, KC_P, 0, single_dance}; -uint8_t state_130 = IDLE; -const struct Chord chord_130 PROGMEM = {H_TOP1 + H_TOP2, ASETNIOP, &state_130, NULL, KC_W, 0, single_dance}; -uint8_t state_131 = IDLE; -const struct Chord chord_131 PROGMEM = {H_TOP2 + H_TOP3, ASETNIOP, &state_131, NULL, KC_D, 0, single_dance}; -uint8_t state_132 = IDLE; -const struct Chord chord_132 PROGMEM = {H_TOP3 + H_TOP4, ASETNIOP, &state_132, NULL, KC_R, 0, single_dance}; -uint8_t state_133 = IDLE; -const struct Chord chord_133 PROGMEM = {H_TOP4 + H_TOP7, ASETNIOP, &state_133, NULL, KC_B, 0, single_dance}; -uint8_t state_134 = IDLE; -const struct Chord chord_134 PROGMEM = {H_TOP7 + H_TOP8, ASETNIOP, &state_134, NULL, KC_H, 0, single_dance}; -uint8_t state_135 = IDLE; -const struct Chord chord_135 PROGMEM = {H_TOP8 + H_TOP9, ASETNIOP, &state_135, NULL, KC_L, 0, single_dance}; -uint8_t state_136 = IDLE; -const struct Chord chord_136 PROGMEM = {H_TOP9 + H_TOP0, ASETNIOP, &state_136, NULL, KC_SEMICOLON, 0, single_dance}; -uint8_t state_137 = IDLE; -const struct Chord chord_137 PROGMEM = {H_TOP1 + H_TOP3, ASETNIOP, &state_137, NULL, KC_X, 0, single_dance}; -uint8_t state_138 = IDLE; -const struct Chord chord_138 PROGMEM = {H_TOP2 + H_TOP4, ASETNIOP, &state_138, NULL, KC_C, 0, single_dance}; -uint8_t state_139 = IDLE; -const struct Chord chord_139 PROGMEM = {H_TOP3 + H_TOP7, ASETNIOP, &state_139, NULL, KC_Y, 0, single_dance}; -uint8_t state_140 = IDLE; -const struct Chord chord_140 PROGMEM = {H_TOP4 + H_TOP8, ASETNIOP, &state_140, NULL, KC_V, 0, single_dance}; -uint8_t state_141 = IDLE; -const struct Chord chord_141 PROGMEM = {H_TOP7 + H_TOP9, ASETNIOP, &state_141, NULL, KC_U, 0, single_dance}; -uint8_t state_142 = IDLE; -const struct Chord chord_142 PROGMEM = {H_TOP1 + H_TOP4, ASETNIOP, &state_142, NULL, KC_F, 0, single_dance}; -uint8_t state_143 = IDLE; -const struct Chord chord_143 PROGMEM = {H_TOP2 + H_TOP7, ASETNIOP, &state_143, NULL, KC_J, 0, single_dance}; -uint8_t state_144 = IDLE; -const struct Chord chord_144 PROGMEM = {H_TOP3 + H_TOP8, ASETNIOP, &state_144, NULL, KC_COMMA, 0, single_dance}; -uint8_t state_145 = IDLE; -const struct Chord chord_145 PROGMEM = {H_TOP4 + H_TOP9, ASETNIOP, &state_145, NULL, KC_G, 0, single_dance}; -uint8_t state_146 = IDLE; -const struct Chord chord_146 PROGMEM = {H_TOP7 + H_TOP0, ASETNIOP, &state_146, NULL, KC_M, 0, single_dance}; -uint8_t state_147 = IDLE; -const struct Chord chord_147 PROGMEM = {H_TOP1 + H_TOP7, ASETNIOP, &state_147, NULL, KC_Q, 0, single_dance}; -uint8_t state_148 = IDLE; -const struct Chord chord_148 PROGMEM = {H_TOP2 + H_TOP8, ASETNIOP, &state_148, NULL, KC_K, 0, single_dance}; -uint8_t state_149 = IDLE; -const struct Chord chord_149 PROGMEM = {H_TOP3 + H_TOP9, ASETNIOP, &state_149, NULL, KC_MINUS, 0, single_dance}; -uint8_t state_150 = IDLE; -const struct Chord chord_150 PROGMEM = {H_TOP4 + H_TOP0, ASETNIOP, &state_150, NULL, KC_BSPC, 0, single_dance}; -uint8_t state_151 = IDLE; -const struct Chord chord_151 PROGMEM = {H_TOP1 + H_TOP8, ASETNIOP, &state_151, NULL, KC_Z, 0, single_dance}; -uint8_t state_152 = IDLE; -const struct Chord chord_152 PROGMEM = {H_TOP2 + H_TOP9, ASETNIOP, &state_152, NULL, KC_DOT, 0, single_dance}; -uint8_t state_153 = IDLE; -const struct Chord chord_153 PROGMEM = {H_TOP3 + H_TOP0, ASETNIOP, &state_153, NULL, KC_QUOTE, 0, single_dance}; -uint8_t state_154 = IDLE; -const struct Chord chord_154 PROGMEM = {H_TOP1 + H_TOP9, ASETNIOP, &state_154, NULL, KC_LEFT_BRACKET, 0, single_dance}; -uint8_t state_155 = IDLE; -const struct Chord chord_155 PROGMEM = {H_TOP2 + H_TOP0, ASETNIOP, &state_155, NULL, KC_RIGHT_BRACKET, 0, single_dance}; -uint8_t state_156 = IDLE; -const struct Chord chord_156 PROGMEM = {H_TOP1 + H_TOP0, ASETNIOP, &state_156, NULL, KC_SLASH, 0, single_dance}; -uint8_t state_157 = IDLE; -const struct Chord chord_157 PROGMEM = {H_TOP5, ASETNIOP, &state_157, NULL, KC_ESC, 0, single_dance}; -uint8_t state_158 = IDLE; -const struct Chord chord_158 PROGMEM = {H_TOP6, ASETNIOP, &state_158, NULL, KC_DEL, 0, single_dance}; -uint8_t state_159 = IDLE; -const struct Chord chord_159 PROGMEM = {H_BOT4, ASETNIOP, &state_159, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_160 = IDLE; -const struct Chord chord_160 PROGMEM = {H_BOT5, ASETNIOP, &state_160, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_161 = IDLE; -const struct Chord chord_161 PROGMEM = {H_BOT6, ASETNIOP, &state_161, NULL, KC_LALT, 0, single_dance}; -uint8_t state_162 = IDLE; -uint8_t counter_162 = 0; -const struct Chord chord_162 PROGMEM = {H_BOT7, ASETNIOP, &state_162, &counter_162, KC_SPACE, ASETNIOP_123, key_layer_dance}; -uint8_t state_163 = IDLE; -const struct Chord chord_163 PROGMEM = {H_TOP5 + H_TOP6, ASETNIOP, &state_163, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_164 = IDLE; -const struct Chord chord_164 PROGMEM = {H_TOP1 + H_TOP2 + H_TOP3 + H_TOP4, ASETNIOP, &state_164, NULL, QWERTY, 0, perm_pseudolayer}; -uint8_t state_165 = IDLE; -const struct Chord chord_165 PROGMEM = {H_BOT4 + H_BOT7, ASETNIOP, &state_165, NULL, ASETNIOP_FN, 0, temp_pseudolayer}; -uint8_t state_166 = IDLE; -const struct Chord chord_166 PROGMEM = {H_TOP1, ASETNIOP_123, &state_166, NULL, KC_1, 0, single_dance}; -uint8_t state_167 = IDLE; -const struct Chord chord_167 PROGMEM = {H_TOP2, ASETNIOP_123, &state_167, NULL, KC_2, 0, single_dance}; -uint8_t state_168 = IDLE; -const struct Chord chord_168 PROGMEM = {H_TOP3, ASETNIOP_123, &state_168, NULL, KC_3, 0, single_dance}; -uint8_t state_169 = IDLE; -const struct Chord chord_169 PROGMEM = {H_TOP4, ASETNIOP_123, &state_169, NULL, KC_4, 0, single_dance}; -uint8_t state_170 = IDLE; -const struct Chord chord_170 PROGMEM = {H_TOP7, ASETNIOP_123, &state_170, NULL, KC_7, 0, single_dance}; -uint8_t state_171 = IDLE; -const struct Chord chord_171 PROGMEM = {H_TOP8, ASETNIOP_123, &state_171, NULL, KC_8, 0, single_dance}; -uint8_t state_172 = IDLE; -const struct Chord chord_172 PROGMEM = {H_TOP9, ASETNIOP_123, &state_172, NULL, KC_9, 0, single_dance}; -uint8_t state_173 = IDLE; -const struct Chord chord_173 PROGMEM = {H_TOP0, ASETNIOP_123, &state_173, NULL, KC_0, 0, single_dance}; -uint8_t state_174 = IDLE; -const struct Chord chord_174 PROGMEM = {H_TOP3 + H_TOP4, ASETNIOP_123, &state_174, NULL, KC_5, 0, single_dance}; -uint8_t state_175 = IDLE; -const struct Chord chord_175 PROGMEM = {H_TOP4 + H_TOP7, ASETNIOP_123, &state_175, NULL, KC_EQUAL, 0, single_dance}; -uint8_t state_176 = IDLE; -const struct Chord chord_176 PROGMEM = {H_TOP7 + H_TOP8, ASETNIOP_123, &state_176, NULL, KC_6, 0, single_dance}; -uint8_t state_177 = IDLE; -const struct Chord chord_177 PROGMEM = {H_TOP8 + H_TOP9, ASETNIOP_123, &state_177, NULL, KC_BACKSLASH, 0, single_dance}; -uint8_t state_178 = IDLE; -const struct Chord chord_178 PROGMEM = {H_TOP9 + H_TOP0, ASETNIOP_123, &state_178, NULL, KC_SEMICOLON, 0, single_dance}; -uint8_t state_179 = IDLE; -const struct Chord chord_179 PROGMEM = {H_TOP4 + H_TOP0, ASETNIOP_123, &state_179, NULL, KC_BSPC, 0, single_dance}; -uint8_t state_180 = IDLE; -const struct Chord chord_180 PROGMEM = {H_TOP5, ASETNIOP_123, &state_180, NULL, KC_ESC, 0, single_dance}; -uint8_t state_181 = IDLE; -const struct Chord chord_181 PROGMEM = {H_TOP6, ASETNIOP_123, &state_181, NULL, KC_DEL, 0, single_dance}; -uint8_t state_182 = IDLE; -const struct Chord chord_182 PROGMEM = {H_BOT4, ASETNIOP_123, &state_182, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_183 = IDLE; -const struct Chord chord_183 PROGMEM = {H_BOT5, ASETNIOP_123, &state_183, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_184 = IDLE; -const struct Chord chord_184 PROGMEM = {H_BOT6, ASETNIOP_123, &state_184, NULL, KC_LALT, 0, single_dance}; -uint8_t state_185 = IDLE; -const struct Chord chord_185 PROGMEM = {H_TOP5 + H_TOP6, ASETNIOP_123, &state_185, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_186 = IDLE; -const struct Chord chord_186 PROGMEM = {H_TOP1, ASETNIOP_FN, &state_186, NULL, KC_HOME, 0, single_dance}; -uint8_t state_187 = IDLE; -const struct Chord chord_187 PROGMEM = {H_TOP2, ASETNIOP_FN, &state_187, NULL, KC_PGDN, 0, single_dance}; -uint8_t state_188 = IDLE; -const struct Chord chord_188 PROGMEM = {H_TOP3, ASETNIOP_FN, &state_188, NULL, KC_PGUP, 0, single_dance}; -uint8_t state_189 = IDLE; -const struct Chord chord_189 PROGMEM = {H_TOP4, ASETNIOP_FN, &state_189, NULL, KC_END, 0, single_dance}; -uint8_t state_190 = IDLE; -const struct Chord chord_190 PROGMEM = {H_TOP7, ASETNIOP_FN, &state_190, NULL, KC_LEFT, 0, single_dance}; -uint8_t state_191 = IDLE; -const struct Chord chord_191 PROGMEM = {H_TOP8, ASETNIOP_FN, &state_191, NULL, KC_DOWN, 0, single_dance}; -uint8_t state_192 = IDLE; -const struct Chord chord_192 PROGMEM = {H_TOP9, ASETNIOP_FN, &state_192, NULL, KC_UP, 0, single_dance}; -uint8_t state_193 = IDLE; -const struct Chord chord_193 PROGMEM = {H_TOP0, ASETNIOP_FN, &state_193, NULL, KC_RIGHT, 0, single_dance}; -uint8_t state_194 = IDLE; -const struct Chord chord_194 PROGMEM = {H_TOP1 + H_TOP2, ASETNIOP_FN, &state_194, NULL, KC_F1, 0, single_dance}; -uint8_t state_195 = IDLE; -const struct Chord chord_195 PROGMEM = {H_TOP2 + H_TOP3, ASETNIOP_FN, &state_195, NULL, KC_F2, 0, single_dance}; -uint8_t state_196 = IDLE; -const struct Chord chord_196 PROGMEM = {H_TOP3 + H_TOP4, ASETNIOP_FN, &state_196, NULL, KC_F3, 0, single_dance}; -uint8_t state_197 = IDLE; -const struct Chord chord_197 PROGMEM = {H_TOP4 + H_TOP7, ASETNIOP_FN, &state_197, NULL, KC_F4, 0, single_dance}; -uint8_t state_198 = IDLE; -const struct Chord chord_198 PROGMEM = {H_TOP7 + H_TOP8, ASETNIOP_FN, &state_198, NULL, KC_F5, 0, single_dance}; -uint8_t state_199 = IDLE; -const struct Chord chord_199 PROGMEM = {H_TOP8 + H_TOP9, ASETNIOP_FN, &state_199, NULL, KC_F6, 0, single_dance}; -uint8_t state_200 = IDLE; -const struct Chord chord_200 PROGMEM = {H_TOP9 + H_TOP0, ASETNIOP_FN, &state_200, NULL, KC_F7, 0, single_dance}; -uint8_t state_201 = IDLE; -const struct Chord chord_201 PROGMEM = {H_TOP1 + H_TOP3, ASETNIOP_FN, &state_201, NULL, KC_F10, 0, single_dance}; -uint8_t state_202 = IDLE; -const struct Chord chord_202 PROGMEM = {H_TOP8 + H_TOP0, ASETNIOP_FN, &state_202, NULL, KC_F8, 0, single_dance}; -uint8_t state_203 = IDLE; -const struct Chord chord_203 PROGMEM = {H_TOP1 + H_TOP4, ASETNIOP_FN, &state_203, NULL, KC_F11, 0, single_dance}; -uint8_t state_204 = IDLE; -const struct Chord chord_204 PROGMEM = {H_TOP7 + H_TOP0, ASETNIOP_FN, &state_204, NULL, KC_F9, 0, single_dance}; -uint8_t state_205 = IDLE; -const struct Chord chord_205 PROGMEM = {H_TOP1 + H_TOP7, ASETNIOP_FN, &state_205, NULL, KC_F12, 0, single_dance}; -uint8_t state_206 = IDLE; -const struct Chord chord_206 PROGMEM = {H_TOP4 + H_TOP0, ASETNIOP_FN, &state_206, NULL, KC_BSPC, 0, single_dance}; -uint8_t state_207 = IDLE; -const struct Chord chord_207 PROGMEM = {H_TOP5, ASETNIOP_FN, &state_207, NULL, KC_ESC, 0, single_dance}; -uint8_t state_208 = IDLE; -const struct Chord chord_208 PROGMEM = {H_TOP6, ASETNIOP_FN, &state_208, NULL, KC_DEL, 0, single_dance}; -uint8_t state_209 = IDLE; -const struct Chord chord_209 PROGMEM = {H_BOT4, ASETNIOP_FN, &state_209, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_210 = IDLE; -const struct Chord chord_210 PROGMEM = {H_BOT5, ASETNIOP_FN, &state_210, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_211 = IDLE; -const struct Chord chord_211 PROGMEM = {H_BOT6, ASETNIOP_FN, &state_211, NULL, KC_LALT, 0, single_dance}; -uint8_t state_212 = IDLE; -const struct Chord chord_212 PROGMEM = {H_TOP5 + H_TOP6, ASETNIOP_FN, &state_212, NULL, KC_LGUI, 0, single_dance}; - -const struct Chord* const list_of_chords[] PROGMEM = { - &chord_0, &chord_1, &chord_2, &chord_3, &chord_4, &chord_5, &chord_6, &chord_7, &chord_8, &chord_9, &chord_10, &chord_11, &chord_12, &chord_13, &chord_14, &chord_15, &chord_16, &chord_17, &chord_18, &chord_19, &chord_20, &chord_21, &chord_22, &chord_23, &chord_24, &chord_25, &chord_26, &chord_27, &chord_28, &chord_29, &chord_30, &chord_31, &chord_32, &chord_33, &chord_34, &chord_35, &chord_36, &chord_37, &chord_38, &chord_39, &chord_40, &chord_41, &chord_42, &chord_43, &chord_44, &chord_45, &chord_46, &chord_47, &chord_48, &chord_49, &chord_50, &chord_51, &chord_52, &chord_53, &chord_54, &chord_55, &chord_56, &chord_57, &chord_58, &chord_59, &chord_60, &chord_61, &chord_62, &chord_63, &chord_64, &chord_65, &chord_66, &chord_67, &chord_68, &chord_69, &chord_70, &chord_71, &chord_72, &chord_73, &chord_74, &chord_75, &chord_76, &chord_77, &chord_78, &chord_79, &chord_80, &chord_81, &chord_82, &chord_83, &chord_84, &chord_85, &chord_86, &chord_87, &chord_88, &chord_89, &chord_90, &chord_91, &chord_92, &chord_93, &chord_94, &chord_95, &chord_96, &chord_97, &chord_98, &chord_99, &chord_100, &chord_101, &chord_102, &chord_103, &chord_104, &chord_105, &chord_106, &chord_107, &chord_108, &chord_109, &chord_110, &chord_111, &chord_112, &chord_113, &chord_114, &chord_115, &chord_116, &chord_117, &chord_118, &chord_119, &chord_120, &chord_121, &chord_122, &chord_123, &chord_124, &chord_125, &chord_126, &chord_127, &chord_128, &chord_129, &chord_130, &chord_131, &chord_132, &chord_133, &chord_134, &chord_135, &chord_136, &chord_137, &chord_138, &chord_139, &chord_140, &chord_141, &chord_142, &chord_143, &chord_144, &chord_145, &chord_146, &chord_147, &chord_148, &chord_149, &chord_150, &chord_151, &chord_152, &chord_153, &chord_154, &chord_155, &chord_156, &chord_157, &chord_158, &chord_159, &chord_160, &chord_161, &chord_162, &chord_163, &chord_164, &chord_165, &chord_166, &chord_167, &chord_168, &chord_169, &chord_170, &chord_171, &chord_172, &chord_173, &chord_174, &chord_175, &chord_176, &chord_177, &chord_178, &chord_179, &chord_180, &chord_181, &chord_182, &chord_183, &chord_184, &chord_185, &chord_186, &chord_187, &chord_188, &chord_189, &chord_190, &chord_191, &chord_192, &chord_193, &chord_194, &chord_195, &chord_196, &chord_197, &chord_198, &chord_199, &chord_200, &chord_201, &chord_202, &chord_203, &chord_204, &chord_205, &chord_206, &chord_207, &chord_208, &chord_209, &chord_210, &chord_211, &chord_212 -}; - -const uint16_t** const leader_triggers PROGMEM = NULL; -void (*leader_functions[]) (void) = {}; - -#define NUMBER_OF_CHORDS 213 -#define NUMBER_OF_LEADER_COMBOS 0 - -bool are_hashed_keycodes_in_sound(HASH_TYPE keycodes_hash, HASH_TYPE sound) { - return (keycodes_hash & sound) == keycodes_hash; -} - -uint8_t keycode_to_index(uint16_t keycode) { - return keycode - FIRST_INTERNAL_KEYCODE; -} - -void sound_keycode_array(uint16_t keycode) { - uint8_t index = keycode_to_index(keycode); - keycode_index++; - keycodes_buffer_array[index] = keycode_index; -} - -void silence_keycode_hash_array(HASH_TYPE keycode_hash) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - bool index_in_hash = ((HASH_TYPE) 1 << i) & keycode_hash; - if (index_in_hash) { - uint8_t current_val = keycodes_buffer_array[i]; - keycodes_buffer_array[i] = 0; - for (int j = 0; j < NUMBER_OF_KEYS; j++) { - if (keycodes_buffer_array[j] > current_val) { - keycodes_buffer_array[j]--; - } - } - keycode_index--; - } - } -} - -bool are_hashed_keycodes_in_array(HASH_TYPE keycode_hash) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - bool index_in_hash = ((HASH_TYPE) 1 << i) & keycode_hash; - bool index_in_array = (bool) keycodes_buffer_array[i]; - if (index_in_hash && !index_in_array) { - return false; - } - } - return true; -} - -void kill_one_shots(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == IN_ONE_SHOT) { - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - } - } -} - -void process_finished_dances(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == ACTIVATED) { - *chord->state = PRESS_FROM_ACTIVE; - chord->function(chord); - if (a_key_went_through) { - kill_one_shots(); - } - dance_timer = timer_read(); - } else if (*chord->state == IDLE_IN_DANCE) { - *chord->state = FINISHED; - chord->function(chord); - if (*chord->state == FINISHED) { - *chord->state = RESTART; - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - } - } else if (*chord->state == PRESS_FROM_ACTIVE) { - *chord->state = FINISHED_FROM_ACTIVE; - chord->function(chord); - if (a_key_went_through) { - kill_one_shots(); - } - dance_timer = timer_read(); - } - } -} - -uint8_t keycodes_buffer_array_min(uint8_t* first_keycode_index) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - if (keycodes_buffer_array[i] == 1) { - if (first_keycode_index != NULL) { - *first_keycode_index = (uint8_t) i; - } - return 1; - } - } - return 0; -} - -void remove_subchords(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (!(*chord->state == READY || *chord->state == READY_IN_DANCE || *chord->state == READY_LOCKED)) { - continue; - } - - struct Chord chord_storage_2; - struct Chord* chord_ptr_2; - struct Chord* chord_2; - for (int j = 0; j < NUMBER_OF_CHORDS; j++) { - if (i == j) {continue;} - - chord_ptr_2 = (struct Chord*) pgm_read_word (&list_of_chords[j]); - memcpy_P(&chord_storage_2, chord_ptr_2, sizeof(struct Chord)); - chord_2 = &chord_storage_2; - - if (are_hashed_keycodes_in_sound(chord_2->keycodes_hash, chord->keycodes_hash)) { - if (*chord_2->state == READY) { - *chord_2->state = IDLE; - } - if (*chord_2->state == READY_IN_DANCE) { - *chord_2->state = IDLE_IN_DANCE; - } - if (*chord_2->state == READY_LOCKED) { - *chord_2->state = LOCKED; - } - } - } - } -} - -void process_ready_chords(void) { - uint8_t first_keycode_index = 0; - while (keycodes_buffer_array_min(&first_keycode_index)) { - // find ready chords - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - // if the chord does not contain the first keycode - bool contains_first_keycode = ((uint32_t) 1 << first_keycode_index) & chord->keycodes_hash; - if (!contains_first_keycode) { - continue; - } - - if (!are_hashed_keycodes_in_array(chord->keycodes_hash)){ - continue; - } - - if (*chord->state == LOCKED) { - *chord->state = READY_LOCKED; - continue; - } - - if (!(chord->pseudolayer == current_pseudolayer || chord->pseudolayer == ALWAYS_ON)) { - continue; - } - - if (*chord->state == IDLE) { - *chord->state = READY; - continue; - } - - if (*chord->state == IDLE_IN_DANCE) { - *chord->state = READY_IN_DANCE; - } - } - - // remove subchords - remove_subchords(); - - // execute logic - // this should be only one chord - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == READY_LOCKED) { - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - break; - } - - if (*chord->state == READY || *chord->state == READY_IN_DANCE) { - if (last_chord && last_chord != chord) { - process_finished_dances(); - } - - bool lock_next_prev_state = lock_next; - - *chord->state = ACTIVATED; - chord->function(chord); - dance_timer = timer_read(); - - if (lock_next && lock_next == lock_next_prev_state) { - lock_next = false; - *chord->state = PRESS_FROM_ACTIVE; - chord->function(chord); - if (*chord->state == PRESS_FROM_ACTIVE) { - *chord->state = LOCKED; - } - if (a_key_went_through) { - kill_one_shots(); - } - } - break; - } - } - - // silence notes - silence_keycode_hash_array(chord->keycodes_hash); - } -} - -void deactivate_active_chords(uint16_t keycode) { - HASH_TYPE hash = (HASH_TYPE)1 << (keycode - SAFE_RANGE); - bool broken; - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - broken = are_hashed_keycodes_in_sound(hash, chord->keycodes_hash); - if (!broken) { - continue; - } - - switch (*chord->state) { - case ACTIVATED: - *chord->state = DEACTIVATED; - chord->function(chord); - - if (*chord->state == DEACTIVATED) { - dance_timer = timer_read(); - *chord->state = IDLE_IN_DANCE; - } - if (*chord->state != IN_ONE_SHOT) { - kill_one_shots(); - } - break; - case PRESS_FROM_ACTIVE: - case FINISHED_FROM_ACTIVE: - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - kill_one_shots(); - break; - default: - break; - } - } - -} - -void process_command(void) { - command_mode = 0; - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - if (command_buffer[i]) { - register_code(command_buffer[i]); - } - send_keyboard_report(); - } - wait_ms(TAP_TIMEOUT); - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - if (command_buffer[i]) { - unregister_code(command_buffer[i]); - } - send_keyboard_report(); - } - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - command_buffer[i] = 0; - } - command_ind = 0; -} - -void process_leader(void) { - in_leader_mode = false; - for (int i = 0; i < NUMBER_OF_LEADER_COMBOS; i++) { - uint16_t trigger[LEADER_MAX_LENGTH]; - memcpy_P(trigger, leader_triggers[i], LEADER_MAX_LENGTH * sizeof(uint16_t)); - - if (identical(leader_buffer, trigger)) { - (*leader_functions[i])(); - break; - } - } - for (int i = 0; i < LEADER_MAX_LENGTH; i++) { - leader_buffer[i] = 0; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (keycode < FIRST_INTERNAL_KEYCODE || keycode > LAST_INTERNAL_KEYCODE) { - return true; - } - - if (record->event.pressed) { - sound_keycode_array(keycode); - } else { - process_ready_chords(); - deactivate_active_chords(keycode); - } - chord_timer = timer_read(); - leader_timer = timer_read(); - - return false; -} - -void matrix_scan_user(void) { - bool chord_timer_expired = timer_elapsed(chord_timer) > CHORD_TIMEOUT; - if (chord_timer_expired && keycodes_buffer_array_min(NULL)) { - process_ready_chords(); - } - - bool dance_timer_expired = timer_elapsed(dance_timer) > DANCE_TIMEOUT; - if (dance_timer_expired) { // would love to have && in_dance but not sure how - process_finished_dances(); - } - - bool in_command_mode = command_mode == 2; - if (in_command_mode) { - process_command(); - } - - bool leader_timer_expired = timer_elapsed(leader_timer) > LEADER_TIMEOUT; - if (leader_timer_expired && in_leader_mode) { - process_leader(); - } - -} - -void clear(const struct Chord* self) { - if (*self->state == ACTIVATED) { - // kill all chords - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - *chord->state = IDLE; - - if (chord->counter) { - *chord->counter = 0; - } - } - - // clear keyboard - clear_keyboard(); - send_keyboard_report(); - - // switch to default pseudolayer - current_pseudolayer = DEFAULT_PSEUDOLAYER; - - // clear all keyboard states - lock_next = false; - autoshift_mode = true; - command_mode = 0; - in_leader_mode = false; - leader_ind = 0; - dynamic_macro_mode = false; - a_key_went_through = false; - - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - dynamic_macro_buffer[i] = 0; - } - } -} \ No newline at end of file diff --git a/keyboards/gboards/butterstick/keymaps/dennytom/keymap_def.json b/keyboards/gboards/butterstick/keymaps/dennytom/keymap_def.json deleted file mode 100644 index 16f02ca529ae..000000000000 --- a/keyboards/gboards/butterstick/keymaps/dennytom/keymap_def.json +++ /dev/null @@ -1,309 +0,0 @@ -{ - "keys": [ - "TOP1", "TOP2", "TOP3", "TOP4", "TOP5", "TOP6", "TOP7", "TOP8", "TOP9", "TOP0", - "BOT1", "BOT2", "BOT3", "BOT4", "BOT5", "BOT6", "BOT7", "BOT8", "BOT9", "BOT0" - ], - "parameters": { - "layout_function_name": "LAYOUT_butter", - "chord_timeout": 100, - "dance_timeout": 200, - "leader_timeout": 750, - "tap_timeout": 50, - "command_max_length": 5, - "leader_max_length": 5, - "dynamic_macro_max_length": 20, - "string_max_length": 16, - "long_press_multiplier": 3, - "default_pseudolayer": "QWERTY" - }, - "layers": [ - { - "type": "auto" - } - ], - "chord_sets": [ - { - "name": "rows", - "chords": [ - ["TOP1"], ["TOP2"], ["TOP3"], ["TOP4"], ["TOP5"], ["TOP6"], ["TOP7"], ["TOP8"], ["TOP9"], ["TOP0"], - ["TOP1", "BOT1"], ["TOP2", "BOT2"], ["TOP3", "BOT3"], ["TOP4", "BOT4"], ["TOP5", "BOT5"], ["TOP6", "BOT6"], ["TOP7", "BOT7"], ["TOP8", "BOT8"], ["TOP9", "BOT9"], ["TOP0", "BOT0"], - ["BOT1"], ["BOT2"], ["BOT3"], ["BOT4"], ["BOT5"], ["BOT6"], ["BOT7"], ["BOT8"], ["BOT9"], ["BOT0"] - ] - }, - { - "name": "cols", - "chords": [ - ["TOP1", "TOP2"], ["TOP2", "TOP3"], ["TOP3", "TOP4"], ["TOP4", "TOP5"], ["TOP5", "TOP6"], ["TOP6", "TOP7"], ["TOP7", "TOP8"], ["TOP8", "TOP9"], ["TOP9", "TOP0"], - ["TOP1", "TOP2", "BOT1", "BOT2"], ["TOP2", "TOP3", "BOT2", "BOT3"], ["TOP3", "TOP4", "BOT3", "BOT4"], ["TOP4", "TOP5", "BOT4", "BOT5"], ["TOP5", "TOP6", "BOT5", "BOT6"], ["TOP6", "TOP7", "BOT6", "BOT7"], ["TOP7", "TOP8", "BOT7", "BOT8"], ["TOP8", "TOP9", "BOT8", "BOT9"], ["TOP9", "TOP0", "BOT9", "BOT0"], - ["BOT1", "BOT2"], ["BOT2", "BOT3"], ["BOT3", "BOT4"], ["BOT4", "BOT5"], ["BOT5", "BOT6"], ["BOT6", "BOT7"], ["BOT7", "BOT8"], ["BOT8", "BOT9"], ["BOT9", "BOT0"] - ] - }, - { - "name": "asetniop", - "chords": [ - ["TOP1"], ["TOP2"], ["TOP3"], ["TOP4"], ["TOP7"], ["TOP8"], ["TOP9"], ["TOP0"], - ["TOP1", "TOP2"], ["TOP2", "TOP3"], ["TOP3", "TOP4"], ["TOP4", "TOP7"], ["TOP7", "TOP8"], ["TOP8", "TOP9"], ["TOP9", "TOP0"], - ["TOP1", "TOP3"], ["TOP2", "TOP4"], ["TOP3", "TOP7"], ["TOP4", "TOP8"], ["TOP7", "TOP9"], ["TOP8", "TOP0"], - ["TOP1", "TOP4"], ["TOP2", "TOP7"], ["TOP3", "TOP8"], ["TOP4", "TOP9"], ["TOP7", "TOP0"], - ["TOP1", "TOP7"], ["TOP2", "TOP8"], ["TOP3", "TOP9"], ["TOP4", "TOP0"], - ["TOP1", "TOP8"], ["TOP2", "TOP9"], ["TOP3", "TOP0"], - ["TOP1", "TOP9"], ["TOP2", "TOP0"], - ["TOP1", "TOP0"] - ] - } - ], - "pseudolayers": [ - { - "name": "ALWAYS_ON", - "chords": [ - { - "type": "chord_set", - "set": "cols", - "keycodes": [ - " ", " ", " ", " ", " ", " ", " ", " ", " ", - "LOCK", " AT", " ", " ", " CMD", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " " - ] - }, - { - "type": "visual", - "chord": [ - "X", "X", " ", " ", " ", " ", " ", " ", "X", "X", - "X", "X", " ", " ", " ", " ", " ", " ", "X", "X" - ], - "keycode": "CLEAR_KB" - } - ] - }, - { - "name": "QWERTY", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - "AS(Q)", "AS(W)", "AS(E)", "AS(R)", "AS(T)", "AS(Y)", "AS(U)", "AS(I)", "AS(O)", "AS(P)", - "AS(A)", "AS(S)", "AS(D)", "AS(F)", "AS(G)", "AS(H)", "AS(J)", "AS(K)", "AS(L)", "AS(;)", - "AS(Z)", "AS(X)", "AS(C)", "AS(V)", "AS(B)", "AS(N)", "AS(M)", "AS(,)", "AS(.)", "AS(/)" - ] - }, - { - "type": "chord_set", - "set": "cols", - "keycodes": [ - " ESC", "MO(MOV)", " TAB", " ", "O(RGUI)", " ", " INS", " DEL", " BSPC", - " ", " ", " ", " ", " ", " ", " ", " ", " ENTER", - "O(LSFT)", "O(LCTL)", "O(LALT)", "O(NUM)", "O(LGUI)", "O(NUM)", "O(RALT)", "O(RCTL)", "O(RSFT)" - ] - }, - { - "type": "simple", - "chord": ["BOT1", "BOT0"], - "keycode": "SPACE" - }, - { - "type": "visual", - "chord": [ - "X", "X", "X", "X", " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " " - ], - "keycode": "MO(MOUSE)" - }, - { - "type": "visual", - "chord": [ - "X", "X", "X", "X", " ", " ", "X", "X", "X", "X", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " " - ], - "keycode": "DF(ASETNIOP)" - } - ] - }, - { - "name": "NUM", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - "AS(1)", "AS(2)", "AS(3)", "AS(4)", "AS(5)", "AS(6)", "AS(7)", "AS(8)", "AS(9)", "AS(0)", - " F1", " F2", " F3", " F4", " F5", " F6", " F7", " F8", " F9", " F10", - "AS(`)", "AS(-)", "AS(=)", "AS([)", "AS(])", "AS(\\)", "AS(')", " ", " F11", " F12" - ] - }, - { - "type": "chord_set", - "set": "cols", - "keycodes": [ - " ESC", " ", " TAB", " ", "O(RGUI)", " ", " INS", " DEL", " BSPC", - " ", " ", " ", " ", " ", " ", " ", " ", " ENTER", - "O(LSFT)", "O(LCTL)", "O(LALT)", " ", "O(LGUI)", " ", "O(RALT)", "O(RCTL)", " O(RSFT)" - ] - }, - { - "type": "simple", - "chord": ["BOT1", "BOT0"], - "keycode": "SPACE" - } - ] - }, - { - "name": "MOV", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", " ", " ", " ", " ", " ", " HOME", " UP", " END", " PGUP", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " LSFT", " LCTL", " LALT", " LGUI", " LEFT", " DOWN", "RIGHT", " PGDN" - ] - } - ] - }, - { - "name": "MOUSE", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", " ", " ", " ", " ", " ", " BTN1", " MS_U", " BTN2", " WH_U", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " LSFT", " LCTL", " LALT", " LGUI", " MS_L", " MS_D", " MS_R", " WH_D" - ] - } - ] - }, - { - "name": "ASETNIOP", - "chords": [ - { - "type": "chord_set", - "set": "asetniop", - "keycodes": [ - "A", "S", "E", "T", "N", "I", "O", "P", - "W", "D", "R", "B", "H", "L", ";", - "X", "C", "Y", "V", "U", "", - "F", "J", ",", "G", "M", - "Q", "K", "-", "BSPC", - "Z", ".", "'", - "[", "]", - "/" - ] - }, - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", " ", " ", " ", " ESC", " DEL", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " ", "LSFT", "LCTL", "LALT", "KL(SPACE, ASETNIOP_123)", "", "", "" - ] - }, - { - "type": "chord_set", - "set": "cols", - "keycodes": [ - " ", " ", " ", " ", "LGUI", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " " - ] - }, - { - "type": "visual", - "chord": [ - "X", "X", "X", "X", " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " " - ], - "keycode": "DF(QWERTY)" - }, - { - "type": "visual", - "chord": [ - " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " ", "X", " ", " ", "X", " ", " ", " " - ], - "keycode": "MO(ASETNIOP_FN)" - } - ] - }, - { - "name": "ASETNIOP_123", - "chords": [ - { - "type": "chord_set", - "set": "asetniop", - "keycodes": [ - "1", "2", "3", "4", "7", "8", "9", "0", - " ", " ", "5", "=", "6", "\\", ";", - " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", - " ", " ", " ", "BSPC", - " ", " ", " ", - " ", " ", - " " - ] - }, - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", " ", " ", " ", " ESC", " DEL", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " ", "LSFT", "LCTL", "LALT", " ", " ", " ", " " - ] - }, - { - "type": "chord_set", - "set": "cols", - "keycodes": [ - " ", " ", " ", " ", "LGUI", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " " - ] - } - ] - }, - { - "name": "ASETNIOP_FN", - "chords": [ - { - "type": "chord_set", - "set": "asetniop", - "keycodes": [ - "HOME", "PGDN", "PGUP", " END", "LEFT", "DOWN", " UP", "RIGHT", - " F1", " F2", " F3", " F4", " F5", " F6", " F7", - " F10", " ", " ", " ", " ", " F8", - " F11", " ", " ", " ", " F9", - " F12", " ", " ", "BSPC", - " ", " ", " ", - " ", " ", - " " - ] - }, - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", " ", " ", " ", " ESC", " DEL", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " ", "LSFT", "LCTL", "LALT", " ", " ", " ", " " - ] - }, - { - "type": "chord_set", - "set": "cols", - "keycodes": [ - " ", " ", " ", " ", "LGUI", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " " - ] - } - ] - } - ], - "leader_sequences": [], - "extra_code": "", - "extra_dependencies": [] -} \ No newline at end of file diff --git a/keyboards/gboards/butterstick/keymaps/dennytom/rules.mk b/keyboards/gboards/butterstick/keymaps/dennytom/rules.mk deleted file mode 100644 index 1155f72c04a4..000000000000 --- a/keyboards/gboards/butterstick/keymaps/dennytom/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -MOUSEKEY_ENABLE = yes -EXTRAKEY_ENABLE = yes -CONSOLE_ENABLE = no -# COMMAND_ENABLE = no -NKRO_ENABLE = yes - -TMPVAR := $(SRC) -SRC = $(filter-out sten.c, $(TMPVAR)) \ No newline at end of file diff --git a/keyboards/gboards/butterstick/sten.h b/keyboards/gboards/butterstick/sten.h index 84c54c9e2e54..ca6b03f77886 100644 --- a/keyboards/gboards/butterstick/sten.h +++ b/keyboards/gboards/butterstick/sten.h @@ -8,9 +8,6 @@ #pragma once #include QMK_KEYBOARD_H -#include "mousekey.h" -#include "keymap_steno.h" -#include "wait.h" extern size_t keymapsCount; // Total keymaps extern uint32_t cChord; // Current Chord diff --git a/keyboards/gboards/ergotaco/rules.mk b/keyboards/gboards/ergotaco/rules.mk index 2df8900c2d6c..6fbefbd22d7f 100644 --- a/keyboards/gboards/ergotaco/rules.mk +++ b/keyboards/gboards/ergotaco/rules.mk @@ -7,4 +7,5 @@ COMMAND_ENABLE = yes # know what you're doing. # # No touchy, capiche? -SRC += matrix.c i2c_master.c +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c b/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c index 9b3365d02fd3..932d48959cc0 100644 --- a/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c +++ b/keyboards/gboards/georgi/keymaps/colemak-dh/keymap.c @@ -12,7 +12,6 @@ #include QMK_KEYBOARD_H #include "sten.h" -#include "keymap_steno.h" // Steno Layers #define FUNCT ( LSD | LK | LP | LH ) diff --git a/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c b/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c index 2e63fe3c7d23..19683179f371 100644 --- a/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c +++ b/keyboards/gboards/georgi/keymaps/default-flipped/keymap.c @@ -12,7 +12,6 @@ #include QMK_KEYBOARD_H #include "sten.h" -#include "keymap_steno.h" // Proper Layers #define FUNCT (LSD | LK | LP | LH) diff --git a/keyboards/gboards/georgi/keymaps/default/keymap.c b/keyboards/gboards/georgi/keymaps/default/keymap.c index a9c2d4a47d8f..955ec0e40691 100644 --- a/keyboards/gboards/georgi/keymaps/default/keymap.c +++ b/keyboards/gboards/georgi/keymaps/default/keymap.c @@ -12,7 +12,6 @@ #include QMK_KEYBOARD_H #include "sten.h" -#include "keymap_steno.h" // Proper Layers #define FUNCT (LSD | LK | LP | LH) diff --git a/keyboards/gboards/georgi/keymaps/dennytom/README.md b/keyboards/gboards/georgi/keymaps/dennytom/README.md deleted file mode 100644 index 14bc1d2045ed..000000000000 --- a/keyboards/gboards/georgi/keymaps/dennytom/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# # Dennytom's Georgi Layout - -This keymap is using a custom chording engine. Head out to my (DennyTom) user space to find the source files and details. - -To make a real keymap from the JSON file, run - -```sh -python3 parser.py keymap_def.json keymap.c -``` - -Likely will change with use. I enjoy the modifiers on the "home row". \ No newline at end of file diff --git a/keyboards/gboards/georgi/keymaps/dennytom/keymap.c b/keyboards/gboards/georgi/keymaps/dennytom/keymap.c deleted file mode 100644 index 902d2271d70c..000000000000 --- a/keyboards/gboards/georgi/keymaps/dennytom/keymap.c +++ /dev/null @@ -1,1208 +0,0 @@ -#include QMK_KEYBOARD_H - -#define H_TOP1 ((HASH_TYPE) 1 << 0) -#define H_TOP2 ((HASH_TYPE) 1 << 1) -#define H_TOP3 ((HASH_TYPE) 1 << 2) -#define H_TOP4 ((HASH_TYPE) 1 << 3) -#define H_TOP5 ((HASH_TYPE) 1 << 4) -#define H_TOP6 ((HASH_TYPE) 1 << 5) -#define H_TOP7 ((HASH_TYPE) 1 << 6) -#define H_TOP8 ((HASH_TYPE) 1 << 7) -#define H_TOP9 ((HASH_TYPE) 1 << 8) -#define H_TOP10 ((HASH_TYPE) 1 << 9) -#define H_TOP11 ((HASH_TYPE) 1 << 10) -#define H_TOP12 ((HASH_TYPE) 1 << 11) -#define H_BOT1 ((HASH_TYPE) 1 << 12) -#define H_BOT2 ((HASH_TYPE) 1 << 13) -#define H_BOT3 ((HASH_TYPE) 1 << 14) -#define H_BOT4 ((HASH_TYPE) 1 << 15) -#define H_BOT5 ((HASH_TYPE) 1 << 16) -#define H_BOT6 ((HASH_TYPE) 1 << 17) -#define H_BOT7 ((HASH_TYPE) 1 << 18) -#define H_BOT8 ((HASH_TYPE) 1 << 19) -#define H_BOT9 ((HASH_TYPE) 1 << 20) -#define H_BOT10 ((HASH_TYPE) 1 << 21) -#define H_BOT11 ((HASH_TYPE) 1 << 22) -#define H_BOT12 ((HASH_TYPE) 1 << 23) -#define H_THU1 ((HASH_TYPE) 1 << 24) -#define H_THU2 ((HASH_TYPE) 1 << 25) -#define H_THU3 ((HASH_TYPE) 1 << 26) -#define H_THU4 ((HASH_TYPE) 1 << 27) -#define H_THU5 ((HASH_TYPE) 1 << 28) -#define H_THU6 ((HASH_TYPE) 1 << 29) - -enum internal_keycodes { - TOP1 = SAFE_RANGE, - TOP2, TOP3, TOP4, TOP5, TOP6, TOP7, TOP8, TOP9, TOP10, TOP11, TOP12, BOT1, BOT2, BOT3, BOT4, BOT5, BOT6, BOT7, BOT8, BOT9, BOT10, BOT11, BOT12, THU1, THU2, THU3, THU4, THU5, THU6, - FIRST_INTERNAL_KEYCODE = TOP1, - LAST_INTERNAL_KEYCODE = THU6 -}; - -enum pseudolayers { - ALWAYS_ON, QWERTY, NUM, FNC, NAV, MOUSE -}; - -#define CHORD_TIMEOUT 100 -#define DANCE_TIMEOUT 200 -#define LEADER_TIMEOUT 750 -#define TAP_TIMEOUT 50 -#define LONG_PRESS_MULTIPLIER 3 -#define DYNAMIC_MACRO_MAX_LENGTH 20 -#define COMMAND_MAX_LENGTH 5 -#define STRING_MAX_LENGTH 16 -#define LEADER_MAX_LENGTH 5 -#define HASH_TYPE uint32_t -#define NUMBER_OF_KEYS 30 -#define DEFAULT_PSEUDOLAYER QWERTY - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_georgi(TOP1, TOP2, TOP3, TOP4, TOP5, TOP6, TOP7, TOP8, TOP9, TOP10, TOP11, TOP12, BOT1, BOT2, BOT3, BOT4, BOT5, BOT6, BOT7, BOT8, BOT9, BOT10, BOT11, BOT12, THU1, THU2, THU3, THU4, THU5, THU6), -}; -size_t keymapsCount = 1; - -uint8_t keycodes_buffer_array[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -uint8_t command_buffer[] = { - 0, 0, 0, 0, 0 -}; - -uint16_t leader_buffer[] = { - 0, 0, 0, 0, 0 -}; - -uint8_t dynamic_macro_buffer[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -enum chord_states { - IDLE, - READY, - ACTIVATED, - DEACTIVATED, - PRESS_FROM_ACTIVE, - FINISHED_FROM_ACTIVE, - IDLE_IN_DANCE, - READY_IN_DANCE, - FINISHED, - LOCKED, - READY_LOCKED, - RESTART, - IN_ONE_SHOT -}; - -struct Chord { - uint32_t keycodes_hash; - uint8_t pseudolayer; - uint8_t* state; - uint8_t* counter; - uint16_t value1; - uint8_t value2; - void (*function) (const struct Chord*); -}; - -uint8_t current_pseudolayer = DEFAULT_PSEUDOLAYER; -bool lock_next = false; -uint16_t chord_timer = 0; -uint16_t dance_timer = 0; -bool autoshift_mode = true; -uint8_t keycode_index = 0; -uint8_t command_mode = 0; -uint8_t command_ind = 0; -bool in_leader_mode = false; -uint8_t leader_ind = 0; -uint16_t leader_timer = 0; -uint8_t dynamic_macro_mode = false; -uint8_t dynamic_macro_ind = 0; -bool a_key_went_through = false; -struct Chord* last_chord = NULL; - -bool handle_US_ANSI_shifted_keys(int16_t keycode, bool in) { - bool is_US_ANSI_shifted = true; - - int16_t regular_keycode = KC_NO; - switch (keycode) { - case KC_TILDE: - regular_keycode = KC_GRAVE; - break; - case KC_EXCLAIM: - regular_keycode = KC_1; - break; - case KC_AT: - regular_keycode = KC_2; - break; - case KC_HASH: - regular_keycode = KC_3; - break; - case KC_DOLLAR: - regular_keycode = KC_4; - break; - case KC_PERCENT: - regular_keycode = KC_5; - break; - case KC_CIRCUMFLEX: - regular_keycode = KC_6; - break; - case KC_AMPERSAND: - regular_keycode = KC_7; - break; - case KC_ASTERISK: - regular_keycode = KC_8; - break; - case KC_LEFT_PAREN: - regular_keycode = KC_9; - break; - case KC_RIGHT_PAREN: - regular_keycode = KC_0; - break; - case KC_UNDERSCORE: - regular_keycode = KC_MINUS; - break; - case KC_PLUS: - regular_keycode = KC_EQUAL; - break; - case KC_LEFT_CURLY_BRACE: - regular_keycode = KC_LEFT_BRACKET; - break; - case KC_RIGHT_CURLY_BRACE: - regular_keycode = KC_RIGHT_BRACKET; - break; - case KC_PIPE: - regular_keycode = KC_BACKSLASH; - break; - case KC_COLON: - regular_keycode = KC_SEMICOLON; - break; - case KC_DOUBLE_QUOTE: - regular_keycode = KC_QUOTE; - break; - case KC_LEFT_ANGLE_BRACKET: - regular_keycode = KC_COMMA; - break; - case KC_RIGHT_ANGLE_BRACKET: - regular_keycode = KC_DOT; - break; - case KC_QUESTION: - regular_keycode = KC_SLASH; - break; - default: - is_US_ANSI_shifted = false; - } - if (is_US_ANSI_shifted) { - if (in) { - register_code(KC_LSFT); - register_code(regular_keycode); - } else { - unregister_code(regular_keycode); - unregister_code(KC_LSFT); - } - } - return is_US_ANSI_shifted; -} - -void key_in(int16_t keycode) { - if (command_mode == 1 && command_ind < COMMAND_MAX_LENGTH) { - command_buffer[command_ind] = keycode; - command_ind++; - a_key_went_through = true; - } else if (in_leader_mode && leader_ind < LEADER_MAX_LENGTH) { - leader_buffer[leader_ind] = keycode; - leader_ind++; - a_key_went_through = true; - } else if (dynamic_macro_mode && dynamic_macro_ind < DYNAMIC_MACRO_MAX_LENGTH) { - dynamic_macro_buffer[dynamic_macro_ind] = keycode; - dynamic_macro_ind++; - a_key_went_through = true; - } else { - if (!handle_US_ANSI_shifted_keys(keycode, true)) { - register_code(keycode); - } - send_keyboard_report(); - a_key_went_through = true; - } -} - -void key_out(int16_t keycode) { - if (command_mode == 0) { - if (!handle_US_ANSI_shifted_keys(keycode, false)) { - if (command_mode == 0 && in_leader_mode == false && dynamic_macro_mode == false) { - unregister_code(keycode); - } - } - send_keyboard_report(); - } -} - -void tap_key(int16_t keycode) { - key_in(keycode); - wait_ms(TAP_TIMEOUT); - key_out(keycode); -} -const char * const strings[] PROGMEM = { - -}; -void single_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - key_in(self->value1); - break; - case DEACTIVATED: - key_out(self->value1); - *self->state = IDLE; - break; - case RESTART: - key_out(self->value1); - break; - default: - break; - } -} - -void key_layer_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value2; - a_key_went_through = false; - break; - case DEACTIVATED: - case RESTART: - if (!a_key_went_through) { - tap_key(self->value1); - } - current_pseudolayer = self->pseudolayer; - *self->state = IDLE; // does not have effect if the state was RESTART - break; - default: - break; - } -} - -void key_mod_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - key_in(self->value2); - a_key_went_through = false; - break; - case DEACTIVATED: - case RESTART: - key_out(self->value2); - if (!a_key_went_through) { - tap_key(self->value1); - } - *self->state = IDLE; // does not have effect if the state was RESTART - break; - default: - break; - } -} - -void key_key_dance(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - tap_key(self->value1); - *self->state = IDLE; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - key_in(self->value2); - break; - case RESTART: - key_out(self->value2); - break; - default: - break; - } -} - -void autoshift_dance_impl(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - *self->counter = 0; - break; - case DEACTIVATED: - case RESTART: - tap_key(self->value1); - *self->state = IDLE; - break; - case FINISHED_FROM_ACTIVE: - if (*self->counter == (LONG_PRESS_MULTIPLIER - 2)) { - key_in(KC_LSFT); - tap_key(self->value1); - key_out(KC_LSFT); - *self->state = IDLE; - // the skip to IDLE is usually just a lag optimization, - // in this case it has a logic function, on a short - // press (still longer than a tap) the key does not get shifted - } else { - *self->counter += 1; - *self->state = PRESS_FROM_ACTIVE; - dance_timer = timer_read(); - } - break; - default: - break; - } -} - -void autoshift_dance(const struct Chord* self) { - if (autoshift_mode) { - autoshift_dance_impl(self); - } else { - single_dance(self); - } -} - -void autoshift_toggle(const struct Chord* self){ - if (*self->state == ACTIVATED) { - autoshift_mode = !autoshift_mode; - *self->state = IDLE; - } -} - -void temp_pseudolayer(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value1; - break; - case DEACTIVATED: - current_pseudolayer = self->pseudolayer; - *self->state = IDLE; - break; - case RESTART: - current_pseudolayer = self->pseudolayer; - break; - default: - break; - } -} - -void temp_pseudolayer_alt(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - current_pseudolayer = self->value1; - break; - case DEACTIVATED: - current_pseudolayer = self->value2; - *self->state = IDLE; - break; - case RESTART: - current_pseudolayer = self->value2; - break; - default: - break; - } -} - -void perm_pseudolayer(const struct Chord* self) { - if (*self->state == ACTIVATED) { - current_pseudolayer = self->value1; - *self->state = IDLE; - } -} - -void switch_layer(const struct Chord* self) { - if (*self->state == ACTIVATED) { - layer_move(self->value1); - *self->state = IDLE; - } -} - -void lock(const struct Chord* self) { - if (*self->state == ACTIVATED) { - lock_next = true; - *self->state = IDLE; - } -} - -void one_shot_key(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - key_in(self->value1); - *self->state = IN_ONE_SHOT; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - key_in(self->value1); - a_key_went_through = false; - break; - case RESTART: - if (a_key_went_through) { - key_out(self->value1); - } else { - *self->state = IN_ONE_SHOT; - } - default: - break; - } -} - -void one_shot_layer(const struct Chord* self) { - switch (*self->state) { - case ACTIVATED: - break; - case DEACTIVATED: - current_pseudolayer = self->value1; - *self->state = IN_ONE_SHOT; - break; - case FINISHED: - case PRESS_FROM_ACTIVE: - current_pseudolayer = self->value1; - a_key_went_through = false; - break; - case RESTART: - if (a_key_went_through) { - current_pseudolayer = self->pseudolayer; - } else { - *self->state = IN_ONE_SHOT; - } - default: - break; - } -} - -void command(const struct Chord* self) { - if (*self->state == ACTIVATED) { - command_mode++; - *self->state = IDLE; - } -} - -bool identical(uint16_t* buffer1, uint16_t* buffer2) { - bool same = true; - for (int i = 0; i < LEADER_MAX_LENGTH; i++) { - same = same && (buffer1[i] == buffer2[i]); - } - return same; -} - -void leader(const struct Chord* self) { - if (*self->state == ACTIVATED) { - in_leader_mode = true; - *self->state = IDLE; - } -} - -void dynamic_macro_record(const struct Chord* self) { - if (*self->state == ACTIVATED) { - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - dynamic_macro_buffer[i] = 0; - } - dynamic_macro_mode = true; - *self->state = IDLE; - } -} - -void dynamic_macro_next(const struct Chord* self) { - if (*self->state == ACTIVATED) { - if (dynamic_macro_mode && dynamic_macro_ind < DYNAMIC_MACRO_MAX_LENGTH) { - dynamic_macro_buffer[dynamic_macro_ind] = 0; - dynamic_macro_ind++; - } - *self->state = IDLE; - } -} - -void dynamic_macro_end(const struct Chord* self) { - if (*self->state == ACTIVATED) { - if (dynamic_macro_mode) { - dynamic_macro_mode = false; - } - *self->state = IDLE; - } -} - -void dynamic_macro_play(const struct Chord* self) { - if (*self->state == ACTIVATED) { - int ind_start = 0; - while (ind_start < DYNAMIC_MACRO_MAX_LENGTH) { - for (int i = ind_start; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - if (dynamic_macro_buffer[i] == 0) { - break; - } - register_code(dynamic_macro_buffer[i]); - } - send_keyboard_report(); - wait_ms(TAP_TIMEOUT); - for (int i = ind_start; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - if (dynamic_macro_buffer[i] == 0) { - ind_start = i + 1; - break; - } - unregister_code(dynamic_macro_buffer[i]); - } - send_keyboard_report(); - } - *self->state = IDLE; - } -} - -void string_in(const struct Chord* self) { - if (*self->state == ACTIVATED) { - char buffer[STRING_MAX_LENGTH]; - strcpy_P(buffer, (char*)pgm_read_word(&(strings[self->value1]))); - send_string(buffer); - } -} - -void clear(const struct Chord* self); - -void reset_keyboard_kb(void){ -#ifdef WATCHDOG_ENABLE - MCUSR = 0; - wdt_disable(); - wdt_reset(); -#endif - reset_keyboard(); -} - -void reset(const struct Chord* self) { - if (*self->state == ACTIVATED) { - reset_keyboard_kb(); - } -} - -uint8_t state_0 = IDLE; -const struct Chord chord_0 PROGMEM = {H_TOP1 + H_TOP12 + H_BOT1 + H_BOT12, ALWAYS_ON, &state_0, NULL, 0, 0, clear}; -uint8_t state_1 = IDLE; -const struct Chord chord_1 PROGMEM = {H_TOP6 + H_TOP7 + H_BOT6 + H_BOT7, ALWAYS_ON, &state_1, NULL, 0, 0, command}; -uint8_t state_2 = IDLE; -const struct Chord chord_2 PROGMEM = {H_TOP1, QWERTY, &state_2, NULL, KC_ESC, 0, single_dance}; -uint8_t state_3 = IDLE; -const struct Chord chord_3 PROGMEM = {H_TOP2, QWERTY, &state_3, NULL, KC_Q, 0, single_dance}; -uint8_t state_4 = IDLE; -const struct Chord chord_4 PROGMEM = {H_TOP3, QWERTY, &state_4, NULL, KC_W, 0, single_dance}; -uint8_t state_5 = IDLE; -const struct Chord chord_5 PROGMEM = {H_TOP4, QWERTY, &state_5, NULL, KC_E, 0, single_dance}; -uint8_t state_6 = IDLE; -const struct Chord chord_6 PROGMEM = {H_TOP5, QWERTY, &state_6, NULL, KC_R, 0, single_dance}; -uint8_t state_7 = IDLE; -const struct Chord chord_7 PROGMEM = {H_TOP6, QWERTY, &state_7, NULL, KC_T, 0, single_dance}; -uint8_t state_8 = IDLE; -const struct Chord chord_8 PROGMEM = {H_TOP7, QWERTY, &state_8, NULL, KC_Y, 0, single_dance}; -uint8_t state_9 = IDLE; -const struct Chord chord_9 PROGMEM = {H_TOP8, QWERTY, &state_9, NULL, KC_U, 0, single_dance}; -uint8_t state_10 = IDLE; -const struct Chord chord_10 PROGMEM = {H_TOP9, QWERTY, &state_10, NULL, KC_I, 0, single_dance}; -uint8_t state_11 = IDLE; -const struct Chord chord_11 PROGMEM = {H_TOP10, QWERTY, &state_11, NULL, KC_O, 0, single_dance}; -uint8_t state_12 = IDLE; -const struct Chord chord_12 PROGMEM = {H_TOP11, QWERTY, &state_12, NULL, KC_P, 0, single_dance}; -uint8_t state_13 = IDLE; -const struct Chord chord_13 PROGMEM = {H_TOP12, QWERTY, &state_13, NULL, KC_BACKSLASH, 0, single_dance}; -uint8_t state_14 = IDLE; -const struct Chord chord_14 PROGMEM = {H_TOP1 + H_BOT1, QWERTY, &state_14, NULL, KC_INS, 0, single_dance}; -uint8_t state_15 = IDLE; -const struct Chord chord_15 PROGMEM = {H_TOP2 + H_BOT2, QWERTY, &state_15, NULL, KC_A, 0, single_dance}; -uint8_t state_16 = IDLE; -uint8_t counter_16 = 0; -const struct Chord chord_16 PROGMEM = {H_TOP3 + H_BOT3, QWERTY, &state_16, &counter_16, KC_S, KC_LALT, key_key_dance}; -uint8_t state_17 = IDLE; -const struct Chord chord_17 PROGMEM = {H_TOP4 + H_BOT4, QWERTY, &state_17, NULL, KC_D, KC_LCTL, key_mod_dance}; -uint8_t state_18 = IDLE; -const struct Chord chord_18 PROGMEM = {H_TOP5 + H_BOT5, QWERTY, &state_18, NULL, KC_F, KC_LSFT, key_mod_dance}; -uint8_t state_19 = IDLE; -uint8_t counter_19 = 0; -const struct Chord chord_19 PROGMEM = {H_TOP6 + H_BOT6, QWERTY, &state_19, &counter_19, KC_G, KC_LGUI, key_key_dance}; -uint8_t state_20 = IDLE; -uint8_t counter_20 = 0; -const struct Chord chord_20 PROGMEM = {H_TOP7 + H_BOT7, QWERTY, &state_20, &counter_20, KC_H, KC_RGUI, key_key_dance}; -uint8_t state_21 = IDLE; -const struct Chord chord_21 PROGMEM = {H_TOP8 + H_BOT8, QWERTY, &state_21, NULL, KC_J, KC_RSFT, key_mod_dance}; -uint8_t state_22 = IDLE; -const struct Chord chord_22 PROGMEM = {H_TOP9 + H_BOT9, QWERTY, &state_22, NULL, KC_K, KC_RCTL, key_mod_dance}; -uint8_t state_23 = IDLE; -uint8_t counter_23 = 0; -const struct Chord chord_23 PROGMEM = {H_TOP10 + H_BOT10, QWERTY, &state_23, &counter_23, KC_L, KC_RALT, key_key_dance}; -uint8_t state_24 = IDLE; -const struct Chord chord_24 PROGMEM = {H_TOP11 + H_BOT11, QWERTY, &state_24, NULL, KC_SEMICOLON, 0, single_dance}; -uint8_t state_25 = IDLE; -const struct Chord chord_25 PROGMEM = {H_BOT1, QWERTY, &state_25, NULL, KC_TAB, 0, single_dance}; -uint8_t state_26 = IDLE; -const struct Chord chord_26 PROGMEM = {H_BOT2, QWERTY, &state_26, NULL, KC_Z, 0, single_dance}; -uint8_t state_27 = IDLE; -const struct Chord chord_27 PROGMEM = {H_BOT3, QWERTY, &state_27, NULL, KC_X, 0, single_dance}; -uint8_t state_28 = IDLE; -const struct Chord chord_28 PROGMEM = {H_BOT4, QWERTY, &state_28, NULL, KC_C, 0, single_dance}; -uint8_t state_29 = IDLE; -const struct Chord chord_29 PROGMEM = {H_BOT5, QWERTY, &state_29, NULL, KC_V, 0, single_dance}; -uint8_t state_30 = IDLE; -const struct Chord chord_30 PROGMEM = {H_BOT6, QWERTY, &state_30, NULL, KC_B, 0, single_dance}; -uint8_t state_31 = IDLE; -const struct Chord chord_31 PROGMEM = {H_BOT7, QWERTY, &state_31, NULL, KC_N, 0, single_dance}; -uint8_t state_32 = IDLE; -const struct Chord chord_32 PROGMEM = {H_BOT8, QWERTY, &state_32, NULL, KC_M, 0, single_dance}; -uint8_t state_33 = IDLE; -const struct Chord chord_33 PROGMEM = {H_BOT9, QWERTY, &state_33, NULL, KC_COMMA, 0, single_dance}; -uint8_t state_34 = IDLE; -const struct Chord chord_34 PROGMEM = {H_BOT10, QWERTY, &state_34, NULL, KC_DOT, 0, single_dance}; -uint8_t state_35 = IDLE; -const struct Chord chord_35 PROGMEM = {H_BOT11, QWERTY, &state_35, NULL, KC_SLASH, 0, single_dance}; -uint8_t state_36 = IDLE; -const struct Chord chord_36 PROGMEM = {H_BOT12, QWERTY, &state_36, NULL, KC_QUOTE, 0, single_dance}; -uint8_t state_37 = IDLE; -const struct Chord chord_37 PROGMEM = {H_THU1, QWERTY, &state_37, NULL, KC_ENTER, 0, single_dance}; -uint8_t state_38 = IDLE; -uint8_t counter_38 = 0; -const struct Chord chord_38 PROGMEM = {H_THU2, QWERTY, &state_38, &counter_38, KC_SPC, NUM, key_layer_dance}; -uint8_t state_39 = IDLE; -uint8_t counter_39 = 0; -const struct Chord chord_39 PROGMEM = {H_THU3, QWERTY, &state_39, &counter_39, KC_BSPC, NAV, key_layer_dance}; -uint8_t state_40 = IDLE; -const struct Chord chord_40 PROGMEM = {H_THU4, QWERTY, &state_40, NULL, KC_DEL, 0, single_dance}; -uint8_t state_41 = IDLE; -uint8_t counter_41 = 0; -const struct Chord chord_41 PROGMEM = {H_THU5, QWERTY, &state_41, &counter_41, KC_SPC, FNC, key_layer_dance}; -uint8_t state_42 = IDLE; -const struct Chord chord_42 PROGMEM = {H_THU6, QWERTY, &state_42, NULL, KC_ENTER, 0, single_dance}; -uint8_t state_43 = IDLE; -const struct Chord chord_43 PROGMEM = {H_THU2 + H_THU3, QWERTY, &state_43, NULL, MOUSE, 0, temp_pseudolayer}; -uint8_t state_44 = IDLE; -const struct Chord chord_44 PROGMEM = {H_TOP1, NUM, &state_44, NULL, KC_GRAVE, 0, single_dance}; -uint8_t state_45 = IDLE; -const struct Chord chord_45 PROGMEM = {H_TOP2, NUM, &state_45, NULL, KC_1, 0, single_dance}; -uint8_t state_46 = IDLE; -const struct Chord chord_46 PROGMEM = {H_TOP3, NUM, &state_46, NULL, KC_2, 0, single_dance}; -uint8_t state_47 = IDLE; -const struct Chord chord_47 PROGMEM = {H_TOP4, NUM, &state_47, NULL, KC_3, 0, single_dance}; -uint8_t state_48 = IDLE; -const struct Chord chord_48 PROGMEM = {H_TOP5, NUM, &state_48, NULL, KC_4, 0, single_dance}; -uint8_t state_49 = IDLE; -const struct Chord chord_49 PROGMEM = {H_TOP6, NUM, &state_49, NULL, KC_5, 0, single_dance}; -uint8_t state_50 = IDLE; -const struct Chord chord_50 PROGMEM = {H_TOP7, NUM, &state_50, NULL, KC_6, 0, single_dance}; -uint8_t state_51 = IDLE; -const struct Chord chord_51 PROGMEM = {H_TOP8, NUM, &state_51, NULL, KC_7, 0, single_dance}; -uint8_t state_52 = IDLE; -const struct Chord chord_52 PROGMEM = {H_TOP9, NUM, &state_52, NULL, KC_8, 0, single_dance}; -uint8_t state_53 = IDLE; -const struct Chord chord_53 PROGMEM = {H_TOP10, NUM, &state_53, NULL, KC_9, 0, single_dance}; -uint8_t state_54 = IDLE; -const struct Chord chord_54 PROGMEM = {H_TOP11, NUM, &state_54, NULL, KC_0, 0, single_dance}; -uint8_t state_55 = IDLE; -const struct Chord chord_55 PROGMEM = {H_TOP12, NUM, &state_55, NULL, KC_MINUS, 0, single_dance}; -uint8_t state_56 = IDLE; -const struct Chord chord_56 PROGMEM = {H_TOP3 + H_BOT3, NUM, &state_56, NULL, KC_LALT, 0, single_dance}; -uint8_t state_57 = IDLE; -const struct Chord chord_57 PROGMEM = {H_TOP4 + H_BOT4, NUM, &state_57, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_58 = IDLE; -const struct Chord chord_58 PROGMEM = {H_TOP5 + H_BOT5, NUM, &state_58, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_59 = IDLE; -const struct Chord chord_59 PROGMEM = {H_TOP6 + H_BOT6, NUM, &state_59, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_60 = IDLE; -const struct Chord chord_60 PROGMEM = {H_TOP7 + H_BOT7, NUM, &state_60, NULL, KC_RGUI, 0, single_dance}; -uint8_t state_61 = IDLE; -const struct Chord chord_61 PROGMEM = {H_TOP8 + H_BOT8, NUM, &state_61, NULL, KC_RSFT, 0, single_dance}; -uint8_t state_62 = IDLE; -const struct Chord chord_62 PROGMEM = {H_TOP9 + H_BOT9, NUM, &state_62, NULL, KC_RCTL, 0, single_dance}; -uint8_t state_63 = IDLE; -const struct Chord chord_63 PROGMEM = {H_TOP10 + H_BOT10, NUM, &state_63, NULL, KC_RALT, 0, single_dance}; -uint8_t state_64 = IDLE; -const struct Chord chord_64 PROGMEM = {H_BOT12, NUM, &state_64, NULL, KC_EQUAL, 0, single_dance}; -uint8_t state_65 = IDLE; -const struct Chord chord_65 PROGMEM = {H_TOP2, FNC, &state_65, NULL, KC_F1, 0, single_dance}; -uint8_t state_66 = IDLE; -const struct Chord chord_66 PROGMEM = {H_TOP3, FNC, &state_66, NULL, KC_F2, 0, single_dance}; -uint8_t state_67 = IDLE; -const struct Chord chord_67 PROGMEM = {H_TOP4, FNC, &state_67, NULL, KC_F3, 0, single_dance}; -uint8_t state_68 = IDLE; -const struct Chord chord_68 PROGMEM = {H_TOP5, FNC, &state_68, NULL, KC_F4, 0, single_dance}; -uint8_t state_69 = IDLE; -const struct Chord chord_69 PROGMEM = {H_TOP6, FNC, &state_69, NULL, KC_F5, 0, single_dance}; -uint8_t state_70 = IDLE; -const struct Chord chord_70 PROGMEM = {H_TOP7, FNC, &state_70, NULL, KC_F6, 0, single_dance}; -uint8_t state_71 = IDLE; -const struct Chord chord_71 PROGMEM = {H_TOP8, FNC, &state_71, NULL, KC_F7, 0, single_dance}; -uint8_t state_72 = IDLE; -const struct Chord chord_72 PROGMEM = {H_TOP9, FNC, &state_72, NULL, KC_F8, 0, single_dance}; -uint8_t state_73 = IDLE; -const struct Chord chord_73 PROGMEM = {H_TOP10, FNC, &state_73, NULL, KC_F9, 0, single_dance}; -uint8_t state_74 = IDLE; -const struct Chord chord_74 PROGMEM = {H_TOP11, FNC, &state_74, NULL, KC_F10, 0, single_dance}; -uint8_t state_75 = IDLE; -const struct Chord chord_75 PROGMEM = {H_TOP12, FNC, &state_75, NULL, KC_F11, 0, single_dance}; -uint8_t state_76 = IDLE; -const struct Chord chord_76 PROGMEM = {H_TOP3 + H_BOT3, FNC, &state_76, NULL, KC_LALT, 0, single_dance}; -uint8_t state_77 = IDLE; -const struct Chord chord_77 PROGMEM = {H_TOP4 + H_BOT4, FNC, &state_77, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_78 = IDLE; -const struct Chord chord_78 PROGMEM = {H_TOP5 + H_BOT5, FNC, &state_78, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_79 = IDLE; -const struct Chord chord_79 PROGMEM = {H_TOP6 + H_BOT6, FNC, &state_79, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_80 = IDLE; -const struct Chord chord_80 PROGMEM = {H_TOP7 + H_BOT7, FNC, &state_80, NULL, KC_RGUI, 0, single_dance}; -uint8_t state_81 = IDLE; -const struct Chord chord_81 PROGMEM = {H_TOP8 + H_BOT8, FNC, &state_81, NULL, KC_RSFT, 0, single_dance}; -uint8_t state_82 = IDLE; -const struct Chord chord_82 PROGMEM = {H_TOP9 + H_BOT9, FNC, &state_82, NULL, KC_RCTL, 0, single_dance}; -uint8_t state_83 = IDLE; -const struct Chord chord_83 PROGMEM = {H_TOP10 + H_BOT10, FNC, &state_83, NULL, KC_RALT, 0, single_dance}; -uint8_t state_84 = IDLE; -const struct Chord chord_84 PROGMEM = {H_BOT12, FNC, &state_84, NULL, KC_F12, 0, single_dance}; -uint8_t state_85 = IDLE; -const struct Chord chord_85 PROGMEM = {H_TOP8, NAV, &state_85, NULL, KC_HOME, 0, single_dance}; -uint8_t state_86 = IDLE; -const struct Chord chord_86 PROGMEM = {H_TOP9, NAV, &state_86, NULL, KC_UP, 0, single_dance}; -uint8_t state_87 = IDLE; -const struct Chord chord_87 PROGMEM = {H_TOP10, NAV, &state_87, NULL, KC_END, 0, single_dance}; -uint8_t state_88 = IDLE; -const struct Chord chord_88 PROGMEM = {H_TOP11, NAV, &state_88, NULL, KC_PGUP, 0, single_dance}; -uint8_t state_89 = IDLE; -const struct Chord chord_89 PROGMEM = {H_TOP3 + H_BOT3, NAV, &state_89, NULL, KC_LALT, 0, single_dance}; -uint8_t state_90 = IDLE; -const struct Chord chord_90 PROGMEM = {H_TOP4 + H_BOT4, NAV, &state_90, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_91 = IDLE; -const struct Chord chord_91 PROGMEM = {H_TOP5 + H_BOT5, NAV, &state_91, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_92 = IDLE; -const struct Chord chord_92 PROGMEM = {H_TOP6 + H_BOT6, NAV, &state_92, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_93 = IDLE; -const struct Chord chord_93 PROGMEM = {H_BOT8, NAV, &state_93, NULL, KC_LEFT, 0, single_dance}; -uint8_t state_94 = IDLE; -const struct Chord chord_94 PROGMEM = {H_BOT9, NAV, &state_94, NULL, KC_DOWN, 0, single_dance}; -uint8_t state_95 = IDLE; -const struct Chord chord_95 PROGMEM = {H_BOT10, NAV, &state_95, NULL, KC_RIGHT, 0, single_dance}; -uint8_t state_96 = IDLE; -const struct Chord chord_96 PROGMEM = {H_BOT11, NAV, &state_96, NULL, KC_PGDN, 0, single_dance}; -uint8_t state_97 = IDLE; -const struct Chord chord_97 PROGMEM = {H_TOP8, MOUSE, &state_97, NULL, KC_BTN1, 0, single_dance}; -uint8_t state_98 = IDLE; -const struct Chord chord_98 PROGMEM = {H_TOP9, MOUSE, &state_98, NULL, KC_MS_U, 0, single_dance}; -uint8_t state_99 = IDLE; -const struct Chord chord_99 PROGMEM = {H_TOP10, MOUSE, &state_99, NULL, KC_BTN2, 0, single_dance}; -uint8_t state_100 = IDLE; -const struct Chord chord_100 PROGMEM = {H_TOP11, MOUSE, &state_100, NULL, KC_WH_U, 0, single_dance}; -uint8_t state_101 = IDLE; -const struct Chord chord_101 PROGMEM = {H_TOP3 + H_BOT3, MOUSE, &state_101, NULL, KC_LALT, 0, single_dance}; -uint8_t state_102 = IDLE; -const struct Chord chord_102 PROGMEM = {H_TOP4 + H_BOT4, MOUSE, &state_102, NULL, KC_LCTL, 0, single_dance}; -uint8_t state_103 = IDLE; -const struct Chord chord_103 PROGMEM = {H_TOP5 + H_BOT5, MOUSE, &state_103, NULL, KC_LSFT, 0, single_dance}; -uint8_t state_104 = IDLE; -const struct Chord chord_104 PROGMEM = {H_TOP6 + H_BOT6, MOUSE, &state_104, NULL, KC_LGUI, 0, single_dance}; -uint8_t state_105 = IDLE; -const struct Chord chord_105 PROGMEM = {H_BOT8, MOUSE, &state_105, NULL, KC_MS_L, 0, single_dance}; -uint8_t state_106 = IDLE; -const struct Chord chord_106 PROGMEM = {H_BOT9, MOUSE, &state_106, NULL, KC_MS_D, 0, single_dance}; -uint8_t state_107 = IDLE; -const struct Chord chord_107 PROGMEM = {H_BOT10, MOUSE, &state_107, NULL, KC_MS_R, 0, single_dance}; -uint8_t state_108 = IDLE; -const struct Chord chord_108 PROGMEM = {H_BOT11, MOUSE, &state_108, NULL, KC_WH_D, 0, single_dance}; - -const struct Chord* const list_of_chords[] PROGMEM = { - &chord_0, &chord_1, &chord_2, &chord_3, &chord_4, &chord_5, &chord_6, &chord_7, &chord_8, &chord_9, &chord_10, &chord_11, &chord_12, &chord_13, &chord_14, &chord_15, &chord_16, &chord_17, &chord_18, &chord_19, &chord_20, &chord_21, &chord_22, &chord_23, &chord_24, &chord_25, &chord_26, &chord_27, &chord_28, &chord_29, &chord_30, &chord_31, &chord_32, &chord_33, &chord_34, &chord_35, &chord_36, &chord_37, &chord_38, &chord_39, &chord_40, &chord_41, &chord_42, &chord_43, &chord_44, &chord_45, &chord_46, &chord_47, &chord_48, &chord_49, &chord_50, &chord_51, &chord_52, &chord_53, &chord_54, &chord_55, &chord_56, &chord_57, &chord_58, &chord_59, &chord_60, &chord_61, &chord_62, &chord_63, &chord_64, &chord_65, &chord_66, &chord_67, &chord_68, &chord_69, &chord_70, &chord_71, &chord_72, &chord_73, &chord_74, &chord_75, &chord_76, &chord_77, &chord_78, &chord_79, &chord_80, &chord_81, &chord_82, &chord_83, &chord_84, &chord_85, &chord_86, &chord_87, &chord_88, &chord_89, &chord_90, &chord_91, &chord_92, &chord_93, &chord_94, &chord_95, &chord_96, &chord_97, &chord_98, &chord_99, &chord_100, &chord_101, &chord_102, &chord_103, &chord_104, &chord_105, &chord_106, &chord_107, &chord_108 -}; - -const uint16_t** const leader_triggers PROGMEM = NULL; -void (*leader_functions[]) (void) = {}; - -#define NUMBER_OF_CHORDS 109 -#define NUMBER_OF_LEADER_COMBOS 0 - -bool are_hashed_keycodes_in_sound(HASH_TYPE keycodes_hash, HASH_TYPE sound) { - return (keycodes_hash & sound) == keycodes_hash; -} - -uint8_t keycode_to_index(uint16_t keycode) { - return keycode - FIRST_INTERNAL_KEYCODE; -} - -void sound_keycode_array(uint16_t keycode) { - uint8_t index = keycode_to_index(keycode); - keycode_index++; - keycodes_buffer_array[index] = keycode_index; -} - -void silence_keycode_hash_array(HASH_TYPE keycode_hash) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - bool index_in_hash = ((HASH_TYPE) 1 << i) & keycode_hash; - if (index_in_hash) { - uint8_t current_val = keycodes_buffer_array[i]; - keycodes_buffer_array[i] = 0; - for (int j = 0; j < NUMBER_OF_KEYS; j++) { - if (keycodes_buffer_array[j] > current_val) { - keycodes_buffer_array[j]--; - } - } - keycode_index--; - } - } -} - -bool are_hashed_keycodes_in_array(HASH_TYPE keycode_hash) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - bool index_in_hash = ((HASH_TYPE) 1 << i) & keycode_hash; - bool index_in_array = (bool) keycodes_buffer_array[i]; - if (index_in_hash && !index_in_array) { - return false; - } - } - return true; -} - -void kill_one_shots(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == IN_ONE_SHOT) { - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - } - } -} - -void process_finished_dances(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == ACTIVATED) { - *chord->state = PRESS_FROM_ACTIVE; - chord->function(chord); - if (a_key_went_through) { - kill_one_shots(); - } - dance_timer = timer_read(); - } else if (*chord->state == IDLE_IN_DANCE) { - *chord->state = FINISHED; - chord->function(chord); - if (*chord->state == FINISHED) { - *chord->state = RESTART; - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - } - } else if (*chord->state == PRESS_FROM_ACTIVE) { - *chord->state = FINISHED_FROM_ACTIVE; - chord->function(chord); - if (a_key_went_through) { - kill_one_shots(); - } - dance_timer = timer_read(); - } - } -} - -uint8_t keycodes_buffer_array_min(uint8_t* first_keycode_index) { - for (int i = 0; i < NUMBER_OF_KEYS; i++) { - if (keycodes_buffer_array[i] == 1) { - if (first_keycode_index != NULL) { - *first_keycode_index = (uint8_t) i; - } - return 1; - } - } - return 0; -} - -void remove_subchords(void) { - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (!(*chord->state == READY || *chord->state == READY_IN_DANCE || *chord->state == READY_LOCKED)) { - continue; - } - - struct Chord chord_storage_2; - struct Chord* chord_ptr_2; - struct Chord* chord_2; - for (int j = 0; j < NUMBER_OF_CHORDS; j++) { - if (i == j) {continue;} - - chord_ptr_2 = (struct Chord*) pgm_read_word (&list_of_chords[j]); - memcpy_P(&chord_storage_2, chord_ptr_2, sizeof(struct Chord)); - chord_2 = &chord_storage_2; - - if (are_hashed_keycodes_in_sound(chord_2->keycodes_hash, chord->keycodes_hash)) { - if (*chord_2->state == READY) { - *chord_2->state = IDLE; - } - if (*chord_2->state == READY_IN_DANCE) { - *chord_2->state = IDLE_IN_DANCE; - } - if (*chord_2->state == READY_LOCKED) { - *chord_2->state = LOCKED; - } - } - } - } -} - -void process_ready_chords(void) { - uint8_t first_keycode_index = 0; - while (keycodes_buffer_array_min(&first_keycode_index)) { - // find ready chords - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - // if the chord does not contain the first keycode - bool contains_first_keycode = ((uint32_t) 1 << first_keycode_index) & chord->keycodes_hash; - if (!contains_first_keycode) { - continue; - } - - if (!are_hashed_keycodes_in_array(chord->keycodes_hash)){ - continue; - } - - if (*chord->state == LOCKED) { - *chord->state = READY_LOCKED; - continue; - } - - if (!(chord->pseudolayer == current_pseudolayer || chord->pseudolayer == ALWAYS_ON)) { - continue; - } - - if (*chord->state == IDLE) { - *chord->state = READY; - continue; - } - - if (*chord->state == IDLE_IN_DANCE) { - *chord->state = READY_IN_DANCE; - } - } - - // remove subchords - remove_subchords(); - - // execute logic - // this should be only one chord - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - if (*chord->state == READY_LOCKED) { - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - break; - } - - if (*chord->state == READY || *chord->state == READY_IN_DANCE) { - if (last_chord && last_chord != chord) { - process_finished_dances(); - } - - bool lock_next_prev_state = lock_next; - - *chord->state = ACTIVATED; - chord->function(chord); - dance_timer = timer_read(); - - if (lock_next && lock_next == lock_next_prev_state) { - lock_next = false; - *chord->state = PRESS_FROM_ACTIVE; - chord->function(chord); - if (*chord->state == PRESS_FROM_ACTIVE) { - *chord->state = LOCKED; - } - if (a_key_went_through) { - kill_one_shots(); - } - } - break; - } - } - - // silence notes - silence_keycode_hash_array(chord->keycodes_hash); - } -} - -void deactivate_active_chords(uint16_t keycode) { - HASH_TYPE hash = (HASH_TYPE)1 << (keycode - SAFE_RANGE); - bool broken; - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - broken = are_hashed_keycodes_in_sound(hash, chord->keycodes_hash); - if (!broken) { - continue; - } - - switch (*chord->state) { - case ACTIVATED: - *chord->state = DEACTIVATED; - chord->function(chord); - - if (*chord->state == DEACTIVATED) { - dance_timer = timer_read(); - *chord->state = IDLE_IN_DANCE; - } - if (*chord->state != IN_ONE_SHOT) { - kill_one_shots(); - } - break; - case PRESS_FROM_ACTIVE: - case FINISHED_FROM_ACTIVE: - *chord->state = RESTART; - chord->function(chord); - if (*chord->state == RESTART) { - *chord->state = IDLE; - } - kill_one_shots(); - break; - default: - break; - } - } - -} - -void process_command(void) { - command_mode = 0; - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - if (command_buffer[i]) { - register_code(command_buffer[i]); - } - send_keyboard_report(); - } - wait_ms(TAP_TIMEOUT); - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - if (command_buffer[i]) { - unregister_code(command_buffer[i]); - } - send_keyboard_report(); - } - for (int i = 0; i < COMMAND_MAX_LENGTH; i++) { - command_buffer[i] = 0; - } - command_ind = 0; -} - -void process_leader(void) { - in_leader_mode = false; - for (int i = 0; i < NUMBER_OF_LEADER_COMBOS; i++) { - uint16_t trigger[LEADER_MAX_LENGTH]; - memcpy_P(trigger, leader_triggers[i], LEADER_MAX_LENGTH * sizeof(uint16_t)); - - if (identical(leader_buffer, trigger)) { - (*leader_functions[i])(); - break; - } - } - for (int i = 0; i < LEADER_MAX_LENGTH; i++) { - leader_buffer[i] = 0; - } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (keycode < FIRST_INTERNAL_KEYCODE || keycode > LAST_INTERNAL_KEYCODE) { - return true; - } - - if (record->event.pressed) { - sound_keycode_array(keycode); - } else { - process_ready_chords(); - deactivate_active_chords(keycode); - } - chord_timer = timer_read(); - leader_timer = timer_read(); - - return false; -} - -void matrix_scan_user(void) { - bool chord_timer_expired = timer_elapsed(chord_timer) > CHORD_TIMEOUT; - if (chord_timer_expired && keycodes_buffer_array_min(NULL)) { - process_ready_chords(); - } - - bool dance_timer_expired = timer_elapsed(dance_timer) > DANCE_TIMEOUT; - if (dance_timer_expired) { // would love to have && in_dance but not sure how - process_finished_dances(); - } - - bool in_command_mode = command_mode == 2; - if (in_command_mode) { - process_command(); - } - - bool leader_timer_expired = timer_elapsed(leader_timer) > LEADER_TIMEOUT; - if (leader_timer_expired && in_leader_mode) { - process_leader(); - } - -} - -void clear(const struct Chord* self) { - if (*self->state == ACTIVATED) { - // kill all chords - struct Chord chord_storage; - struct Chord* chord_ptr; - struct Chord* chord; - - for (int i = 0; i < NUMBER_OF_CHORDS; i++) { - chord_ptr = (struct Chord*) pgm_read_word (&list_of_chords[i]); - memcpy_P(&chord_storage, chord_ptr, sizeof(struct Chord)); - chord = &chord_storage; - - *chord->state = IDLE; - - if (chord->counter) { - *chord->counter = 0; - } - } - - // clear keyboard - clear_keyboard(); - send_keyboard_report(); - - // switch to default pseudolayer - current_pseudolayer = DEFAULT_PSEUDOLAYER; - - // clear all keyboard states - lock_next = false; - autoshift_mode = true; - command_mode = 0; - in_leader_mode = false; - leader_ind = 0; - dynamic_macro_mode = false; - a_key_went_through = false; - - for (int i = 0; i < DYNAMIC_MACRO_MAX_LENGTH; i++) { - dynamic_macro_buffer[i] = 0; - } - } -} \ No newline at end of file diff --git a/keyboards/gboards/georgi/keymaps/dennytom/keymap_def.json b/keyboards/gboards/georgi/keymaps/dennytom/keymap_def.json deleted file mode 100644 index 232ccafadf44..000000000000 --- a/keyboards/gboards/georgi/keymaps/dennytom/keymap_def.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "keys": [ - "TOP1", "TOP2", "TOP3", "TOP4", "TOP5", "TOP6", "TOP7", "TOP8", "TOP9", "TOP10", "TOP11", "TOP12", - "BOT1", "BOT2", "BOT3", "BOT4", "BOT5", "BOT6", "BOT7", "BOT8", "BOT9", "BOT10", "BOT11", "BOT12", - "THU1", "THU2", "THU3", "THU4", "THU5", "THU6" - ], - "parameters": { - "layout_function_name": "LAYOUT_georgi", - "chord_timeout": 100, - "dance_timeout": 200, - "leader_timeout": 750, - "tap_timeout": 50, - "command_max_length": 5, - "leader_max_length": 5, - "dynamic_macro_max_length": 20, - "string_max_length": 16, - "long_press_multiplier": 3, - "default_pseudolayer": "QWERTY" - }, - "layers": [ - { - "type": "auto" - } - ], - "chord_sets": [ - { - "name": "rows", - "chords": - [ - ["TOP1"], ["TOP2"], ["TOP3"], ["TOP4"], ["TOP5"], ["TOP6"], ["TOP7"], ["TOP8"], ["TOP9"], ["TOP10"], ["TOP11"], ["TOP12"], - ["TOP1", "BOT1"], ["TOP2", "BOT2"], ["TOP3", "BOT3"], ["TOP4", "BOT4"], ["TOP5", "BOT5"], ["TOP6", "BOT6"], ["TOP7", "BOT7"], ["TOP8", "BOT8"], ["TOP9", "BOT9"], ["TOP10", "BOT10"], ["TOP11", "BOT11"], ["TOP12", "BOT12"], - ["BOT1"], ["BOT2"], ["BOT3"], ["BOT4"], ["BOT5"], ["BOT6"], ["BOT7"], ["BOT8"], ["BOT9"], ["BOT10"], ["BOT11"], ["BOT12"], - ["THU1"], ["THU2"], ["THU3"], ["THU4"], ["THU5"], ["THU6"] - ] - } - ], - "pseudolayers": [ - { - "name": "ALWAYS_ON", - "chords": [ - { - "type": "visual", - "chord": [ - "X", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "X", - "X", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "X", - " ", " ", " ", " ", " ", " " - ], - "keycode": "CLEAR_KB" - }, - { - "type": "visual", - "chord": [ - " ", " ", " ", " ", " ", "X", "X", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", "X", "X", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " " - ], - "keycode": "CMD" - } - ] - }, - { - "name": "QWERTY", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - "ESC", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "\\", - "INS", "A", "KK(S, LALT)", "KM(D, LCTL)", "KM(F, LSFT)", "KK(G, LGUI)", "KK(H, RGUI)", "KM(J, RSFT)", "KM(K, RCTL)", "KK(L, RALT)", ";", " ", - "TAB", "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/", "'", - "","","","","","" - ] - }, - { - "type": "visual_array", - "keys": ["THU1", "THU2", "THU3", "THU4", "THU5", "THU6"], - "dictionary": [ - ["X", " ", " ", " ", " ", " ", "ENTER"], - [" ", "X", " ", " ", " ", " ", "KL(SPC, NUM)"], - [" ", " ", "X", " ", " ", " ", "KL(BSPC, NAV)"], - [" ", " ", " ", "X", " ", " ", "DEL"], - [" ", " ", " ", " ", "X", " ", "KL(SPC, FNC)"], - [" ", " ", " ", " ", " ", "X", "ENTER"], - [" ", "X", "X", " ", " ", " ", "MO(MOUSE)"] - ] - } - ] - }, - { - "name": "NUM", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - "`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", - " ", " ", "LALT", "LCTL", "LSFT", "LGUI", "RGUI", "RSFT", "RCTL", "RALT", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", "[", "]", "=", - " ", " ", " ", " ", " ", " " - ] - } - ] - }, - { - "name": "FNC", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", - " ", " ", "LALT", "LCTL", "LSFT", "LGUI", "RGUI", "RSFT", "RCTL", "RALT", " ", " ", - " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "F12", - " ", " ", " ", " ", " ", " " - ] - } - ] - }, - { - "name": "NAV", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", " ", " ", " ", " ", " ", " ", "HOME", "UP", "END", "PGUP", " ", - " ", " ", "LALT", "LCTL", "LSFT", "LGUI", " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", "LEFT", "DOWN", "RIGHT", "PGDN", " ", - " ", " ", " ", " ", " ", " " - ] - } - ] - }, - { - "name": "MOUSE", - "chords": [ - { - "type": "chord_set", - "set": "rows", - "keycodes": [ - " ", " ", " ", " ", " ", " ", " ", "BTN1", "MS_U", "BTN2", "WH_U", " ", - " ", " ", "LALT", "LCTL", "LSFT", "LGUI", " ", " ", " ", " ", " ", " ", - " ", " ", " ", " ", " ", " ", " ", "MS_L", "MS_D", "MS_R", "WH_D", " ", - " ", " ", " ", " ", " ", " " - ] - } - ] - } - ], - "leader_sequences": [], - "extra_code": "", - "extra_dependencies": [] -} \ No newline at end of file diff --git a/keyboards/gboards/georgi/keymaps/dennytom/rules.mk b/keyboards/gboards/georgi/keymaps/dennytom/rules.mk deleted file mode 100644 index af3726f14a99..000000000000 --- a/keyboards/gboards/georgi/keymaps/dennytom/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -MOUSEKEY_ENABLE = yes -CONSOLE_ENABLE = no diff --git a/keyboards/gboards/georgi/keymaps/minimal/keymap.c b/keyboards/gboards/georgi/keymaps/minimal/keymap.c index c4e78033bde1..2f089866b2a1 100644 --- a/keyboards/gboards/georgi/keymaps/minimal/keymap.c +++ b/keyboards/gboards/georgi/keymaps/minimal/keymap.c @@ -12,7 +12,6 @@ #include QMK_KEYBOARD_H #include "sten.h" -#include "keymap_steno.h" // Proper Layers #define FUNCT (LSD | LK | LP | LH) diff --git a/keyboards/gboards/georgi/keymaps/norman/keymap.c b/keyboards/gboards/georgi/keymaps/norman/keymap.c index 870e460e2c5b..1b53cddd8bc9 100644 --- a/keyboards/gboards/georgi/keymaps/norman/keymap.c +++ b/keyboards/gboards/georgi/keymaps/norman/keymap.c @@ -12,7 +12,6 @@ #include QMK_KEYBOARD_H #include "sten.h" -#include "keymap_steno.h" // Proper Layers #define FUNCT (LSD | LK | LP | LH) diff --git a/keyboards/gboards/georgi/rules.mk b/keyboards/gboards/georgi/rules.mk index 5980342669e0..5b63e269fa56 100644 --- a/keyboards/gboards/georgi/rules.mk +++ b/keyboards/gboards/georgi/rules.mk @@ -14,4 +14,5 @@ CUSTOM_MATRIX = yes STENO_ENABLE = yes LTO_ENABLE = yes -SRC += matrix.c i2c_master.c +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes \ No newline at end of file diff --git a/keyboards/gboards/georgi/sten.h b/keyboards/gboards/georgi/sten.h index b5aa79893eec..e4bc31ef7a5e 100644 --- a/keyboards/gboards/georgi/sten.h +++ b/keyboards/gboards/georgi/sten.h @@ -7,9 +7,6 @@ #pragma once #include "georgi.h" -#include "mousekey.h" -#include "keymap_steno.h" -#include "wait.h" extern size_t keymapsCount; // Total keymaps extern uint32_t cChord; // Current Chord diff --git a/keyboards/gboards/gergo/keymaps/colemak/rules.mk b/keyboards/gboards/gergo/keymaps/colemak/rules.mk index 3b81fdfa1bda..db8d96529218 100644 --- a/keyboards/gboards/gergo/keymaps/colemak/rules.mk +++ b/keyboards/gboards/gergo/keymaps/colemak/rules.mk @@ -18,7 +18,8 @@ DEBUG_MATRIX = no # know what you're doing. # # No touchy, capiche? -SRC += matrix.c i2c_master.c +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes ifneq ($(strip $(BALLSTEP)),) OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP)) endif diff --git a/keyboards/gboards/gergo/keymaps/default/rules.mk b/keyboards/gboards/gergo/keymaps/default/rules.mk index bc2b3cf43bdc..6f203da1bd4c 100644 --- a/keyboards/gboards/gergo/keymaps/default/rules.mk +++ b/keyboards/gboards/gergo/keymaps/default/rules.mk @@ -18,7 +18,8 @@ DEBUG_MATRIX = yes # know what you're doing. # # No touchy, capiche? -SRC += matrix.c i2c_master.c +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes ifneq ($(strip $(BALLSTEP)),) OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP)) endif diff --git a/keyboards/gboards/gergo/keymaps/drashna/keymap.c b/keyboards/gboards/gergo/keymaps/drashna/keymap.c deleted file mode 100644 index 4f7d6b5dfa92..000000000000 --- a/keyboards/gboards/gergo/keymaps/drashna/keymap.c +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" - -/* - * The `LAYOUT_gergo_base` macro is a template to allow the use of identical - * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so - * that there is no need to set them up for each layout, and modify all of - * them if I want to change them. This helps to keep consistency and ease - * of use. K## is a placeholder to pass through the individual keycodes - */ -// clang-format off -#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__) -#define LAYOUT_gergo_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_gergo_wrapper( \ - KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \ - LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(K1B), \ - OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ - KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \ - ) - -#define LAYOUT_base_wrapper(...) LAYOUT_gergo_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( - ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, - ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, - ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ - ), - [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_LOWER] = LAYOUT_gergo_wrapper( - KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, - _______, _________________LOWER_L2__________________, _______, _______, _________________LOWER_R2__________________, KC_PIPE, - _______, _________________LOWER_L3__________________, _______, _______, _______, _______, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [_RAISE] = LAYOUT_gergo_wrapper( - _______, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, - _______, _________________RAISE_L2__________________, _______, _______, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _______, _______, _______, _______, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [_ADJUST] = LAYOUT_gergo_wrapper( - QK_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, QK_BOOT, - VRSN, _________________ADJUST_L2_________________, _______, KC_NUKE, _________________ADJUST_R2_________________, EE_CLR, - _______, _________________ADJUST_L3_________________, _______, _______, _______, _______, _________________ADJUST_R3_________________, TG_MODS, - _______, _______, _______, _______, _______, _______, _______, _______ - ), - -}; - -/* Keymap template - - [SYMB] = LAYOUT_gergo_wrapper( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ - ), - - */ -// clang-format on diff --git a/keyboards/gboards/gergo/keymaps/drashna/rules.mk b/keyboards/gboards/gergo/keymaps/drashna/rules.mk deleted file mode 100644 index ec81d11e9c5f..000000000000 --- a/keyboards/gboards/gergo/keymaps/drashna/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -CONSOLE_ENABLE = no -COMMAND_ENABLE = no diff --git a/keyboards/gboards/gergo/keymaps/germ/rules.mk b/keyboards/gboards/gergo/keymaps/germ/rules.mk index 0fd941bb53dd..c100f8ab647a 100644 --- a/keyboards/gboards/gergo/keymaps/germ/rules.mk +++ b/keyboards/gboards/gergo/keymaps/germ/rules.mk @@ -18,7 +18,8 @@ DEBUG_MATRIX = no # know what you're doing. # # No touchy, capiche? -SRC += matrix.c i2c_master.c +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes ifneq ($(strip $(BALLSTEP)),) OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP)) endif diff --git a/keyboards/gboards/gergo/keymaps/gotham/rules.mk b/keyboards/gboards/gergo/keymaps/gotham/rules.mk index bc2b3cf43bdc..6f203da1bd4c 100644 --- a/keyboards/gboards/gergo/keymaps/gotham/rules.mk +++ b/keyboards/gboards/gergo/keymaps/gotham/rules.mk @@ -18,7 +18,8 @@ DEBUG_MATRIX = yes # know what you're doing. # # No touchy, capiche? -SRC += matrix.c i2c_master.c +SRC += matrix.c +I2C_DRIVER_REQUIRED = yes ifneq ($(strip $(BALLSTEP)),) OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP)) endif diff --git a/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h b/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index e86d030fd729..000000000000 --- a/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT_gergo(\ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\ -XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\ -XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX,\ - K32, K33, K34, XXX, XXX, K35, K36, K37\ -) diff --git a/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/gboards/gergo/rules.mk b/keyboards/gboards/gergo/rules.mk index 195915e43142..d789b349da8d 100644 --- a/keyboards/gboards/gergo/rules.mk +++ b/keyboards/gboards/gergo/rules.mk @@ -8,4 +8,4 @@ COMMAND_ENABLE = yes BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/gboards/gergoplex/rules.mk b/keyboards/gboards/gergoplex/rules.mk index adf5cfd2e7d7..9846c64771e2 100644 --- a/keyboards/gboards/gergoplex/rules.mk +++ b/keyboards/gboards/gergoplex/rules.mk @@ -13,4 +13,4 @@ AUDIO_ENABLE = no # Audio output CUSTOM_MATRIX = yes SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/geekboards/tester/config.h b/keyboards/geekboards/tester/config.h index 0fea806b6f9c..c71ee9f35154 100644 --- a/keyboards/geekboards/tester/config.h +++ b/keyboards/geekboards/tester/config.h @@ -55,9 +55,8 @@ // # 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 IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +# define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL # define DRIVER_1_LED_TOTAL 8 # define DRIVER_2_LED_TOTAL 0 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/geekboards/tester/tester.c b/keyboards/geekboards/tester/tester.c index 05b220250fb0..187d887d5813 100644 --- a/keyboards/geekboards/tester/tester.c +++ b/keyboards/geekboards/tester/tester.c @@ -1,6 +1,6 @@ #include "quantum.h" -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/geistmaschine/macropod/config.h b/keyboards/geistmaschine/macropod/config.h index f6dad6ebe034..e12d3b94fa4c 100644 --- a/keyboards/geistmaschine/macropod/config.h +++ b/keyboards/geistmaschine/macropod/config.h @@ -19,3 +19,6 @@ IO expander setup would allow up to 1x16 + 1 from the MCU */ #define MATRIX_ROWS 1 #define MATRIX_COLS 17 + +/* Fix for Apple Silicon Macs struggling to detect board after suspend/sleep */ +#define USB_SUSPEND_WAKEUP_DELAY 200 \ No newline at end of file diff --git a/keyboards/geistmaschine/macropod/info.json b/keyboards/geistmaschine/macropod/info.json index 886ed5acaf09..333e7c0a509e 100644 --- a/keyboards/geistmaschine/macropod/info.json +++ b/keyboards/geistmaschine/macropod/info.json @@ -15,7 +15,7 @@ "command": false, "console": false, "extrakey": true, - "mousekey": false, + "mousekey": true, "nkro": false, "encoder": true }, diff --git a/keyboards/geistmaschine/macropod/rules.mk b/keyboards/geistmaschine/macropod/rules.mk index cf2b38601e67..53d35b5bc60f 100644 --- a/keyboards/geistmaschine/macropod/rules.mk +++ b/keyboards/geistmaschine/macropod/rules.mk @@ -2,4 +2,4 @@ CUSTOM_MATRIX = lite VPATH += drivers/gpio SRC += pca9555.c matrix.c -QUANTUM_LIB_SRC += i2c_master.c \ No newline at end of file +I2C_DRIVER_REQUIRED = yes \ No newline at end of file diff --git a/keyboards/geonworks/frogmini/fmh/info.json b/keyboards/geonworks/frogmini/fmh/info.json index a8c0645a70c3..7b381bc58752 100644 --- a/keyboards/geonworks/frogmini/fmh/info.json +++ b/keyboards/geonworks/frogmini/fmh/info.json @@ -13,6 +13,9 @@ "rows": ["A3", "A2", "A1", "B8", "A7", "C0"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "i2c" + }, "processor": "STM32F401", "bootloader": "stm32-dfu", "layout_aliases": { diff --git a/keyboards/geonworks/frogmini/fmh/rules.mk b/keyboards/geonworks/frogmini/fmh/rules.mk index 1f63f8feef57..1775ec5c41f4 100644 --- a/keyboards/geonworks/frogmini/fmh/rules.mk +++ b/keyboards/geonworks/frogmini/fmh/rules.mk @@ -13,6 +13,3 @@ LTO_ENABLE = no ENCODER_ENABLE = no BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality - -EEPROM_DRIVER = i2c - diff --git a/keyboards/geonworks/frogmini/fms/info.json b/keyboards/geonworks/frogmini/fms/info.json index b64392cc23d3..ada9188e37c2 100644 --- a/keyboards/geonworks/frogmini/fms/info.json +++ b/keyboards/geonworks/frogmini/fms/info.json @@ -13,6 +13,9 @@ "rows": ["A3", "A2", "A1", "B8", "A7", "C0"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "i2c" + }, "backlight": { "pin": "A10", "levels": 20 diff --git a/keyboards/geonworks/frogmini/fms/rules.mk b/keyboards/geonworks/frogmini/fms/rules.mk index dfd36d0f82bf..19b80485899f 100644 --- a/keyboards/geonworks/frogmini/fms/rules.mk +++ b/keyboards/geonworks/frogmini/fms/rules.mk @@ -13,6 +13,3 @@ LTO_ENABLE = no ENCODER_ENABLE = no BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality - -EEPROM_DRIVER = i2c - diff --git a/keyboards/getawayvan/chconf.h b/keyboards/getawayvan/chconf.h deleted file mode 100644 index a5d3d535f75c..000000000000 --- a/keyboards/getawayvan/chconf.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/getawayvan/chconf.h -r platforms/chibios/common/configs/chconf.h` - */ - -#pragma once - -#define CH_CFG_ST_FREQUENCY 10000 - -#define CH_CFG_OPTIMIZE_SPEED FALSE - -#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE - -#include_next - diff --git a/keyboards/getawayvan/config.h b/keyboards/getawayvan/config.h deleted file mode 100644 index 3d253afc06fe..000000000000 --- a/keyboards/getawayvan/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2020 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define WS2812_SPI SPID2 -#define WS2812_SPI_MOSI_PAL_MODE 0 -#define WS2812_SPI_SCK_PAL_MODE 0 -#define WS2812_SPI_SCK_PIN B13 -#define WS2812_EXTERNAL_PULLUP - -#define LOCKING_SUPPORT_ENABLE -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/getawayvan/getawayvan.c b/keyboards/getawayvan/getawayvan.c deleted file mode 100644 index a73bd0e45ea7..000000000000 --- a/keyboards/getawayvan/getawayvan.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "getawayvan.h" - -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { { - // Key Matrix to LED Index - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }, - { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }, - { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36 }, - { 37, 39, 41, NO_LED, 42, 43, 44, NO_LED, 45, 46, 48, 50 } -}, { - // LED Index to Physical Position - { 0, 0}, { 19, 0}, { 38, 0}, { 57, 0}, { 76, 0}, { 95, 0}, {114, 0}, {133, 0}, {152, 0}, {172, 0}, {191, 0}, {217, 0}, - { 2, 21}, { 22, 21}, { 41, 21}, { 60, 21}, { 79, 21}, { 98, 21}, {117, 21}, {136, 21}, {155, 21}, {175, 21}, {194, 21}, {220, 21}, - { 7, 43}, { 33, 43}, { 52, 43}, { 71, 43}, { 91, 43}, {110, 43}, {129, 43}, {148, 43}, {167, 43}, {186, 43}, {205, 43}, {214, 43}, {224, 43}, - { 0, 64}, { 7, 64}, { 21, 64}, { 31, 64}, { 41, 64}, { 76, 64}, {112, 64}, {127, 64}, {159, 64}, {187, 64}, {189, 64}, {205, 64}, {219, 64}, {224, 64} -}, { - // LED Index to Flag - 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, - 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, - 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 -} }; - -#endif diff --git a/keyboards/getawayvan/getawayvan.h b/keyboards/getawayvan/getawayvan.h deleted file mode 100644 index eaafa3e308df..000000000000 --- a/keyboards/getawayvan/getawayvan.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "quantum.h" - -#define KNO 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, \ - 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, K1a, K1b}, \ - {K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b}, \ - {K30, K31, K32, KNO, K34, KNO, K36, KNO, K38, K39, K3a, K3b} \ -} diff --git a/keyboards/getawayvan/halconf.h b/keyboards/getawayvan/halconf.h deleted file mode 100644 index e1aa6308de4d..000000000000 --- a/keyboards/getawayvan/halconf.h +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/getawayvan/halconf.h -r platforms/chibios/common/configs/halconf.h` - */ - -#pragma once - -#define HAL_USE_I2C TRUE - -#define HAL_USE_PWM TRUE - -#define HAL_USE_SPI TRUE - -#include_next - diff --git a/keyboards/getawayvan/info.json b/keyboards/getawayvan/info.json deleted file mode 100644 index b3d863355434..000000000000 --- a/keyboards/getawayvan/info.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "manufacturer": "esca", - "keyboard_name": "GetawayVan", - "maintainer": "esca", - "bootloader": "stm32-dfu", - "bootmagic": { - "enabled": true - }, - "diode_direction": "COL2ROW", - "features": { - "extrakey": true, - "nkro": true, - "rgb_matrix": true - }, - "matrix_pins": { - "cols": ["B11", "B10", "B2", "B1", "B0", "A7", "A6", "A4", "A13", "A10", "C13", "C14"], - "rows": ["A9", "A8", "A3", "A5"] - }, - "mouse_key": { - "enabled": true - }, - "processor": "STM32F072", - "rgb_matrix": { - "driver": "ws2812", - "led_count": 51 - }, - "rgblight": { - "brightness_steps": 17, - "hue_steps": 20, - "led_count": 51, - "max_brightness": 128, - "saturation_steps": 17 - }, - "url": "", - "usb": { - "device_version": "0.0.1", - "pid": "0x0401", - "vid": "0xE5CA" - }, - "ws2812": { - "driver": "spi", - "pin": "B15" - }, - "layouts": { - "LAYOUT": { - "layout": [ - {"label": "esc", "matrix": [0, 0], "x": 0, "y": 0}, - {"label": "Q", "matrix": [0, 1], "x": 1, "y": 0}, - {"label": "W", "matrix": [0, 2], "x": 2, "y": 0}, - {"label": "E", "matrix": [0, 3], "x": 3, "y": 0}, - {"label": "R", "matrix": [0, 4], "x": 4, "y": 0}, - {"label": "T", "matrix": [0, 5], "x": 5, "y": 0}, - {"label": "Y", "matrix": [0, 6], "x": 6, "y": 0}, - {"label": "U", "matrix": [0, 7], "x": 7, "y": 0}, - {"label": "I", "matrix": [0, 8], "x": 8, "y": 0}, - {"label": "O", "matrix": [0, 9], "x": 9, "y": 0}, - {"label": "P", "matrix": [0, 10], "x": 10, "y": 0}, - {"label": "NoNo Key", "matrix": [0, 11], "x": 11, "y": 0, "w": 1.75}, - {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, - {"label": "A", "matrix": [1, 1], "x": 1.25, "y": 1}, - {"label": "S", "matrix": [1, 2], "x": 2.25, "y": 1}, - {"label": "D", "matrix": [1, 3], "x": 3.25, "y": 1}, - {"label": "F", "matrix": [1, 4], "x": 4.25, "y": 1}, - {"label": "G", "matrix": [1, 5], "x": 5.25, "y": 1}, - {"label": "H", "matrix": [1, 6], "x": 6.25, "y": 1}, - {"label": "J", "matrix": [1, 7], "x": 7.25, "y": 1}, - {"label": "K", "matrix": [1, 8], "x": 8.25, "y": 1}, - {"label": "L", "matrix": [1, 9], "x": 9.25, "y": 1}, - {"label": "\"", "matrix": [1, 10], "x": 10.25, "y": 1}, - {"label": "Enter", "matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.5}, - {"label": "Shift", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, - {"label": "Z", "matrix": [2, 1], "x": 1.75, "y": 2}, - {"label": "X", "matrix": [2, 2], "x": 2.75, "y": 2}, - {"label": "C", "matrix": [2, 3], "x": 3.75, "y": 2}, - {"label": "V", "matrix": [2, 4], "x": 4.75, "y": 2}, - {"label": "B", "matrix": [2, 5], "x": 5.75, "y": 2}, - {"label": "N", "matrix": [2, 6], "x": 6.75, "y": 2}, - {"label": "M", "matrix": [2, 7], "x": 7.75, "y": 2}, - {"label": "<", "matrix": [2, 8], "x": 8.75, "y": 2}, - {"label": ">", "matrix": [2, 9], "x": 9.75, "y": 2}, - {"label": "K2a", "matrix": [2, 10], "x": 10.75, "y": 2}, - {"label": "Shift", "matrix": [2, 11], "x": 11.75, "y": 2}, - {"label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 3}, - {"label": "Win", "matrix": [3, 1], "x": 1, "y": 3, "w": 1.25}, - {"label": "Alt", "matrix": [3, 2], "x": 2.25, "y": 3}, - {"label": "", "matrix": [3, 4], "x": 3.25, "y": 3, "w": 2.75}, - {"label": "", "matrix": [3, 6], "x": 6, "y": 3, "w": 2.25}, - {"label": "Alt", "matrix": [3, 8], "x": 8.25, "y": 3, "w": 1.25}, - {"label": "K39", "matrix": [3, 9], "x": 9.75, "y": 3}, - {"label": "K3a", "matrix": [3, 10], "x": 10.75, "y": 3}, - {"label": "K3b", "matrix": [3, 11], "x": 11.75, "y": 3} - ] - } - } -} diff --git a/keyboards/getawayvan/keymaps/default/keymap.c b/keyboards/getawayvan/keymaps/default/keymap.c deleted file mode 100644 index 7fd1df2501f0..000000000000 --- a/keyboards/getawayvan/keymaps/default/keymap.c +++ /dev/null @@ -1,42 +0,0 @@ -#include QMK_KEYBOARD_H - -extern keymap_config_t keymap_config; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Qwerty */ - QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(3, KC_ENT), - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), LT(1, KC_SPC), MO(2), KC_LEFT, KC_DOWN, KC_RIGHT - ), - [1] = LAYOUT( /* LAYER 2 */ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, - KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SLSH, KC_PGUP, KC_BSLS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END - ), - [2] = LAYOUT( /* LAYER 1 */ - KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MPLY, - KC_TRNS, KC_UNDS, KC_PLUS, KC_PIPE, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPRV, KC_VOLD, KC_MNXT, KC_COLN, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_VOLU, KC_PIPE, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT - ), - [3] = LAYOUT( /* LAYER 3 */ - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, - KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS - ), - [4] = LAYOUT( /* none Layer*/ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [5] = LAYOUT( /* none Layer*/ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/getawayvan/keymaps/vial/config.h b/keyboards/getawayvan/keymaps/vial/config.h deleted file mode 100644 index df3a90053b1e..000000000000 --- a/keyboards/getawayvan/keymaps/vial/config.h +++ /dev/null @@ -1,7 +0,0 @@ -#define VIAL_KEYBOARD_UID {0x81, 0xD4, 0x20, 0x6E, 0x3B, 0x5B, 0xBC, 0x9D} - -#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } -#define VIAL_UNLOCK_COMBO_COLS { 0, 11 } - -#define RGB_MATRIX_FRAMEBUFFER_EFFECTS -#define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/getawayvan/keymaps/vial/keymap.c b/keyboards/getawayvan/keymaps/vial/keymap.c deleted file mode 100644 index 713e33c46e99..000000000000 --- a/keyboards/getawayvan/keymaps/vial/keymap.c +++ /dev/null @@ -1,30 +0,0 @@ -#include QMK_KEYBOARD_H - -extern keymap_config_t keymap_config; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( /* Qwerty */ - QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - CTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, LT(3, KC_ENT), - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), LT(1, KC_SPC), MO(2), KC_LEFT, KC_DOWN, KC_RIGHT - ), - [1] = LAYOUT( /* LAYER 2 */ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, - KC_TRNS, KC_MINS, KC_EQL, KC_BSLS, KC_TRNS, KC_TRNS, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, KC_SCLN, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SLSH, KC_PGUP, KC_BSLS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END - ), - [2] = LAYOUT( /* LAYER 1 */ - KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MPLY, - KC_TRNS, KC_UNDS, KC_PLUS, KC_PIPE, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPRV, KC_VOLD, KC_MNXT, KC_COLN, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_QUES, KC_VOLU, KC_PIPE, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT - ), - [3] = LAYOUT( /* LAYER 3 */ - QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, - KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS - ) -}; diff --git a/keyboards/getawayvan/keymaps/vial/rules.mk b/keyboards/getawayvan/keymaps/vial/rules.mk deleted file mode 100644 index d013bc62daa5..000000000000 --- a/keyboards/getawayvan/keymaps/vial/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -VIA_ENABLE = yes -VIAL_ENABLE = yes -VIALRGB_ENABLE = yes diff --git a/keyboards/getawayvan/keymaps/vial/vial.json b/keyboards/getawayvan/keymaps/vial/vial.json deleted file mode 100644 index 1d3d82a8eb44..000000000000 --- a/keyboards/getawayvan/keymaps/vial/vial.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "name": "Getaway Van", - "vendorId": "0xE5CA", - "productId": "0x0401", - "lighting": "vialrgb", - "matrix": { - "rows": 4, - "cols": 12 - }, - "layouts": { - "labels":[ - "Split Left Shift", - [ - "Bottom Row", - "Split Spacebar", - "6.25u Spacebar", - "Split Spacebar Full", - "7u Spacebar/HHKB" - ] - ], - "keymap": [ - [ - "0,0", - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - { - "w": 1.75 - }, - "0,11" - ], - [ - { - "w": 1.25 - }, - "1,0", - "1,1", - "1,2", - "1,3", - { - "n": true - }, - "1,4", - "1,5", - "1,6", - { - "n": true - }, - "1,7", - "1,8", - "1,9", - "1,10", - { - "w": 1.5 - }, - "1,11" - ], - [ - { - "w": 1.75 - }, - "2,0", - "2,1", - "2,2", - "2,3", - "2,4", - "2,5", - "2,6", - "2,7", - "2,8", - "2,9", - { - "c": "#abc6dc" - }, - "2,10\n\n\n0,0", - "2,11\n\n\n0,0", - { - "x": 0.25, - "w": 2 - }, - "2,11\n\n\n0,1" - ], - [ - { - "c": "#69d0a5" - }, - "3,0\n\n\n1,0", - { - "w": 1.25 - }, - "3,1\n\n\n1,0", - "3,2\n\n\n1,0", - { - "w": 2.75 - }, - "3,4\n\n\n1,0", - { - "w": 2.25 - }, - "3,6\n\n\n1,0", - { - "w": 1.25 - }, - "3,8\n\n\n1,0", - { - "x": 0.25 - }, - "3,9\n\n\n1,0", - "3,10\n\n\n1,0", - "3,11\n\n\n1,0" - ], - [ - { - "y": 0.25 - }, - "3,0\n\n\n1,1", - { - "w": 1.25 - }, - "3,1\n\n\n1,1", - "3,2\n\n\n1,1", - { - "w": 6.25 - }, - "3,6\n\n\n1,1", - { - "x": 0.25 - }, - "3,9\n\n\n1,1", - "3,10\n\n\n1,1", - "3,11\n\n\n1,1" - ], - [ - { - "y": 0.25 - }, - "3,0\n\n\n1,2", - { - "w": 1.25 - }, - "3,1\n\n\n1,2", - "3,2\n\n\n1,2", - { - "w": 2.75 - }, - "3,4\n\n\n1,2", - { - "w": 2.25 - }, - "3,6\n\n\n1,2", - { - "w": 1.5 - }, - "3,8\n\n\n1,2", - "3,9\n\n\n1,2", - "3,10\n\n\n1,2", - "3,11\n\n\n1,2" - ], - [ - { - "y": 0.25, - "x": 0.35 - }, - "3,0\n\n\n1,3", - { - "w": 1.5 - }, - "3,1\n\n\n1,3", - { - "w": 7 - }, - "3,6\n\n\n1,3", - { - "w": 1.5 - }, - "3,9\n\n\n1,3", - "3,11\n\n\n1,3" - ] - ]} - } diff --git a/keyboards/getawayvan/mcuconf.h b/keyboards/getawayvan/mcuconf.h deleted file mode 100644 index b8b00d84f3f2..000000000000 --- a/keyboards/getawayvan/mcuconf.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/getawayvan/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h` - */ - -#pragma once - -#include_next - -#undef STM32_I2C_USE_I2C1 -#define STM32_I2C_USE_I2C1 TRUE - -#undef STM32_PWM_USE_TIM3 -#define STM32_PWM_USE_TIM3 TRUE - -#undef STM32_SPI_USE_SPI2 -#define STM32_SPI_USE_SPI2 TRUE - diff --git a/keyboards/getawayvan/readme.md b/keyboards/getawayvan/readme.md deleted file mode 100644 index 4c0a23384b97..000000000000 --- a/keyboards/getawayvan/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetawayVan - -GetawayVan Keyboard - -* Keyboard Maintainer: [esca](https://github.com/esca47) -* Hardware Supported: STM32F072C8T6/(STM32F042C6T6 in getawayvan_f042) - -Make example for this keyboard (after setting up your build environment): - - make esca/getawayvan: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/getawayvan/rules.mk b/keyboards/getawayvan/rules.mk deleted file mode 100644 index 6d69ade46ba4..000000000000 --- a/keyboards/getawayvan/rules.mk +++ /dev/null @@ -1,23 +0,0 @@ -# MCU name - -# Bootloader selection - -# Build Options -# change yes to no to disable -# -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE = yes # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -BLUETOOTH_ENABLE = no # Enable Bluetooth -AUDIO_ENABLE = no # Audio output - -RGB_MATRIX_ENABLE = yes - -# Enter lower-power sleep mode when on the ChibiOS idle thread -OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/gh60/satan/keymaps/jarred/keymap.c b/keyboards/gh60/satan/keymaps/jarred/keymap.c deleted file mode 100644 index 7f7436bea787..000000000000 --- a/keyboards/gh60/satan/keymaps/jarred/keymap.c +++ /dev/null @@ -1,22 +0,0 @@ -#include QMK_KEYBOARD_H - -#define _QW 0 -#define _NV 1 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -[_QW] = LAYOUT_60_ansi( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,KC_BSLS, - MO(_NV), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP, KC_RCTL), - -[_NV] = LAYOUT_60_ansi( - KC_GRV ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,_______, - _______,_______,_______,_______,KC_DEL ,KC_BSPC,_______,KC_HOME,KC_UP ,KC_END ,KC_INS ,_______,_______,_______, - _______,_______,_______,KC_LSFT,KC_LCTL,KC_ENT ,_______,KC_LEFT,KC_DOWN,KC_RGHT,KC_DEL ,KC_DEL , _______, - _______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,_______,_______, - _______,_______,_______, _______, _______,_______, QK_BOOT, _______), - -}; diff --git a/keyboards/gh60/satan/keymaps/jarred/readme.md b/keyboards/gh60/satan/keymaps/jarred/readme.md deleted file mode 100644 index 522cb19b651a..000000000000 --- a/keyboards/gh60/satan/keymaps/jarred/readme.md +++ /dev/null @@ -1 +0,0 @@ -# Jarred's Satan GH60 layout diff --git a/keyboards/gizmo_engineering/gk6/config.h b/keyboards/gizmo_engineering/gk6/config.h index ba683e4fed15..5204496e6610 100755 --- a/keyboards/gizmo_engineering/gk6/config.h +++ b/keyboards/gizmo_engineering/gk6/config.h @@ -18,10 +18,9 @@ along with this program. If not, see . #pragma once // RGB Matrix -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110111 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 32 #define DRIVER_2_LED_TOTAL 32 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) @@ -31,8 +30,6 @@ along with this program. If not, see . #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT -#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS -#define RGB_MATRIX_DEFAULT_SPD 127 // RGB Matrix Animation modes. Explicitly enabled // For full list of effects, see: diff --git a/keyboards/gizmo_engineering/gk6/gk6.c b/keyboards/gizmo_engineering/gk6/gk6.c index e28f5d43c732..18883727b88d 100755 --- a/keyboards/gizmo_engineering/gk6/gk6.c +++ b/keyboards/gizmo_engineering/gk6/gk6.c @@ -17,7 +17,7 @@ #include "quantum.h" #ifdef RGB_MATRIX_ENABLE -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { {0, C1_8, C2_8, C3_8}, //0 led1 {0, C1_7, C2_7, C3_7}, //1 led2 {0, C1_6, C2_6, C3_6}, //2 led3 diff --git a/keyboards/gkeyboard/gpad8_2r/config.h b/keyboards/gkeyboard/gpad8_2r/config.h index 0691d106b706..88debbe193a4 100644 --- a/keyboards/gkeyboard/gpad8_2r/config.h +++ b/keyboards/gkeyboard/gpad8_2r/config.h @@ -3,8 +3,6 @@ #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 8 - #define RGB_MATRIX_LED_COUNT 16 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/gkeyboard/gpad8_2r/info.json b/keyboards/gkeyboard/gpad8_2r/info.json index 2111d58cc4b1..9aa63091c978 100644 --- a/keyboards/gkeyboard/gpad8_2r/info.json +++ b/keyboards/gkeyboard/gpad8_2r/info.json @@ -25,6 +25,9 @@ "rows": ["GP4", "GP5", "GP6"] }, "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 8 + }, "encoder": { "enabled": true, "rotary": [ diff --git a/keyboards/glenpickle/chimera_ergo/rules.mk b/keyboards/glenpickle/chimera_ergo/rules.mk index 32eca4db3144..f543b5fd9a23 100644 --- a/keyboards/glenpickle/chimera_ergo/rules.mk +++ b/keyboards/glenpickle/chimera_ergo/rules.mk @@ -14,4 +14,4 @@ CUSTOM_MATRIX = lite # project specific files SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes diff --git a/keyboards/glenpickle/chimera_ls/rules.mk b/keyboards/glenpickle/chimera_ls/rules.mk index 1ee3fc58f957..706d61065389 100644 --- a/keyboards/glenpickle/chimera_ls/rules.mk +++ b/keyboards/glenpickle/chimera_ls/rules.mk @@ -14,7 +14,7 @@ CUSTOM_MATRIX = lite # project specific files SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes # Disable unsupported hardware RGBLIGHT_SUPPORTED = no diff --git a/keyboards/glenpickle/chimera_ortho/rules.mk b/keyboards/glenpickle/chimera_ortho/rules.mk index 32eca4db3144..f543b5fd9a23 100644 --- a/keyboards/glenpickle/chimera_ortho/rules.mk +++ b/keyboards/glenpickle/chimera_ortho/rules.mk @@ -14,4 +14,4 @@ CUSTOM_MATRIX = lite # project specific files SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes diff --git a/keyboards/glenpickle/chimera_ortho_plus/rules.mk b/keyboards/glenpickle/chimera_ortho_plus/rules.mk index 6b1876f87ca2..539a2d1004b4 100644 --- a/keyboards/glenpickle/chimera_ortho_plus/rules.mk +++ b/keyboards/glenpickle/chimera_ortho_plus/rules.mk @@ -15,4 +15,4 @@ CUSTOM_MATRIX = lite # project specific files SRC += matrix.c -QUANTUM_LIB_SRC += uart.c +UART_DRIVER_REQUIRED = yes diff --git a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c index 2ed88744910e..774006d5291e 100644 --- a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c +++ b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c @@ -18,8 +18,8 @@ #ifdef RGB_MATRIX_ENABLE -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to AW20216S manual for these locations * driver * | R location * | | G location diff --git a/keyboards/gmmk/gmmk2/p65/ansi/info.json b/keyboards/gmmk/gmmk2/p65/ansi/info.json index 902d1b6b5dd3..cd9296b81a20 100644 --- a/keyboards/gmmk/gmmk2/p65/ansi/info.json +++ b/keyboards/gmmk/gmmk2/p65/ansi/info.json @@ -12,7 +12,7 @@ "tap_keycode_delay": 10 }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/keymap.c b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/keymap.c deleted file mode 100644 index 6d88e116743e..000000000000 --- a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/keymap.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright 2022 Eugenio Pastoral - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "vnmm.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Keymap WIN_BASE: Base Layer (Default Layer) - */ -[WIN_BASE] = LAYOUT( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, WIN_F, KC_LEFT, KC_DOWN, KC_RGHT), - - /* Keymap MAC_BASE: Alternate base layer available if I end up on macbook. - */ -[MAC_BASE] = LAYOUT( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MAC_F, KC_LEFT, KC_DOWN, KC_RGHT), - - - /* Keymap WIN_FN: Function Layer WIN_BASE - */ -[WIN_FN] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, KC_VOLU, KC_MPLY, - EE_CLR, _______, _______, QK_BOOT, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), - - /* Keymap MAC_FN: Function Layer for MAC_BASE - */ -[MAC_FN] = LAYOUT( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, KC_VOLU, KC_MPLY, - EE_CLR, _______, _______, QK_BOOT, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), -}; diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/readme.md b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/readme.md deleted file mode 100644 index d39bdb6e8d45..000000000000 --- a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# Vnmm's ANSI GMMKV2 65% Layout - -This keymap builds on archrovisual's but with some changes and uses the default key placements - -## Features - -- Alphabet keys light up red when caps lock is on -- Pressing FN shows keys that have a definition -- Via enabled -- Quick reset with fn+space diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/rules.mk b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/rules.mk deleted file mode 100644 index 96d2d189b2e6..000000000000 --- a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/vnmm/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -VIA_ENABLE = yes -MOUSEKEY_ENABLE = no diff --git a/keyboards/gmmk/gmmk2/p65/ansi/rules.mk b/keyboards/gmmk/gmmk2/p65/ansi/rules.mk index 1b4692a62164..2d2e9895fd8e 100644 --- a/keyboards/gmmk/gmmk2/p65/ansi/rules.mk +++ b/keyboards/gmmk/gmmk2/p65/ansi/rules.mk @@ -11,5 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality. RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow. AUDIO_ENABLE = no # Audio output. RGB_MATRIX_ENABLE = yes # Enable RGB matrix effects. -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = embedded_flash diff --git a/keyboards/gmmk/gmmk2/p65/config.h b/keyboards/gmmk/gmmk2/p65/config.h index 3c6a2fd906ed..ce9ff6943363 100644 --- a/keyboards/gmmk/gmmk2/p65/config.h +++ b/keyboards/gmmk/gmmk2/p65/config.h @@ -29,12 +29,11 @@ #define SPI_MOSI_PIN B15 #define SPI_MISO_PIN B14 -#define DRIVER_1_CS A15 -#define DRIVER_2_CS B9 -#define DRIVER_1_EN C13 -#define DRIVER_2_EN C13 +#define AW20216S_CS_PIN_1 A15 +#define AW20216S_CS_PIN_2 B9 +#define AW20216S_EN_PIN_1 C13 +#define AW20216S_EN_PIN_2 C13 -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 54 #define DRIVER_2_LED_TOTAL 34 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/gmmk/gmmk2/p65/iso/info.json b/keyboards/gmmk/gmmk2/p65/iso/info.json index 90609dc91110..c286cb7ba057 100644 --- a/keyboards/gmmk/gmmk2/p65/iso/info.json +++ b/keyboards/gmmk/gmmk2/p65/iso/info.json @@ -12,7 +12,7 @@ "tap_keycode_delay": 10 }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], @@ -24,8 +24,9 @@ }, "processor": "WB32F3G71", "bootloader": "wb32-dfu", + "community_layouts": ["65_iso_blocker"], "layouts": { - "LAYOUT": { + "LAYOUT_65_iso_blocker": { "layout": [ {"matrix": [1, 3], "x": 0, "y": 0}, {"matrix": [1, 7], "x": 1, "y": 0}, @@ -56,7 +57,6 @@ {"matrix": [8, 0], "x": 10.5, "y": 1}, {"matrix": [8, 1], "x": 11.5, "y": 1}, {"matrix": [6, 1], "x": 12.5, "y": 1}, - {"matrix": [8, 4], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [2, 6], "x": 15, "y": 1}, {"matrix": [2, 1], "x": 0, "y": 2, "w": 1.75}, @@ -72,6 +72,7 @@ {"matrix": [8, 2], "x": 10.75, "y": 2}, {"matrix": [8, 3], "x": 11.75, "y": 2}, {"matrix": [7, 5], "x": 12.75, "y": 2}, + {"matrix": [8, 4], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [6, 5], "x": 15, "y": 2}, {"matrix": [0, 0], "x": 0, "y": 3, "w": 1.25}, diff --git a/keyboards/gmmk/gmmk2/p65/iso/iso.c b/keyboards/gmmk/gmmk2/p65/iso/iso.c index a296844f4403..80c0dc2e0de8 100644 --- a/keyboards/gmmk/gmmk2/p65/iso/iso.c +++ b/keyboards/gmmk/gmmk2/p65/iso/iso.c @@ -18,8 +18,8 @@ #ifdef RGB_MATRIX_ENABLE -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to AW20216S manual for these locations * driver * | R location * | | G location diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c index 1ab85d7f0a19..6a3da299a24a 100644 --- a/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c +++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c @@ -26,19 +26,19 @@ enum custom_layers { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: Base Layer (Default Layer) */ -[_BL] = LAYOUT( +[_BL] = LAYOUT_65_iso_blocker( QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_ENT, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGDN, + 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_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, 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_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), /* Keymap _FL: Function Layer */ -[_FL] = LAYOUT( +[_FL] = LAYOUT_65_iso_blocker( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME, _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD) }; diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c index 6146e7817f90..f0fe74004278 100644 --- a/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c +++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c @@ -19,32 +19,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: Base Layer (Default Layer) */ -[0] = LAYOUT( +[0] = LAYOUT_65_iso_blocker( QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_ENT, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGDN, + 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_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, 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_END, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), /* Keymap _FL: Function Layer */ -[1] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +[1] = LAYOUT_65_iso_blocker( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME, _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD), -[2] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +[2] = LAYOUT_65_iso_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______), -[3] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______), +[3] = LAYOUT_65_iso_blocker( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/keyboards/gmmk/gmmk2/p65/iso/rules.mk b/keyboards/gmmk/gmmk2/p65/iso/rules.mk index 1b4692a62164..2d2e9895fd8e 100644 --- a/keyboards/gmmk/gmmk2/p65/iso/rules.mk +++ b/keyboards/gmmk/gmmk2/p65/iso/rules.mk @@ -11,5 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality. RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow. AUDIO_ENABLE = no # Audio output. RGB_MATRIX_ENABLE = yes # Enable RGB matrix effects. -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = embedded_flash diff --git a/keyboards/gmmk/gmmk2/p96/ansi/ansi.c b/keyboards/gmmk/gmmk2/p96/ansi/ansi.c index 467765e435e4..bc05ab630101 100644 --- a/keyboards/gmmk/gmmk2/p96/ansi/ansi.c +++ b/keyboards/gmmk/gmmk2/p96/ansi/ansi.c @@ -18,8 +18,8 @@ #ifdef RGB_MATRIX_ENABLE -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to AW20216S manual for these locations * driver * | R location * | | G location diff --git a/keyboards/gmmk/gmmk2/p96/ansi/info.json b/keyboards/gmmk/gmmk2/p96/ansi/info.json index cb0ecf94452a..e4eaddbfe8e9 100644 --- a/keyboards/gmmk/gmmk2/p96/ansi/info.json +++ b/keyboards/gmmk/gmmk2/p96/ansi/info.json @@ -12,13 +12,20 @@ "tap_keycode_delay": 10 }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "processor": "WB32F3G71", "bootloader": "wb32-dfu", "layouts": { diff --git a/keyboards/gmmk/gmmk2/p96/ansi/rules.mk b/keyboards/gmmk/gmmk2/p96/ansi/rules.mk index a076e0191687..2d2e9895fd8e 100644 --- a/keyboards/gmmk/gmmk2/p96/ansi/rules.mk +++ b/keyboards/gmmk/gmmk2/p96/ansi/rules.mk @@ -11,5 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality. RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow. AUDIO_ENABLE = no # Audio output. RGB_MATRIX_ENABLE = yes # Enable RGB matrix effects. -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash diff --git a/keyboards/gmmk/gmmk2/p96/config.h b/keyboards/gmmk/gmmk2/p96/config.h index e3b5cdcfa1d6..fb21c571f53b 100644 --- a/keyboards/gmmk/gmmk2/p96/config.h +++ b/keyboards/gmmk/gmmk2/p96/config.h @@ -25,7 +25,6 @@ /* External spi flash */ #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14 -#define WEAR_LEVELING_BACKING_SIZE 2048 /* SPI Config for LED Driver */ #define SPI_DRIVER SPIDQ @@ -33,12 +32,11 @@ #define SPI_MOSI_PIN A7 #define SPI_MISO_PIN A6 -#define DRIVER_1_CS A15 -#define DRIVER_2_CS B15 -#define DRIVER_1_EN C13 -#define DRIVER_2_EN C13 +#define AW20216S_CS_PIN_1 A15 +#define AW20216S_CS_PIN_2 B15 +#define AW20216S_EN_PIN_1 C13 +#define AW20216S_EN_PIN_2 C13 -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 66 #define DRIVER_2_LED_TOTAL 54 #define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/gmmk/gmmk2/p96/iso/info.json b/keyboards/gmmk/gmmk2/p96/iso/info.json index 6534d2802776..d9f53b76f1e3 100644 --- a/keyboards/gmmk/gmmk2/p96/iso/info.json +++ b/keyboards/gmmk/gmmk2/p96/iso/info.json @@ -12,13 +12,20 @@ "tap_keycode_delay": 10 }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "processor": "WB32F3G71", "bootloader": "wb32-dfu", "layouts": { @@ -43,104 +50,104 @@ {"matrix": [13, 0], "x": 14, "y": 0}, - {"matrix": [0, 6], "x": 15.5, "y": 0}, - {"matrix": [1, 6], "x": 16.5, "y": 0}, - {"matrix": [2, 6], "x": 17.5, "y": 0}, - {"matrix": [3, 6], "x": 18.5, "y": 0}, - - {"matrix": [0, 1], "x": 0, "y": 1}, - {"matrix": [1, 1], "x": 1, "y": 1}, - {"matrix": [2, 1], "x": 2, "y": 1}, - {"matrix": [3, 1], "x": 3, "y": 1}, - {"matrix": [4, 1], "x": 4, "y": 1}, - {"matrix": [5, 1], "x": 5, "y": 1}, - {"matrix": [6, 1], "x": 6, "y": 1}, - {"matrix": [7, 1], "x": 7, "y": 1}, - {"matrix": [8, 1], "x": 8, "y": 1}, - {"matrix": [9, 1], "x": 9, "y": 1}, - {"matrix": [10, 1], "x": 10, "y": 1}, - {"matrix": [11, 1], "x": 11, "y": 1}, - {"matrix": [12, 1], "x": 12, "y": 1}, - {"matrix": [13, 1], "x": 13, "y": 1, "w": 2}, - - {"matrix": [4, 6], "x": 15.5, "y": 1}, - {"matrix": [5, 6], "x": 16.5, "y": 1}, - {"matrix": [6, 6], "x": 17.5, "y": 1}, - {"matrix": [7, 6], "x": 18.5, "y": 1}, - - {"matrix": [0, 2], "x": 0, "y": 2, "w": 1.5}, - {"matrix": [1, 2], "x": 1.5, "y": 2}, - {"matrix": [2, 2], "x": 2.5, "y": 2}, - {"matrix": [3, 2], "x": 3.5, "y": 2}, - {"matrix": [4, 2], "x": 4.5, "y": 2}, - {"matrix": [5, 2], "x": 5.5, "y": 2}, - {"matrix": [6, 2], "x": 6.5, "y": 2}, - {"matrix": [7, 2], "x": 7.5, "y": 2}, - {"matrix": [8, 2], "x": 8.5, "y": 2}, - {"matrix": [9, 2], "x": 9.5, "y": 2}, - {"matrix": [10, 2], "x": 10.5, "y": 2}, - {"matrix": [11, 2], "x": 11.5, "y": 2}, - {"matrix": [12, 2], "x": 12.5, "y": 2}, - {"matrix": [13, 3], "x": 13.5, "y": 2, "w": 1.25, "h": 2}, - - {"matrix": [8, 6], "x": 15.5, "y": 2}, - {"matrix": [9, 6], "x": 16.5, "y": 2}, - {"matrix": [10, 6], "x": 17.5, "y": 2, "w": 1.5}, - {"matrix": [11, 6], "x": 18.5, "y": 2, "h": 2}, - - {"matrix": [0, 3], "x": 0, "y": 3, "w": 1.75}, - {"matrix": [1, 3], "x": 1.75, "y": 3}, - {"matrix": [2, 3], "x": 2.75, "y": 3}, - {"matrix": [3, 3], "x": 3.75, "y": 3}, - {"matrix": [4, 3], "x": 4.75, "y": 3}, - {"matrix": [5, 3], "x": 5.75, "y": 3}, - {"matrix": [6, 3], "x": 6.75, "y": 3}, - {"matrix": [7, 3], "x": 7.75, "y": 3}, - {"matrix": [8, 3], "x": 8.75, "y": 3}, - {"matrix": [9, 3], "x": 9.75, "y": 3}, - {"matrix": [10, 3], "x": 10.75, "y": 3}, - {"matrix": [11, 3], "x": 11.75, "y": 3}, - {"matrix": [12, 3], "x": 12.75, "y": 3}, - - {"matrix": [10, 7], "x": 15.5, "y": 3}, - {"matrix": [11, 7], "x": 16.5, "y": 3}, - {"matrix": [12, 7], "x": 17.5, "y": 3}, - - {"matrix": [0, 4], "x": 0, "y": 4, "w": 1.25}, - {"matrix": [1, 4], "x": 1.25, "y": 4}, - {"matrix": [2, 4], "x": 2.25, "y": 4}, - {"matrix": [3, 4], "x": 3.25, "y": 4}, - {"matrix": [4, 4], "x": 4.25, "y": 4}, - {"matrix": [5, 4], "x": 5.25, "y": 4}, - {"matrix": [6, 4], "x": 6.25, "y": 4}, - {"matrix": [7, 4], "x": 7.25, "y": 4}, - {"matrix": [8, 4], "x": 8.25, "y": 4}, - {"matrix": [9, 4], "x": 9.25, "y": 4}, - {"matrix": [10, 4], "x": 10.25, "y": 4}, - {"matrix": [11, 4], "x": 11.25, "y": 4}, - {"matrix": [13, 4], "x": 12.25, "y": 4, "w": 1.75}, - - {"matrix": [1, 7], "x": 14.25, "y": 4}, - - {"matrix": [6, 7], "x": 15.5, "y": 4}, - {"matrix": [7, 7], "x": 16.5, "y": 4}, - {"matrix": [8, 7], "x": 17.5, "y": 4}, - {"matrix": [9, 7], "x": 18.5, "y": 4, "h": 2}, - - {"matrix": [0, 5], "x": 0, "y": 5, "w": 1.25}, - {"matrix": [1, 5], "x": 1.25, "y": 5, "w": 1.25}, - {"matrix": [2, 5], "x": 2.5, "y": 5, "w": 1.25}, - {"matrix": [6, 5], "x": 3.75, "y": 5, "w": 6.25}, - {"matrix": [9, 5], "x": 10, "y": 5}, - {"matrix": [10, 5], "x": 11, "y": 5}, - {"matrix": [12, 5], "x": 12, "y": 5}, - - {"matrix": [0, 7], "x": 13.25, "y": 5}, - {"matrix": [2, 7], "x": 14.25, "y": 5}, - {"matrix": [3, 7], "x": 15.25, "y": 5}, - - {"matrix": [4, 7], "x": 16.5, "y": 5}, - {"matrix": [5, 7], "x": 17.5, "y": 5} + {"matrix": [0, 6], "x": 15.25, "y": 0}, + {"matrix": [1, 6], "x": 16.25, "y": 0}, + {"matrix": [2, 6], "x": 17.25, "y": 0}, + {"matrix": [3, 6], "x": 18.25, "y": 0}, + + {"matrix": [0, 1], "x": 0, "y": 1.125}, + {"matrix": [1, 1], "x": 1, "y": 1.125}, + {"matrix": [2, 1], "x": 2, "y": 1.125}, + {"matrix": [3, 1], "x": 3, "y": 1.125}, + {"matrix": [4, 1], "x": 4, "y": 1.125}, + {"matrix": [5, 1], "x": 5, "y": 1.125}, + {"matrix": [6, 1], "x": 6, "y": 1.125}, + {"matrix": [7, 1], "x": 7, "y": 1.125}, + {"matrix": [8, 1], "x": 8, "y": 1.125}, + {"matrix": [9, 1], "x": 9, "y": 1.125}, + {"matrix": [10, 1], "x": 10, "y": 1.125}, + {"matrix": [11, 1], "x": 11, "y": 1.125}, + {"matrix": [12, 1], "x": 12, "y": 1.125}, + {"matrix": [13, 1], "x": 13, "y": 1.125, "w": 2}, + + {"matrix": [4, 6], "x": 15.25, "y": 1.125}, + {"matrix": [5, 6], "x": 16.25, "y": 1.125}, + {"matrix": [6, 6], "x": 17.25, "y": 1.125}, + {"matrix": [7, 6], "x": 18.25, "y": 1.125}, + + {"matrix": [0, 2], "x": 0, "y": 2.125, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 2.125}, + {"matrix": [2, 2], "x": 2.5, "y": 2.125}, + {"matrix": [3, 2], "x": 3.5, "y": 2.125}, + {"matrix": [4, 2], "x": 4.5, "y": 2.125}, + {"matrix": [5, 2], "x": 5.5, "y": 2.125}, + {"matrix": [6, 2], "x": 6.5, "y": 2.125}, + {"matrix": [7, 2], "x": 7.5, "y": 2.125}, + {"matrix": [8, 2], "x": 8.5, "y": 2.125}, + {"matrix": [9, 2], "x": 9.5, "y": 2.125}, + {"matrix": [10, 2], "x": 10.5, "y": 2.125}, + {"matrix": [11, 2], "x": 11.5, "y": 2.125}, + {"matrix": [12, 2], "x": 12.5, "y": 2.125}, + {"matrix": [13, 3], "x": 13.75, "y": 2.125, "w": 1.25, "h": 2}, + + {"matrix": [8, 6], "x": 15.25, "y": 2.125}, + {"matrix": [9, 6], "x": 16.25, "y": 2.125}, + {"matrix": [10, 6], "x": 17.25, "y": 2.125}, + {"matrix": [11, 6], "x": 18.25, "y": 2.125, "h": 2}, + + {"matrix": [0, 3], "x": 0, "y": 3.125, "w": 1.75}, + {"matrix": [1, 3], "x": 1.75, "y": 3.125}, + {"matrix": [2, 3], "x": 2.75, "y": 3.125}, + {"matrix": [3, 3], "x": 3.75, "y": 3.125}, + {"matrix": [4, 3], "x": 4.75, "y": 3.125}, + {"matrix": [5, 3], "x": 5.75, "y": 3.125}, + {"matrix": [6, 3], "x": 6.75, "y": 3.125}, + {"matrix": [7, 3], "x": 7.75, "y": 3.125}, + {"matrix": [8, 3], "x": 8.75, "y": 3.125}, + {"matrix": [9, 3], "x": 9.75, "y": 3.125}, + {"matrix": [10, 3], "x": 10.75, "y": 3.125}, + {"matrix": [11, 3], "x": 11.75, "y": 3.125}, + {"matrix": [12, 3], "x": 12.75, "y": 3.125}, + + {"matrix": [10, 7], "x": 15.25, "y": 3.125}, + {"matrix": [11, 7], "x": 16.25, "y": 3.125}, + {"matrix": [12, 7], "x": 17.25, "y": 3.125}, + + {"matrix": [0, 4], "x": 0, "y": 4.125, "w": 1.25}, + {"matrix": [1, 4], "x": 1.25, "y": 4.125}, + {"matrix": [2, 4], "x": 2.25, "y": 4.125}, + {"matrix": [3, 4], "x": 3.25, "y": 4.125}, + {"matrix": [4, 4], "x": 4.25, "y": 4.125}, + {"matrix": [5, 4], "x": 5.25, "y": 4.125}, + {"matrix": [6, 4], "x": 6.25, "y": 4.125}, + {"matrix": [7, 4], "x": 7.25, "y": 4.125}, + {"matrix": [8, 4], "x": 8.25, "y": 4.125}, + {"matrix": [9, 4], "x": 9.25, "y": 4.125}, + {"matrix": [10, 4], "x": 10.25, "y": 4.125}, + {"matrix": [11, 4], "x": 11.25, "y": 4.125}, + {"matrix": [13, 4], "x": 12.25, "y": 4.125, "w": 1.75}, + + {"matrix": [1, 7], "x": 14.125, "y": 4.25}, + + {"matrix": [6, 7], "x": 15.25, "y": 4.125}, + {"matrix": [7, 7], "x": 16.25, "y": 4.125}, + {"matrix": [8, 7], "x": 17.25, "y": 4.125}, + {"matrix": [9, 7], "x": 18.25, "y": 4.125, "h": 2}, + + {"matrix": [0, 5], "x": 0, "y": 5.125, "w": 1.25}, + {"matrix": [1, 5], "x": 1.25, "y": 5.125, "w": 1.25}, + {"matrix": [2, 5], "x": 2.5, "y": 5.125, "w": 1.25}, + {"matrix": [6, 5], "x": 3.75, "y": 5.125, "w": 6.25}, + {"matrix": [9, 5], "x": 10, "y": 5.125}, + {"matrix": [10, 5], "x": 11, "y": 5.125}, + {"matrix": [12, 5], "x": 12, "y": 5.125}, + + {"matrix": [0, 7], "x": 13.125, "y": 5.25}, + {"matrix": [2, 7], "x": 14.125, "y": 5.25}, + {"matrix": [3, 7], "x": 15.125, "y": 5.25}, + + {"matrix": [4, 7], "x": 16.25, "y": 5.125}, + {"matrix": [5, 7], "x": 17.25, "y": 5.125} ] } } diff --git a/keyboards/gmmk/gmmk2/p96/iso/iso.c b/keyboards/gmmk/gmmk2/p96/iso/iso.c index 40d28818b07c..f6b3528cb410 100644 --- a/keyboards/gmmk/gmmk2/p96/iso/iso.c +++ b/keyboards/gmmk/gmmk2/p96/iso/iso.c @@ -18,8 +18,8 @@ #ifdef RGB_MATRIX_ENABLE -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to AW20216S manual for these locations * driver * | R location * | | G location diff --git a/keyboards/gmmk/gmmk2/p96/iso/rules.mk b/keyboards/gmmk/gmmk2/p96/iso/rules.mk index a076e0191687..2d2e9895fd8e 100644 --- a/keyboards/gmmk/gmmk2/p96/iso/rules.mk +++ b/keyboards/gmmk/gmmk2/p96/iso/rules.mk @@ -11,5 +11,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality. RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow. AUDIO_ENABLE = no # Audio output. RGB_MATRIX_ENABLE = yes # Enable RGB matrix effects. -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash diff --git a/keyboards/gmmk/numpad/config.h b/keyboards/gmmk/numpad/config.h index 6aa0a6c0160f..3627ab503c8e 100644 --- a/keyboards/gmmk/numpad/config.h +++ b/keyboards/gmmk/numpad/config.h @@ -28,16 +28,13 @@ #define SPI_MOSI_PIN B5 #define SPI_MISO_PIN B4 -#define DRIVER_1_CS B12 -#define DRIVER_1_EN A15 -#define DRIVER_1_PW_EN B13 - -#define DRIVER_COUNT 1 +#define AW20216S_CS_PIN_1 B12 +#define AW20216S_EN_PIN_1 A15 +#define AW20216S_PW_EN_PIN_1 B13 #define RGB_MATRIX_LED_COUNT 31 #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B6 -#define WEAR_LEVELING_BACKING_SIZE 2048 #define ENABLE_RGB_MATRIX_ALPHAS_MODS #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN diff --git a/keyboards/gmmk/numpad/info.json b/keyboards/gmmk/numpad/info.json index 604a49b5038c..83f7d840dcb6 100644 --- a/keyboards/gmmk/numpad/info.json +++ b/keyboards/gmmk/numpad/info.json @@ -8,13 +8,20 @@ "pid": "0x5088", "device_version": "0.0.1" }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "encoder": { "rotary": [ {"pin_a": "A2", "pin_b": "A1"} ] }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "processor": "WB32F3G71", "bootloader": "wb32-dfu", diff --git a/keyboards/gmmk/numpad/numpad.c b/keyboards/gmmk/numpad/numpad.c index f1a46170fd76..5cdb34c7bd27 100644 --- a/keyboards/gmmk/numpad/numpad.c +++ b/keyboards/gmmk/numpad/numpad.c @@ -19,16 +19,13 @@ #ifdef RGB_MATRIX_ENABLE -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { -/* 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 - * driver pin locations. +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to AW20216S manual for these locations * driver * | R location - * | | G location - * | | | B location - * | | | | */ + * | | G location + * | | | B location + * | | | | */ {0, CS4_SW1, CS5_SW1, CS6_SW1 }, // 0 NUM {0, CS4_SW2, CS5_SW2, CS6_SW2 }, // 1 / {0, CS7_SW1, CS8_SW1, CS9_SW1 }, // 2 * @@ -110,12 +107,12 @@ led_config_t g_led_config = {{ 2, 2, 2, 2, 2, 2, 2 } }; -# ifdef DRIVER_1_PW_EN +# ifdef AW20216S_PW_EN_PIN_1 void keyboard_pre_init_user(void) { wait_ms(2000); - setPinOutput(DRIVER_1_PW_EN); - writePinHigh(DRIVER_1_PW_EN); + setPinOutput(AW20216S_PW_EN_PIN_1); + writePinHigh(AW20216S_PW_EN_PIN_1); } # endif diff --git a/keyboards/gmmk/numpad/rules.mk b/keyboards/gmmk/numpad/rules.mk index 5a0d3e34f86f..d289eb81a4d1 100644 --- a/keyboards/gmmk/numpad/rules.mk +++ b/keyboards/gmmk/numpad/rules.mk @@ -16,10 +16,8 @@ MIDI_ENABLE = yes RGB_MATRIX_ENABLE = yes -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash - LTO_ENABLE = yes -SRC += analog.c \ - matrix.c \ No newline at end of file +ANALOG_DRIVER_REQUIRED = yes + +SRC += matrix.c diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h index 069823663eeb..995dd95ec811 100644 --- a/keyboards/gmmk/pro/config.h +++ b/keyboards/gmmk/pro/config.h @@ -26,12 +26,10 @@ #define SPI_MOSI_PIN A6 #define SPI_MISO_PIN A7 -#define DRIVER_1_CS B13 -#define DRIVER_2_CS B14 -#define DRIVER_1_EN C13 -#define DRIVER_2_EN C13 - -#define DRIVER_COUNT 2 +#define AW20216S_CS_PIN_1 B13 +#define AW20216S_CS_PIN_2 B14 +#define AW20216S_EN_PIN_1 C13 +#define AW20216S_EN_PIN_2 C13 #define RGB_DISABLE_WHEN_USB_SUSPENDED diff --git a/keyboards/gmmk/pro/rev1/ansi/ansi.c b/keyboards/gmmk/pro/rev1/ansi/ansi.c index 9cd6a3739c3c..a06594cb8841 100644 --- a/keyboards/gmmk/pro/rev1/ansi/ansi.c +++ b/keyboards/gmmk/pro/rev1/ansi/ansi.c @@ -136,7 +136,7 @@ led_config_t g_led_config = {{ 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 }}; -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 diff --git a/keyboards/gmmk/pro/rev1/ansi/info.json b/keyboards/gmmk/pro/rev1/ansi/info.json index 7e0adbdb0577..fc2197a0d762 100644 --- a/keyboards/gmmk/pro/rev1/ansi/info.json +++ b/keyboards/gmmk/pro/rev1/ansi/info.json @@ -9,7 +9,7 @@ "device_version": "0.0.1" }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/config.h deleted file mode 100644 index 16ac4f240789..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/config.h +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright 2021 Choi Byungyoon - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 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 -#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 -// #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 -#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 -// #define ENABLE_RGB_MATRIX_RAINDROPS -// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -#undef ENABLE_RGB_MATRIX_HUE_BREATHING -#undef ENABLE_RGB_MATRIX_HUE_PENDULUM -#undef ENABLE_RGB_MATRIX_HUE_WAVE -// #define ENABLE_RGB_MATRIX_PIXEL_RAIN -#undef ENABLE_RGB_MATRIX_PIXEL_FLOW -#undef 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 -#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 -// #define ENABLE_RGB_MATRIX_MULTISPLASH -#undef ENABLE_RGB_MATRIX_SOLID_SPLASH -// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH - -#undef DEBOUNCE -/* High debounce time is required to avoid key chattering because of the debouncing algorithm sym_eager_pk */ -#define DEBOUNCE 40 diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c deleted file mode 100644 index 487e6dc04ec9..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c +++ /dev/null @@ -1,132 +0,0 @@ -/* Copyright 2021 Choi Byungyoon - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "byungyoonc.h" - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mic Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc TaskMgr -// Tab Q W E R T Y U I O P [ ] \ Del -// Caps A S D F G H J K L ; " Enter Home -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MMUT, - 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_TASK, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [1] = LAYOUT( - _______, KC_BRID, KC_BRIU, KC_CALC, KC_MSEL, RGB_VAD, RGB_VAI, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, - _______, KC_SEC1, KC_SEC2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DB_TOGG, _______, - _______, _______, _______, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, - _______, _______, _______, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, RGB_HUI, RGB_HUD, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______, - _______, GUI_TOG, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI - ), - - -}; -// clang-format on - -bool process_record_user_kb(uint16_t keycode, keyrecord_t *record) { - if (record->event.pressed) { - rgblight_increase_hue(); - } - return true; -} - -#if defined(ENCODER_ENABLE) -bool encoder_update_user(uint8_t index, bool clockwise) { - uint8_t mod_state = get_mods(); - if (mod_state & MOD_MASK_CTRL) { - unregister_mods(MOD_MASK_CTRL); - if (clockwise) { - tap_code16(LCTL(KC_RGHT)); - } else { - tap_code16(LCTL(KC_LEFT)); - } - set_mods(mod_state); - } else { - if (clockwise) { - tap_code16(KC_VOLU); - } else { - tap_code16(KC_VOLD); - } - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; -} -#endif // ENCODER_ENABLE - -static void set_rgb_caps_leds(void); - -static void set_rgb_caps_leds(void) { - rgb_matrix_set_color(73, 0xFF, 0x77, 0x77); // Left side LED 3 - rgb_matrix_set_color(74, 0xFF, 0x77, 0x77); // Right side LED 3 - rgb_matrix_set_color(76, 0xFF, 0x77, 0x77); // Left side LED 4 - rgb_matrix_set_color(77, 0xFF, 0x77, 0x77); // Right side LED 4 - rgb_matrix_set_color(80, 0xFF, 0x77, 0x77); // Left side LED 5 - rgb_matrix_set_color(81, 0xFF, 0x77, 0x77); // Right side LED 5 - rgb_matrix_set_color(83, 0xFF, 0x77, 0x77); // Left side LED 6 - rgb_matrix_set_color(84, 0xFF, 0x77, 0x77); // Right side LED 6 - rgb_matrix_set_color(3, 0xFF, 0x77, 0x77); // CAPS LED -} - -static void set_rgb_nlck_notset_leds(void); - -static void set_rgb_wlck_leds(void); - -static void set_rgb_nlck_notset_leds(void) { - rgb_matrix_set_color(67, 0x77, 0x77, 0xFF); // Left side LED 1 - rgb_matrix_set_color(68, 0x77, 0x77, 0xFF); // Right side LED 1 - rgb_matrix_set_color(70, 0x77, 0x77, 0xFF); // Left side LED 2 - rgb_matrix_set_color(71, 0x77, 0x77, 0xFF); // Right side LED 2 -} - -static void set_rgb_wlck_leds(void) { - rgb_matrix_set_color(87, 0x77, 0xFF, 0x77); // Left side LED 7 - rgb_matrix_set_color(88, 0x77, 0xFF, 0x77); // Right side LED 7 - rgb_matrix_set_color(91, 0x77, 0xFF, 0x77); // Left side LED 8 - rgb_matrix_set_color(92, 0x77, 0xFF, 0x77); // Right side LED 8 -} - -bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - led_t led_state = host_keyboard_led_state(); - if (led_state.caps_lock) { - set_rgb_caps_leds(); - } - if (!led_state.num_lock) { - set_rgb_nlck_notset_leds(); - } - if (keymap_config.no_gui) { - set_rgb_wlck_leds(); - } - return false; -} - -void matrix_output_unselect_delay(uint8_t line, bool key_pressed) { - for (int i = 0; i < 20; i++) { - wait_cpuclock(STM32_SYSCLK / 1000000L); - } -} diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/readme.md b/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/readme.md deleted file mode 100644 index d340bf86ed78..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/readme.md +++ /dev/null @@ -1,41 +0,0 @@ -byungyoonc's GMMK Pro Layout -============================ - -## Keymap - -### Base Layer -![GMMK Pro Base Layer Layout Image](https://i.imgur.com/VvEL08Q.png) - -Made a bit of a change on the leftmost side of the keyboard to set Home and End closer to the arrow keys. Also uses a shortcut for Windows Task Manager, Windows PowerToys microphone mute. - -### Fn Layer -![GMMK Pro Fn Layer Layout Image](https://i.imgur.com/uQy2gSh.png) - -F-row media functions roughly matches the Keychron keyboard's layout. - -Added Debug key for faster debugging iteration. - -Supports Secrets input by Fn + Numbers. - -The rest are pretty self-explanatory RGB controls, a GUI toggle and an NKRO toggle. - -## Rotary Encoder Rotation -Volume control when no mods, Ctrl+Left/Right when Ctrl is pressed while rotating the encoder. - -## RGB Indicators -Uses side strap RGB as the RGB indicators. -- Top third lights on when the Num Lock is turned off. -- Middle third lights on when the Caps Lock is turned on. -- Bottom third lights on when the GUI is disabled (via `GUI_TOG`). - -## Debounce -Uses the `DEBOUNCE_TYPE` of `sym_eager_pk` for the shortest response time possible, and `DEBOUNCE` time of `40` in order to eliminate any key chattering. - -## NKRO -N-key rollover is turned on by default. - -## RGB Matrix -Keypresses effects are enabled. -Disabled default several RGB effects. -Added custom RGB matrix effect `saturated_solid_multisplash`. -Every keypress increases the RGB hue value. diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/rgb_matrix_user.inc b/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/rgb_matrix_user.inc deleted file mode 100644 index 0d61e19f4c10..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/rgb_matrix_user.inc +++ /dev/null @@ -1 +0,0 @@ -#include "saturated_solid_multisplash.h" diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/rules.mk b/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/rules.mk deleted file mode 100644 index 08f832c51bc0..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -DEBOUNCE_TYPE = sym_eager_pk -RGB_MATRIX_CUSTOM_USER = yes diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c deleted file mode 100644 index c00ba602f73d..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright 2021 Cedrik Lussier @cedrikl -.* Directly inspired from the work of jonavin https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/ansi/keymaps/jonavin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H -#include "rgb_matrix_map.h" -#include "cedrikl.h" - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del -// Tab Q W E R T Y U I O P [ ] \ PgUp -// Caps A S D F G H J K L ; " Enter PgDn -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT key (to put the board into bootloader mode). Without - // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB - // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI - // if that's your preference. - // - // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and - // it'll be back to normal when you plug it back in. - // - // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). - // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. - // Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [1] = LAYOUT( - EE_CLR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, KC_MUTE, - KC_NUM, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_BSPC, KC_PSCR, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_PSLS, KC_PAST, KC_BSLS, KC_PGUP, - KC_CAPS, RGB_VAD, RGB_TOG, RGB_VAI, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_PENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_PDOT, KC_SLSH, KC_RSFT, KC_UP, KC_INS, - KC_LCTL, KC_RGUI, KC_LALT, KC_SPC, KC_RALT, KC_NO, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ) -}; -// clang-format on - -#ifdef ENCODER_ENABLE - bool encoder_update_user(uint8_t index, bool clockwise) { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; - } -#endif // ENCODER_ENABLE - - -#ifdef RGB_MATRIX_ENABLE -//void set_layer_rgb(uint8_t led_min, uint8_t led_max, int layer) { -// const ledmap *l = &(ledmaps[layer]); -// -// -// -// for (int i = 0; i < RGB_MATRIX_LED_COUNT; i++) { -// HSV hsv = { -// .h = (*l)[i][0], -// .s = (*l)[i][1], -// .v = val, -// }; -// -// if (hsv.h || hsv.s) { -// RGB rgb = hsv_to_rgb(hsv); -// RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); -// } -// } -//} - - // These shorthands are used below to set led colors on each matrix cycle - void loop_colorset(const uint8_t *indices, int array_size, const HSV target_color) { - HSV work_color = target_color; - work_color.v = rgb_matrix_get_val(); - - RGB final_color = hsv_to_rgb(work_color); - - for (int i = 0; i < array_size; i++) { - rgb_matrix_set_color(indices[i], final_color.r, final_color.g, final_color.b); // Set color A here - } - } - - // Capslock, Scroll lock and Numlock indicator on Left side lights. - bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - loop_colorset(LED_REGION_A, ARRAY_SIZE(LED_REGION_A), - hsv_cl_blue); - loop_colorset(LED_REGION_B, ARRAY_SIZE(LED_REGION_B), - hsv_cl_purple); - loop_colorset(LED_REGION_L_SIDE, ARRAY_SIZE(LED_REGION_L_SIDE), - hsv_cl_purple); - loop_colorset(LED_REGION_R_SIDE, ARRAY_SIZE(LED_REGION_R_SIDE), - hsv_cl_purple); - - switch(get_highest_layer(layer_state)){ // special handling per layer - case 1: //layer 1 - //rgb_matrix_set_color_all(RGB_AZURE); - loop_colorset(LED_REGION_NUMPAD, - ARRAY_SIZE(LED_REGION_NUMPAD), hsv_cl_numpad); - loop_colorset(LED_REGION_OTHER, ARRAY_SIZE(LED_REGION_OTHER), - hsv_cl_mods); - break; - default: //layer 0 - // - break; - break; - } - - HSV bad_hsv = hsv_cl_bad; - bad_hsv.v = rgb_matrix_get_val(); - RGB bad_rgb = hsv_to_rgb(bad_hsv); - led_t led_state = host_keyboard_led_state(); - - if (!led_state.num_lock) { // on if NUM lock is OFF - rgb_matrix_set_color(LED_R1, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_R2, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_R3, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_R4, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_R5, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_R6, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_R7, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_R8, bad_rgb.r, bad_rgb.g, bad_rgb.b); - } - if (led_state.caps_lock) { - rgb_matrix_set_color(LED_L1, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_L2, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_L3, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_L4, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_L5, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_L6, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_L7, bad_rgb.r, bad_rgb.g, bad_rgb.b); - rgb_matrix_set_color(LED_L8, bad_rgb.r, bad_rgb.g, bad_rgb.b); - loop_colorset(LED_REGION_CAPS, ARRAY_SIZE(LED_REGION_CAPS), - hsv_cl_bad); - } - return false; - } -#endif diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/rgb_matrix_map.h deleted file mode 100644 index 484f64b74c7d..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/rgb_matrix_map.h +++ /dev/null @@ -1,185 +0,0 @@ -/* Copyright 2021 Cedrik Lussier @cedrikl -.* Directly inspired from the work of jonavin https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/ansi/keymaps/jonavin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifdef RGB_MATRIX_ENABLE - - // Custom RGB Colours - const HSV hsv_cl_blue = {150, 255, 255}; - const HSV hsv_cl_purple = {188, 255, 255}; - const HSV hsv_cl_numpad = {85, 255, 255}; - const HSV hsv_cl_mods = {42, 255, 255}; - const HSV hsv_cl_bad = {0, 255, 255}; - - // RGB LED locations - enum led_location_map { - LED_ESC, // 0, ESC, k13 - LED_GRV, // 1, ~, k16 - LED_TAB, // 2, Tab, k11 - LED_CAPS, // 3, Caps, k21 - LED_LSFT, // 4, Sh_L, k00 - LED_LCTL, // 5, Ct_L, k06 - LED_F1, // 6, F1, k26 - LED_1, // 7, 1, k17 - LED_Q, // 8, Q, k10 - LED_A, // 9, A, k12 - LED_Z, // 10, Z, k14 - LED_LWIN, // 11, Win_L, k90 - LED_F2, // 12, F2, k36 - LED_2, // 13, 2, k27 - LED_W, // 14, W, k20 - LED_S, // 15, S, k22 - LED_X, // 16, X, k24 - LED_LALT, // 17, Alt_L, k93 - LED_F3, // 18, F3, k31 - LED_3, // 19, 3, k37 - LED_E, // 20, E, k30 - LED_D, // 21, D, k32 - LED_C, // 22, C, k34 - LED_F4, // 23, F4, k33 - LED_4, // 24, 4, k47 - LED_R, // 25, R, k40 - LED_F, // 26, F, k42 - LED_V, // 27, V, k44 - LED_F5, // 28, F5, k07 - LED_5, // 29, 5, k46 - LED_T, // 30, T, k41 - LED_G, // 31, G, k43 - LED_B, // 32, B, k45 - LED_SPC, // 33, SPACE, k94 - LED_F6, // 34, F6, k63 - LED_6, // 35, 6, k56 - LED_Y, // 36, Y, k51 - LED_H, // 37, H, k53 - LED_N, // 38, N, k55 - LED_F7, // 39, F7, k71 - LED_7, // 40, 7, k57 - LED_U, // 41, U, k50 - LED_J, // 42, J, k52 - LED_M, // 43, M, k54 - LED_F8, // 44, F8, k76 - LED_8, // 45, 8, k67 - LED_I, // 46, I, k60 - LED_K, // 47, K, k62 - LED_COMM, // 48, ,, k64 - LED_RALT, // 49, Alt_R, k95 - LED_F9, // 50, F9, ka6 - LED_9, // 51, 9, k77 - LED_O, // 52, O, k70 - LED_L, // 53, L, k72 - LED_DOT, // 54, ., k74 - LED_FN, // 55, FN, k92 - LED_F10, // 56, F10, ka7 - LED_0, // 57, 0, k87 - LED_P, // 58, P, k80 - LED_SCLN, // 59, ;, k82 - LED_SLSH, // 60, ?, k85 - LED_F11, // 61, F11, ka3 - LED_MINS, // 62, -, k86 - LED_LBRC, // 63, [, k81 - LED_QUOT, // 64, ", k83 - LED_RCTL, // 65, Ct_R, k04 - LED_F12, // 66, F12, ka5 - LED_L1, // 67, LED, l01 - LED_R1, // 68, LED, l11 - LED_DEL, // 69, Prt, k97 -- remapped to DEL - LED_L2, // 70, LED, l02 - LED_R2, // 71, LED, l12 - LED_HOME, // 72, Del, k65 - LED_L3, // 73, LED, l03 - LED_R3, // 74, LED, l13 - LED_PGUP, // 75, PgUp, k15 - LED_L4, // 76, LED, l04 - LED_R4, // 77, LED, l14 - LED_EQL, // 78, =, k66 - LED_RGHT, // 79, Right, k05 - LED_L5, // 80, LED, l05 - LED_R5, // 81, LED, l15 - LED_END, // 82, End, k75 - LED_L6, // 83, LED, l06 - LED_R6, // 84, LED, l16 - LED_BSPC, // 85, BSpc, ka1 - LED_PGDN, // 86, PgDn, k25 - LED_L7, // 87, LED, l07 - LED_R7, // 88, LED, l17 - LED_RBRC, // 89, ], k61 - LED_RSFT, // 90, Sh_R, k91 - LED_L8, // 91, LED, l08 - LED_R8, // 92, LED, l18 - LED_BSLS, // 93, \, ka2 - LED_UP, // 94, Up, k35 - LED_LEFT, // 95, Left, k03 - LED_ENT, // 96, Enter, ka4 - LED_DOWN // 97, Down, k73 - }; - -const uint8_t LED_REGION_L_SIDE[] = {LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7,LED_L8}; -const uint8_t LED_REGION_R_SIDE[] = {LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7,LED_R8}; - - //const uint8_t LED_MATRIX[] = { - // LED_ESC, LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12, LED_DEL, - // LED_GRV, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_HOME, - // LED_TAB, LED_Q, LED_W, LED_E, LED_R, LED_T, LED_Y, LED_U, LED_I, LED_O, LED_P, LED_LBRC, LED_RBRC, LED_BSLS, LED_PGUP, - // LED_CAPS, LED_A, LED_S, LED_D, LED_F, LED_G, LED_H, LED_J, LED_K, LED_L, LED_SCLN, LED_QUOT, LED_ENT, LED_PGDN, - // LED_LSFT, LED_Z, LED_X, LED_C, LED_V, LED_B, LED_N, LED_M, LED_COMM, LED_DOT, LED_SLSH, LED_RSFT, LED_UP, LED_END, - // LED_LCTL, LED_LWIN, LED_LALT, LED_SPC, LED_RALT, LED_FN, LED_RCTL, LED_LEFT, LED_DOWN, LED_RGHT - //}; - - const uint8_t LED_REGION_A[] = { - LED_ESC, LED_F9, LED_F10, LED_F11, LED_F12, LED_DEL, - LED_GRV, LED_1, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_HOME, - LED_TAB, LED_Q, LED_P, LED_LBRC, LED_RBRC, LED_BSLS, LED_PGUP, - LED_CAPS, LED_A, LED_SCLN, LED_QUOT, LED_ENT, LED_PGDN, - LED_LSFT, LED_Z, LED_SLSH, LED_RSFT, LED_UP, LED_END, - LED_LCTL, LED_LWIN, LED_LALT, LED_RCTL, LED_LEFT, LED_DOWN, LED_RGHT - }; - const uint8_t LED_REGION_B[] = { - LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, - LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, - LED_W, LED_E, LED_R, LED_T, LED_Y, LED_U, LED_I, LED_O, - LED_S, LED_D, LED_F, LED_G, LED_H, LED_J, LED_K, LED_L, - LED_X, LED_C, LED_V, LED_B, LED_N, LED_M, LED_COMM, LED_DOT, - LED_SPC, LED_RALT, LED_FN - }; - - const uint8_t LED_REGION_NUMPAD[] = { - - LED_GRV, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, - LED_LBRC, LED_RBRC, - LED_ENT, - LED_DOT - - }; - - const uint8_t LED_REGION_OTHER[] = { - LED_ESC, LED_DEL, - LED_HOME, - - LED_A, LED_S, LED_D, - LED_END, - LED_LWIN - }; - - const uint8_t LED_REGION_CAPS[] = { - - LED_GRV, LED_1, - LED_TAB, LED_Q, - LED_CAPS, LED_A, - LED_LSFT, - LED_LCTL - }; - -#endif diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/rules.mk b/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/rules.mk deleted file mode 100644 index 4b7ed8bf0b9b..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -IDLE_TIMEOUT_ENABLE = yes -STARTUP_NUMLOCK_ON = yes diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h deleted file mode 100644 index a0fbedde499b..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h +++ /dev/null @@ -1,146 +0,0 @@ -/* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Force n-key rollover -#define FORCE_NKRO - -// Set TT to two taps -#define TAPPING_TOGGLE 2 - -#ifdef COMMAND_ENABLE -#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL) //debug commands accessed by holding down both CTRLs: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_command.md -#endif - -// Caps Word configuration -#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD -#define CAPS_WORD_IDLE_TIMEOUT 10000 // Automatically turn off after x milliseconds of idle. 0 to never timeout. - -// Handle GRAVESC combo keys -#define GRAVE_ESC_ALT_OVERRIDE -// Always send Escape if Alt is pressed -#define GRAVE_ESC_CTRL_OVERRIDE -// Always send Escape if Control is pressed - -// #define TAPPING_TERM 180 -#define TAPPING_TERM 300 -#define TAPPING_TERM_PER_KEY - -#ifdef RGB_MATRIX_ENABLE - #define RGB_DISABLE_WHEN_USB_SUSPENDED - #define RGB_MATRIX_KEYPRESSES // Enables REACTIVE & SPLASH modes - #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables Heatmap, Rain - - // RGB step values - #define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10) - #define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17) - #define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17) - - // Startup values, when none have been set - #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default effect mode, if none has been set (was RGB_MATRIX_SOLID_COLOR) - #define RGB_MATRIX_DEFAULT_HUE 24 // Sets the default hue value, if none has been set - #define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set - #define RGB_MATRIX_DEFAULT_VAL 127 // Sets the default brightness value, if none has been set - #define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set - - // Uncomment any #undef line below to turn OFF any default enabled RGB background effect (enabled in keyboards/gmmk/pro/config.h). - #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Solid color (seems redundant; seems same as RGB_MATRIX_SOLID_COLOR?) - //#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static, horizontal rainbow - //#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static, vertical Rainbow - //#undef ENABLE_RGB_MATRIX_BREATHING // Breathing animation using selected HSV color - #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 (with white) - //#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness (with black) - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades brightness (with white) - //#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 // Full gradient moving left to right - //#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom - #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient chevron scrolling left to right (too similar to cycle left right) - //#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. (seems mostly redundant with above) - #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Built-in cycling pinwheel (seems redundant with below) - //#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard - #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Spinning rainbow (more distracting transitions) - //#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Spinning rainbow (smoother) - #undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboard (distracting, busy) - #undef ENABLE_RGB_MATRIX_RAINDROPS // Sustained raindrops of blue, green, yellow (confusing to use with RGB layers) - //#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Sustained raindrops of blue, purple, pink, green (confusing to use with RGB layers, but slightly better than above) - #undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back (very subtle) - #undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left (very subtle) - #undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right (very subtle) - //#undef ENABLE_RGB_MATRIX_PIXEL_RAIN // Non-sustained raindrops of pastel colors - #undef ENABLE_RGB_MATRIX_PIXEL_FLOW // More active version of pixel rain with quick cycling (unusable, very distracting) - #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Same as Pixel Flow but with current HSV only (somewhat distracting) - //Only enabled if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined - //#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Fading heatmap that follows keystrokes (has buggy side LEDs that glow red) - //#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix (has buggy side LEDs that glow red) - //Only enabled if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Keyboard lights up in chosen hue, key hits shown in complementary hue (try this as default?) - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (Single key) - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but more intense (Multi-key) - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single current color fade (Single key) - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-key) - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades (Single key) - //#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. (distracting on multiple keystroke hits) - #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (distracting on multiple key hits) - //#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. -#endif //RGB_MATRIX_ENABLE - -// Add a layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable -#if defined COLEMAK_LAYER_ENABLE - #ifdef GAME_ENABLE - #define DYNAMIC_KEYMAP_LAYER_COUNT 6 - #define _COLEMAK 5 - #else - #define DYNAMIC_KEYMAP_LAYER_COUNT 5 - #define _COLEMAK 4 - #endif //GAME_ENABLE -#endif // COLEMAK_LAYER_ENABLE - -/* -// Mouse Keys Accelerated Mode Definitions -#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10) -#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement. -#define MOUSEKEY_MOVE_DELTA 8 // Step size (default: 8) -#define MOUSEKEY_MAX_SPEED 9 // Maximum cursor speed at which acceleration stops (default: 10) -#define MOUSEKEY_TIME_TO_MAX 150 // Time until maximum cursor speed is reached (default: 30) -#define MOUSEKEY_WHEEL_DELAY 0 // Delay between pressing a wheel key and wheel movement (default: 10) -#define MOUSEKEY_WHEEL_INTERVAL 80 // Time between wheel movements (default: 80) -#define MOUSEKEY_WHEEL_MAX_SPEED 8 // Maximum number of scroll steps per scroll action (default: 8) -#define MOUSEKEY_WHEEL_TIME_TO_MAX 40 // Time until maximum scroll speed is reached (default: 40) -*/ - -// Mouse Keys Kinetic Mode Definitions -#define MK_KINETIC_SPEED // Enable Kinetic mode: Uses a quadratic curve on cursor speed to allow precise movements at the beginning and increases speed thereafter. -#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10) -#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement. -#define MOUSEKEY_MOVE_DELTA 5 // Step size for accelerating from initial to base speed (default: 8) -#define MOUSEKEY_MOVE_MAX 50 // use instead of BASE SPEED to limit speed in Kinetic mode -#define MOUSEKEY_INITIAL_SPEED 100 // Initial speed of the cursor in pixels per second (default: 100) -//#define MOUSEKEY_BASE_SPEED 800 // (broken in QMK 0.16.0) Maximum cursor speed at which acceleration stops (default: 1000) -#define MOUSEKEY_DECELERATED_SPEED 400 // Decelerated cursor speed (default: 400) -#define MOUSEKEY_ACCELERATED_SPEED 2000 // Accelerated cursor speed (default: 3000) -#define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16 // Initial number of movements of the mouse wheel (default: 16) -#define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32 // Maximum number of movements at which acceleration stops (default: 32) -#define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 // Accelerated wheel movements (default: 48) -#define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 // Decelerated wheel movements (default: 8) diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c deleted file mode 100644 index 64954feeafe7..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c +++ /dev/null @@ -1,713 +0,0 @@ -/* Copyright 2021 Glorious, LLC - Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -// Note: Many advanced functions referenced in this file are defined in /users/gourdo1/gourdo1.c - -#include QMK_KEYBOARD_H - -#include "rgb_matrix_map.h" - -#include "gourdo1.h" - -#include "paddlegame.h" - -#include - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Base Layout - * - * ,-------------------------------------------------------------------------------------------------------------. - * | Esc || F1 | F2 | F3 | F4 || F5 | F6 | F7 | F8 || F9 | F10 | F11 | F12 || Home || Mute | - * |=============================================================================================================| - * | ` ~ | 1 ! | 2 @ | 3 # | 4 $ | 5 % | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ | = + | Backspc || Del | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ } | ] } | \ | || PgUp | - * |---------+------+------+------+------+------+------+------+------+------+------+------+------+-------++------| - * | Capslock | A | S | D | F | G | H | J | K | L | ; : | ' " | Enter || PgDn | - * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| - * | LShift | Z | X | C | V | B | N | M | , < | . > | / ? | RShift || Up || End | - * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| - * | Ctrl | Win | LAlt | Space | RAlt | Fn | Ctrl || Left | Down | Rght | - * `------------------------------------------------------------------------------------------------------------' - */ - - [_BASE] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LEFTOFENC, ENCFUNC, - 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, BELOWENC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - CAPSNUM, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* FN1 Layout - * - * ,-------------------------------------------------------------------------------------------------------------. - * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause ||Sleep | - * |=============================================================================================================| - * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |RGBTOD|RGBTOI| ________ ||RGBTOG| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| - * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ |QK_BOOT|| Home | - * |---------+------+------+------+------+------+------+------+------+------+------+------+------+-------++------| - * | Capslock |RGBHUD|RGBVAD|RGBHUI| ____|GMAIL |HTMAIL| ____ | ____ | ____ | ____ | ____ | __________ || End | - * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| - * | __________ |RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| CAD | ______ ||RGBMOD|| ____ | - * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| - * | ____ | WinKyLk | ____ | _____ | ____ | ____ | ____ ||RGBSPD|RGBRMD|RGBSPI| - * `------------------------------------------------------------------------------------------------------------' - */ - - #ifdef GAME_ENABLE - [_FN1] = LAYOUT( - EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_SLEP, - PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG, - _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, TG(_GAME),SWAP_L, SWAP_R, QK_BOOT, KC_HOME, - KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, KC_END, - _______, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NUM, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, - _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI - ), - - [_GAME] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - #else - [_FN1] = LAYOUT( - EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_SLEP, - PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG, - _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, QK_BOOT, KC_HOME, - KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, KC_END, - _______, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NUM, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, - _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI - ), - #endif //GAME_ENABLE - - /* _NUMPADMOUSE Layout - * Note: A symbol preceded by "P" is a Numpad-encoded version of the key -- any app that differentiates will recognize the char as coming from a physical numpad. - * ,-------------------------------------------------------------------------------------------------------------. - * | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ || ____ | - * |=============================================================================================================| - * | ____ | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P0 | P- | P+ | ________ || ____ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| - * | ______ | PGUP | Up | PGDN | None | None | None | P4 | P5 | P6 | P+ | ____ | ____ | _____ || WhUp | - * |---------+------+------+------+------+------+------+------+------+------+------+------+------+-------++------| - * | ________ | Left | Down | Rght | None| None | None | P1 | P2 | P3 | P* | ____ | P-Enter || WhDn | - * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| - * | __________ | None | ____ | ____ | ____ | None | None | 0 | 00 | P. | P/ | MBt1 ||MS_UP || MBt2 | - * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| - * | ____ | ____ | ____ | _____ | ____ | ____ | MBt3 ||MS_LT |MS_DN |MS_RT | - * `------------------------------------------------------------------------------------------------------------' - */ - - [_NUMPADMOUSE] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______, - _______, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, KC_WH_U, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, _______, KC_PENT, KC_WH_D, - _______, KC_NO, _______, _______, _______, _______, _______, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, KC_PENT, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R - ), - - [_MOUSEKEY] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_D, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, _______, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R - ), - - #ifdef COLEMAK_LAYER_ENABLE - [_COLEMAK] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - KC_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_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_BSLS, KC_PGUP, - _______, 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_PGDN, - _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - _______, _______, _______, KC_SPC, KC_RALT, _______, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - #endif // COLEMAK_LAYER_ENABLE -}; - -#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults -void encoder_action_rgbhue(bool clockwise) { - if (clockwise) - rgblight_increase_hue_noeeprom(); - else - rgblight_decrease_hue_noeeprom(); -} - -bool encoder_update_user(uint8_t index, bool clockwise) { - uint8_t mods_state = get_mods(); - if (mods_state & MOD_BIT(KC_LSFT)) { // If you are holding L shift, encoder changes layers - encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_RSFT)) { // If you are holding R shift, Page up/dn - unregister_mods(MOD_BIT(KC_RSFT)); - encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_RSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour - encoder_action_rgbhue(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - switch (get_highest_layer(layer_state)) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(clockwise); - #endif - break; - #ifdef GAME_ENABLE - case _GAME: - // Game: Paddle movement - if (damage_count == 0) { - if (clockwise) { - if (paddle_pos_full < 15) ++paddle_pos_full; - } else { - if (paddle_pos_full > 0) --paddle_pos_full; - } - } - break; - #endif //GAME_ENABLE - default: - encoder_action_volume(clockwise); // Otherwise it just changes volume - break; - } - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; -} -#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE - -#ifdef RGB_MATRIX_ENABLE - -// Game logic -#ifdef GAME_ENABLE -void init_ball(uint8_t i) { - i &= 1; - ball[i].on = true; - ball[i].up = false; - ball[i].y = 0; - ball[i].x = rand() % 16; - - // Set initial ball state - if (ball[i].x < 8) { - ball[i].left = false; - } else { - ball[i].x -= 4; - ball[i].left = true; - } - - // 1/4 chance of being an enemy ball after level 6 - if (level_number > 3) { - ball[i].enemy = ((rand() % 4) == 0); - } else { - ball[i].enemy = false; - } -} - -void hurt_paddle(void) { - if (paddle_lives > 0) { - --paddle_lives; - } - damage_timer = timer_read(); - damage_count = 10; - - // Reset board - init_ball(0); - ball[1].on = false; -} -#endif //GAME_ENABLE - -// Capslock, Scroll lock and Numlock indicator on Left side lights. -bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF); - - led_t led_state = host_keyboard_led_state(); - - // Scroll Lock RGB setup - if (led_state.scroll_lock) { - rgb_matrix_set_color(LED_L3, RGB_RED); - rgb_matrix_set_color(LED_L4, RGB_RED); - rgb_matrix_set_color(LED_TAB, RGB_RED); - rgb_matrix_set_color(LED_F12, RGB_RED); - } - -/* - // System NumLock warning indicator RGB setup - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled - rgb_matrix_set_color(LED_GRV, RGB_ORANGE2); - rgb_matrix_set_color(LED_L1, RGB_ORANGE2); - rgb_matrix_set_color(LED_L2, RGB_ORANGE2); - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - rgb_matrix_set_color(LED_FN, RGB_ORANGE2); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_GRV, RGB_ORANGE2); - rgb_matrix_set_color(LED_L1, RGB_ORANGE2); - rgb_matrix_set_color(LED_L2, RGB_ORANGE2); - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - rgb_matrix_set_color(LED_FN, RGB_ORANGE2); - } - #endif // INVERT_NUMLOCK_INDICATOR -*/ - - // CapsLock RGB setup - if (led_state.caps_lock) { - if (user_config.rgb_hilite_caps) { - for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) { - rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE); - } - rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); - } - else { - rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); - } - } - - // Winkey disabled (gaming) mode RGB setup - if (keymap_config.no_gui) { - rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Winkey red when disabled - rgb_matrix_set_color(LED_W, RGB_CHARTREUSE); //light up gaming keys with WSAD higlighted - rgb_matrix_set_color(LED_S, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_A, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_D, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_Q, RGB_ORANGE2); - rgb_matrix_set_color(LED_E, RGB_ORANGE2); - rgb_matrix_set_color(LED_R, RGB_ORANGE2); - rgb_matrix_set_color(LED_TAB, RGB_ORANGE2); - rgb_matrix_set_color(LED_F, RGB_ORANGE2); - rgb_matrix_set_color(LED_Z, RGB_ORANGE2); - rgb_matrix_set_color(LED_X, RGB_ORANGE2); - rgb_matrix_set_color(LED_C, RGB_ORANGE2); - rgb_matrix_set_color(LED_V, RGB_ORANGE2); - rgb_matrix_set_color(LED_SPC, RGB_ORANGE2); - rgb_matrix_set_color(LED_LCTL, RGB_ORANGE2); - rgb_matrix_set_color(LED_LSFT, RGB_ORANGE2); - } - - // Fn selector mode RGB setup - switch (get_highest_layer(layer_state)) { // special handling per layer - case _FN1: // on Fn layer select what the encoder does when pressed - rgb_matrix_set_color(LED_FN, RGB_RED); //FN key - - //NEW RGB LIGHTING TO RING KEYBOARD ON FN LAYER ACTIVATION: - for (uint8_t j = 0; j < ARRAYSIZE(LED_LIST_FUNCROW); j++) { - rgb_matrix_set_color(LED_LIST_FUNCROW[j], RGB_RED); - } - rgb_matrix_set_color(LED_LCTL, RGB_RED); - rgb_matrix_set_color(LED_LALT, RGB_RED); - rgb_matrix_set_color(LED_SPC, RGB_RED); - rgb_matrix_set_color(LED_LWIN, RGB_RED); - //rgb_matrix_set_color(LED_RALT, RGB_RED); - rgb_matrix_set_color(LED_FN, RGB_OFFBLUE); - //rgb_matrix_set_color(LED_RCTL, RGB_RED); - rgb_matrix_set_color(LED_BSLS, RGB_RED); - rgb_matrix_set_color(LED_L1, RGB_RED); - rgb_matrix_set_color(LED_L2, RGB_RED); - rgb_matrix_set_color(LED_L3, RGB_RED); - rgb_matrix_set_color(LED_L4, RGB_RED); - rgb_matrix_set_color(LED_L5, RGB_RED); - rgb_matrix_set_color(LED_L6, RGB_RED); - rgb_matrix_set_color(LED_L7, RGB_RED); - rgb_matrix_set_color(LED_L8, RGB_RED); - rgb_matrix_set_color(LED_DOWN, RGB_RED); - rgb_matrix_set_color(LED_LEFT, RGB_RED); - rgb_matrix_set_color(LED_RIGHT, RGB_RED); - rgb_matrix_set_color(LED_R1, RGB_RED); - rgb_matrix_set_color(LED_R2, RGB_RED); - rgb_matrix_set_color(LED_R3, RGB_RED); - rgb_matrix_set_color(LED_R4, RGB_RED); - rgb_matrix_set_color(LED_R5, RGB_RED); - rgb_matrix_set_color(LED_R6, RGB_RED); - rgb_matrix_set_color(LED_R7, RGB_RED); - rgb_matrix_set_color(LED_R8, RGB_RED); - rgb_matrix_set_color(LED_MINS, RGB_OFFBLUE); - rgb_matrix_set_color(LED_EQL, RGB_OFFBLUE); - - // Indicator for paddle game enabled in build - #ifdef GAME_ENABLE - rgb_matrix_set_color(LED_P, RGB_CHARTREUSE); - #else - rgb_matrix_set_color(LED_P, RGB_RED); - #endif // GAME_ENABLE - - // System NumLock warning indicator RGB setup - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #endif // INVERT_NUMLOCK_INDICATOR - - //Add RGB statuses for user.config toggles - if (user_config.rgb_hilite_caps) { - rgb_matrix_set_color(LED_1, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_1, RGB_PURPLE); - } - if (user_config.rgb_hilite_numpad) { - rgb_matrix_set_color(LED_2, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_2, RGB_PURPLE); - } - if (user_config.esc_double_tap_to_baselyr) { - rgb_matrix_set_color(LED_3, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_3, RGB_PURPLE); - } - if (user_config.del_right_home_top) { - rgb_matrix_set_color(LED_4, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_4, RGB_PURPLE); - } - if (user_config.double_tap_shift_for_capslock) { - rgb_matrix_set_color(LED_5, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_5, RGB_PURPLE); - } - if (user_config.encoder_press_mute_or_media) { - rgb_matrix_set_color(LED_6, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_6, RGB_PURPLE); - } - if (user_config.ins_on_shft_bkspc_or_del) { - rgb_matrix_set_color(LED_7, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_7, RGB_PURPLE); - } - if (user_config.disable_space_mods) { - rgb_matrix_set_color(LED_8, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_8, RGB_PURPLE); - } - if (user_config.autocorrect) { - rgb_matrix_set_color(LED_9, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_9, RGB_PURPLE); - } - - // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code - uint16_t timeout_threshold = get_timeout_threshold(); - if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_BLUE); - else if (timeout_threshold < 140) { - rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold % 10)], RGB_BLUE); - } else { // >= 140 minutes, just show these 3 lights - rgb_matrix_set_color(LED_LIST_FUNCROW[10], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_FUNCROW[11], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_FUNCROW[12], RGB_CYAN); - } - break; - - // Numpad & Mouse Keys overlay RGB - case _NUMPADMOUSE: - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #endif // INVERT_NUMLOCK_INDICATOR - if (user_config.rgb_hilite_numpad) { - for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) { - rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE); - } - rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); - rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); - rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); - rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_END, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE); - } else { - rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); - rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); - rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); - } - break; - - // MOUSEKEYS mode RGB - case _MOUSEKEY: - rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RCTL, RGB_CYAN); - rgb_matrix_set_color(LED_RSFT, RGB_CYAN); - rgb_matrix_set_color(LED_END, RGB_CYAN); - rgb_matrix_set_color(LED_PGUP, RGB_OFFBLUE); - rgb_matrix_set_color(LED_PGDN, RGB_OFFBLUE); - break; - - // Colemak layer RGB - #ifdef COLEMAK_LAYER_ENABLE - case _COLEMAK: - for (uint8_t i = 0; i < ARRAYSIZE(LED_SIDE_RIGHT); i++) { - rgb_matrix_set_color(LED_SIDE_RIGHT[i], RGB_MAGENTA); - rgb_matrix_set_color(LED_SIDE_LEFT[i], RGB_MAGENTA); - } - break; - #endif - - // Paddle game logic - #ifdef GAME_ENABLE - case _GAME: - if (!game_start) { - srand((unsigned int) timer_read()); - - // Store user light settings - last_hsv = rgb_matrix_get_hsv(); - rgb_matrix_sethsv_noeeprom(0, 0, 0); - - paddle_pos_full = 8; - paddle_lives = 4; - bounce_count = 0; - level_number = 0; - damage_count = 0; - - init_ball(0); - ball[1].on = false; - ball_timer = timer_read(); - - game_start = true; - } - - // Set level indicator - if (level_number < 12) { - rgb_matrix_set_color(GAME_R0[level_number], RGB_BLUE); - } - - // Set life bar - for (uint8_t i = 0; i < paddle_lives; i++) { - rgb_matrix_set_color(GAME_LIVES[i], RGB_GREEN); - } - - uint8_t paddle_pos = paddle_pos_full >> 1; - - if (damage_count > 0) { - // Flash paddle when receiving damage - if (timer_elapsed(damage_timer) > 500) { - --damage_count; - damage_timer = timer_read(); - } - if ((damage_count & 1) == 0) { - for (uint8_t i = 0; i < 3; i++) { - rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED); - } - } - if (damage_count == 0) { - ball_timer = timer_read(); - } - - } else if (paddle_lives == 0) { - // Game over - for (uint8_t i = 0; i < ARRAY_SIZE(LED_GAME_OVER); i++) { - rgb_matrix_set_color(LED_GAME_OVER[i], RGB_RED); - } - - } else if (level_number >= 12) { - // You win - if (rgb_value.r == 0xff && rgb_value.g < 0xff) { - if (rgb_value.b > 0) { - --rgb_value.b; - } else { - ++rgb_value.g; - } - } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) { - if (rgb_value.r > 0) { - --rgb_value.r; - } else { - ++rgb_value.b; - } - } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) { - if (rgb_value.g > 0) { - --rgb_value.g; - } else { - ++rgb_value.r; - } - } - - for (uint8_t i = 0; i < 3; i++) { - rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b); - } - rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); - rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); - rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); - rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); - - } else { - // normal game loop - - // Set paddle position - for (uint8_t i = 0; i < 3; i++) { - rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN); - } - - // Ball movement logic happens at intervals - if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) { - for (int i = 0; i < 2; ++i) { - if (ball[i].on) { - // Ball movement - if (ball[i].up) { - if (ball[i].y > 0) { - --ball[i].y; - if (!ball[i].left) ++ball[i].x; - } else { - // Count reflections. If > 10, increase level - ++bounce_count; - if (bounce_count >= 10) { - bounce_count = 0; - ++level_number; - } - ball[i].on = false; - } - } else { - ++ball[i].y; - if (ball[i].left) --ball[i].x; - if (ball[i].y > 4) { - // Remove a life if ball isn't returned and isn't enemy - if (!ball[i].enemy) { - hurt_paddle(); - i = 2; - } else { - ball[i].on = false; - } - } - } - } - } - if (ball[0].y == 4 && !ball[1].on) { - init_ball(1); - } - if (ball[1].y == 4 && !ball[0].on) { - init_ball(0); - } - if (!ball[0].on && !ball[1].on) { - init_ball(0); - } - ball_timer = timer_read(); - } - - // Other ball stuff - for (int i = 0; i < 2; ++i) { - if (ball[i].on) { - // Ball deflection logic - if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) { - if (!ball[i].enemy) { - --ball[i].y; - if (!ball[i].left) { - ++ball[i].x; - } - ball[i].up = true; - } else { - hurt_paddle(); - i = 2; - } - } - - // Ball display - switch (ball[i].y) { - case 0: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE); - } - break; - - case 1: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE); - } - break; - - case 2: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE); - } - break; - - case 3: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE); - } - break; - - case 4: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE); - } - break; - } - } - } - } - break; - #endif //GAME_ENABLE - default: - #ifdef GAME_ENABLE - if (game_start) { - // Reset lighting settings - game_start = false; - rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v); - } - #endif //GAME_ENABLE - break; - } - return false; -} -#endif - -void keyboard_post_init_keymap(void) { - // keyboard_post_init_user() moved to userspace - #ifdef RGB_MATRIX_ENABLE - activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle - #endif -} diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h deleted file mode 100644 index 3d33975cfed9..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2021 Glorious, LLC - Copyright 2021 Tomas Guinan - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifdef GAME_ENABLE -const uint16_t GAME_TIMER[] = { - 400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150 -}; - -bool game_start = false; -HSV last_hsv; -static uint8_t paddle_pos_full; -static uint8_t paddle_lives; -static uint8_t level_number; -static uint8_t bounce_count; -static uint8_t damage_count; -static uint16_t damage_timer; -static uint16_t ball_timer; - -struct BallStruct -{ - uint8_t x; - uint8_t y; - bool on; - bool up; - bool left; - bool enemy; -}; - -struct BallStruct ball[2]; - -void init_ball(uint8_t i); -void hurt_paddle(void); - -#endif //GAME_ENABLE \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md deleted file mode 100644 index aebccf6d147a..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md +++ /dev/null @@ -1,124 +0,0 @@ -# [gourdo1's](mailto:gourdo1@outlook.com) GMMK Pro Keyboard Layouts - -These Windows-centric layouts are based on Jonavin's GMMK Pro [layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin) with many additions, fixes, a revamped keymap, persistent user customizations, updated layers, Pascal Getreuer's [autocorrect](https://getreuer.info/posts/keyboards/autocorrection/), Tomas Guinan's [paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) and expanded RGB controls and effects. - -![image](https://raw.githubusercontent.com/gourdo1/media/main/susuwatari.jpg) - -* Up-to-date [Changelog](https://github.com/gourdo1/gmmkpro-media/blob/main/changelog.md) -* Latest [ANSI firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_ansi_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases)) -* Latest [ISO firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_iso_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases)) -* Printable Keyboard [Cheatsheet](https://github.com/gourdo1/gmmkpro-media/raw/main/GMMK_Pro_Cheatsheet.pdf) - -## Features - -### Core Functionality - -* Support for both [ANSI](https://keebnews.com/ansi-vs-iso/) and [ISO](https://keebnews.com/ansi-vs-iso/) keyboard layouts. -* Quick & Easy Customization: Open a text editor and hit [FN]` (tilde on ANSI; the key left of '1' on ISO layouts) to view toggle-able settings. -* [VIA](https://www.caniusevia.com/) support enabled. -* AutoCorrection: Pascal Getreuer's AutoCorrect code incorporated with 400 word dictionary on words > 4 characters. -* Most [default Glorious shortcuts](https://cdn.shopify.com/s/files/1/0549/2681/files/GMMK_Pro_User_Guide.pdf) enabled -* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with [FN]R -* 1000Hz polling rate with 5ms debounce time for quick response in games. -* Mouse Keys! Don't want to move your hands off the keyboard or you didn't bring it with you? Use cursor keys to move the mouse. -* Overlay numpad on 789-UIOP-JKL;-M,. & Space-bar mapped to Enter key for rapid number entry. -* Gaming mode ([FN]Win-key) locks out Win-key and double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming keys. -* Caps Word enabled: To capitalize the next word only, press and release left and right shift at the same time. -* Multi-monitor app moving shortcuts: [FN] ],[ (square brackets) to move current app window to next monitor. -* Capslock toggled by double tap of Left Shift key or FN + Capslock (RGB green highlighted). -* Paddle game accessible via [FN]P. Hit [FN]P again or double tap [ESC] to exit. -* Single-handed shortcut for Ctrl-Alt-Delete: [FN]/ -* Single-handed shortcut for WinKey-L (lock Windows): [FN]L -* Domain shortcuts: [FN]. for .com, [FN]O for outlook.com, [FN]Y for yahoo.com, [FN]H for hotmail.com, [FN]G for gmail.com. -* [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md) accessible via [FN]Backslash for ANSI and FN(key next to Left Shift) for ISO -* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: [FN]F11, [FN]F12, [FN]F13 -* [Colemak](https://colemak.com/) key layout support (Accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple) -* Double tap ESC any time to revert to base layer. -* RGB backlight effects expanded to include framebuffer effects and reactive keypress modes. -* RGB backlight now remembers last color & effect settings after power down. - -### Quick & Easy Customization -* Below features can be toggled by holding [FN] and pressing the number corresponding to that feature. Changes are saved to EEPROM for persistence. -* Print current settings by opening a text editor and pressing [FN]~ (the key left of '1' on ISO layout keyboards) -* Quick view current settings by holding [FN] and viewing RGB under number keys (green means ON, violet means OFF) - -#### Toggle-able Settings: - 1. CapsLock RGB - Highlight under alpha keys - 2. Numpad RGB - Highlight under numpad layer keys - 3. ESC key - Double tap ESC key to go to base layer - 4. Swap DEL and HOME - Default is DEL to the right of BKSPC & HOME is above BKSPC - 5. Capslock function - Toggle between double tap LShift for CapsLock with Numpad on CapsLock key (default) and standard CapsLock - 6. Encoder button - Default mutes volume; alternate plays/pauses media - 7. Insert function - Toggle between SHIFT-BKSPC and SHIFT-DEL - 8. Modded-Space override - Use standard Space in place of modded-Space functions - 9. AutoCorrect - Internal (English) AutoCorrect; default is enabled - 0. (ISO layouts only) CapsLock highlights extended alpha keys - -### Numpad + Mouse Keys (Capslock key) - -* Overlay numpad + [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) are accessed through Capslock key hold (temp) or double press (locked) with RGB highlighting -* Numpad uses Space-bar as Enter for rapid number entry. -* This layer disables much of the keyboard, except X/C/V for cut/copy/paste, WASD for cursor, Q/E for PgUp/PgDn, cursor keys become mouse keys, surrounding keys become mouse buttons and all number keys become numpad versions (so Alt char codes work regardless of which set you use) -* FN and N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output ([FN]N to toggle) -* Double zero on comma key. -* [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) allow you to use the mouse without taking your hand off the keyboard. -* Mouse controls are: Cursor keys = move mouse; RShift = button1, End = button2, RCtrl = button3, PgUp/PgDn = Scroll wheel -* Mouse Keys can also be accessed as a standalone layer by Left Shift-turning the Encoder until the cursor keys light up green - -### Encoder Functionality - -* Default knob turn changes volume; button press toggles mute -* Exponential encoder: quick repeated volume up doubles increase; quick repeated volume down triples decrease. -* FN + knob turn changes RGB idle timeout -* FN + knob push puts PC to Sleep -* holding Left Shift changes layers -* holding Right Shift navigates page up/down -* holding Left Ctrl navigates prev/next word -* holding Right Ctrl changes RGB hue/color -* holding Left Alt changes media prev/next track - -### Paddle Game - -* Based on [Tomas Guinan's excellent GMMK Pro paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) -* Paddle Game playable by pressing [FN]P (P lights up green in FN layer if game is enabled in firmware, otherwise it lights up red) -* Use rotary encoder to control paddle -* Contains 12 levels, indicated by blue LED on F-key row -* Player has 4 lives, indicated by nav cluster -* Deflect white balls while avoiding red ones -* Use [FN]P, double tap ESC or otherwise change layer to quit game - -### Global RGB Controls - -* RGB backlight lighting effect: [FN]up/down -* RGB backlight effect speed: [FN]left/right -* RGB backlight hue cycle: [FN]A/D -* RGB backlight brightness: [FN]W/S -* RGB backlight saturation: [FN]Q/E -* RGB backlight night mode toggle: [FN]Z (indicators still work) -* RGB backlight timeout: [FN]Encoder or "-" and "=" (default 15 minutes) - * F-key row indicator lights (cyan and blue) in FN layer display the current backlight timeout in minutes -* [FN]Z to turn off RGB backlighting (indicator lights still work); press again to toggle -* Left side RGB indicators in order from top: Scroll Lock (red), Numpad (blue), Capslock (green). - -### Advanced Controls - -* [FN]\ or [FN]B to get to bootloader mode (use key next to Left Shift on ISO) -* [FN][ESC] to clear EEPROM -* [FN]R to toggle N-key Rollover -* [FN]N to toggle system numlock -* [FN]/ is single-handed shortcut to Ctrl-Alt-Delete -* [FN]L is single-handed shortcut to Win-L (lock Windows) -* [FN][Encoder press] to sleep Windows PC - -## Layer Diagrams (ANSI) -### Base layer -![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/base.png) - -### FN Layer -![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/fn1.png) - -### Layer 2 (Numpad) -![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/numpad.png) - -### COLEMAK layer -![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png) diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h deleted file mode 100644 index f1609a4bb396..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h +++ /dev/null @@ -1,410 +0,0 @@ -/* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifdef RGB_MATRIX_ENABLE - -//Define variables for Game -bool fn_active = false; -RGB rgb_value; - -// Custom GMMK Pro-specific RGB color customizations (defaults found in quantum/color.h) -#define RGB_GODSPEED 0x00, 0xE4, 0xFF // color for matching keycaps -#define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colors -#define RGB_OFFBLUE 0x00, 0x80, 0xFF // new color: blue with a hint of green -#define RGB_DKRED 0x28, 0x00, 0x00 // new color: dark red -#define RGB_ORANGE2 0xFF, 0x28, 0x00 // fix: reduced green from 80 to 28 -#define RGB_PURPLE2 0x80, 0x00, 0xFF // fix: increased red from 7A to 80 -#define RGB_SPRINGGREEN2 0x00, 0xFF, 0x10 // fix: blue was 80, now 10 -#define RGB_YELLOW2 0xFF, 0xB0, 0x00 // fix: green was FF, now B0 -#define RGB_OFF RGB_BLACK - -// Added by gourdo1 for RGB testing -// Red Green Blue Expected GMMK Pro result -#define RGB_TEST1 0xFF, 0x00, 0x00 // Q - red good! -#define RGB_TEST2 0x0F, 0xFF, 0x00 // W - green good! -#define RGB_TEST3 0x00, 0x00, 0xFF // E - blue good! -#define RGB_TEST4 0xFF, 0xB0, 0x00 // R - yellow slightly green heavy - reduced green LED by quite a bit -#define RGB_TEST5 0x00, 0xFF, 0xFF // T - cyan good! -#define RGB_TEST6 0xFF, 0x00, 0xFF // Y - magenta very slightly blue heavy? -#define RGB_TEST7 0xFF, 0x28, 0x00 // U - orange very green heavy at default -#define RGB_TEST8 0xFF, 0x00, 0x80 // I - pink good! -#define RGB_TEST9 0x80, 0xFF, 0x00 // O - chartreus good! -#define RGB_TEST10 0x00, 0xFF, 0x10 // P - springgrn fixed: was too blue because green LED has blue in it already -#define RGB_TEST11 0x00, 0x80, 0xFF // A - grn blue good! -#define RGB_TEST12 0x80, 0x00, 0xFF // S - purple good! - -// RGB LED locations -enum led_location_map { - LED_ESC, // 0, ESC, k13 - LED_GRV, // 1, ~, k16 - LED_TAB, // 2, Tab, k11 - LED_CAPS, // 3, Caps, k21 - LED_LSFT, // 4, Sh_L, k00 - LED_LCTL, // 5, Ct_L, k06 - LED_F1, // 6, F1, k26 - LED_1, // 7, 1, k17 - LED_Q, // 8, Q, k10 - LED_A, // 9, A, k12 - LED_Z, // 10, Z, k14 - LED_LWIN, // 11, Win_L, k90 - LED_F2, // 12, F2, k36 - LED_2, // 13, 2, k27 - LED_W, // 14, W, k20 - LED_S, // 15, S, k22 - LED_X, // 16, X, k24 - LED_LALT, // 17, Alt_L, k93 - LED_F3, // 18, F3, k31 - LED_3, // 19, 3, k37 - LED_E, // 20, E, k30 - LED_D, // 21, D, k32 - LED_C, // 22, C, k34 - LED_F4, // 23, F4, k33 - LED_4, // 24, 4, k47 - LED_R, // 25, R, k40 - LED_F, // 26, F, k42 - LED_V, // 27, V, k44 - LED_F5, // 28, F5, k07 - LED_5, // 29, 5, k46 - LED_T, // 30, T, k41 - LED_G, // 31, G, k43 - LED_B, // 32, B, k45 - LED_SPC, // 33, SPACE, k94 - LED_F6, // 34, F6, k63 - LED_6, // 35, 6, k56 - LED_Y, // 36, Y, k51 - LED_H, // 37, H, k53 - LED_N, // 38, N, k55 - LED_F7, // 39, F7, k71 - LED_7, // 40, 7, k57 - LED_U, // 41, U, k50 - LED_J, // 42, J, k52 - LED_M, // 43, M, k54 - LED_F8, // 44, F8, k76 - LED_8, // 45, 8, k67 - LED_I, // 46, I, k60 - LED_K, // 47, K, k62 - LED_COMM, // 48, ,, k64 - LED_RALT, // 49, Alt_R, k95 - LED_F9, // 50, F9, ka6 - LED_9, // 51, 9, k77 - LED_O, // 52, O, k70 - LED_L, // 53, L, k72 - LED_DOT, // 54, ., k74 - LED_FN, // 55, FN, k92 - LED_F10, // 56, F10, ka7 - LED_0, // 57, 0, k87 - LED_P, // 58, P, k80 - LED_SCLN, // 59, ;, k82 - LED_SLSH, // 60, ?, k85 - LED_F11, // 61, F11, ka3 - LED_MINS, // 62, -, k86 - LED_LBRC, // 63, [, k81 - LED_QUOT, // 64, ", k83 - LED_RCTL, // 65, Ct_R, k04 - LED_F12, // 66, F12, ka5 - LED_L1, // 67, LED, l01 - LED_R1, // 68, LED, l11 - LED_INS, // 69, Prt, k97 -- remapped to INS - LED_L2, // 70, LED, l02 - LED_R2, // 71, LED, l12 - LED_DEL, // 72, Del, k65 - LED_L3, // 73, LED, l03 - LED_R3, // 74, LED, l13 - LED_PGUP, // 75, PgUp, k15 - LED_L4, // 76, LED, l04 - LED_R4, // 77, LED, l14 - LED_EQL, // 78, =, k66 - LED_RIGHT, // 79, Right, k05 - LED_L5, // 80, LED, l05 - LED_R5, // 81, LED, l15 - LED_END, // 82, End, k75 - LED_L6, // 83, LED, l06 - LED_R6, // 84, LED, l16 - LED_BSPC, // 85, BSpc, ka1 - LED_PGDN, // 86, PgDn, k25 - LED_L7, // 87, LED, l07 - LED_R7, // 88, LED, l17 - LED_RBRC, // 89, ], k61 - LED_RSFT, // 90, Sh_R, k91 - LED_L8, // 91, LED, l08 - LED_R8, // 92, LED, l18 - LED_BSLS, // 93, \, ka2 - LED_UP, // 94, Up, k35 - LED_LEFT, // 95, Left, k03 - LED_ENT, // 96, Enter, ka4 - LED_DOWN // 97, Down, k73 -}; - -const uint8_t LED_LIST_WASD[] = { - LED_W, - LED_A, - LED_S, - LED_D -}; - -const uint8_t LED_LIST_ARROWS[] = { - LED_LEFT, - LED_RIGHT, - LED_UP, - LED_DOWN -}; - -const uint8_t LED_LIST_FUNCROW[] = { - LED_ESC, - LED_F1, - LED_F2, - LED_F3, - LED_F4, - LED_F5, - LED_F6, - LED_F7, - LED_F8, - LED_F9, - LED_F10, - LED_F11, - LED_F12, - LED_INS -}; - -const uint8_t LED_LIST_NUMROW[] = { - LED_GRV, - LED_1, - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL, - LED_BSPC, - LED_DEL -}; - -const uint8_t LED_LIST_LETTERS[] = { -/* LED_1, - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, */ - LED_Q, - LED_W, - LED_E, - LED_R, - LED_T, - LED_Y, - LED_U, - LED_I, - LED_O, - LED_P, - LED_A, - LED_S, - LED_D, - LED_F, - LED_G, - LED_H, - LED_J, - LED_K, - LED_L, - LED_Z, - LED_X, - LED_C, - LED_V, - LED_B, - LED_N, - LED_M -}; - -const uint8_t LED_LIST_NUMPAD[] = { - LED_1, - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL, - LED_U, - LED_I, - LED_O, - LED_P, - LED_J, - LED_K, - LED_L, - LED_SCLN, - LED_ENT, - LED_M, - LED_COMM, - LED_DOT, - LED_SLSH, - LED_END, - LED_RIGHT -}; - -const uint8_t LED_SIDE_LEFT[] = { - LED_L1, - LED_L2, - LED_L3, - LED_L4, - LED_L5, - LED_L6, - LED_L7, - LED_L8 -}; - -const uint8_t LED_SIDE_RIGHT[] = { - LED_R1, - LED_R2, - LED_R3, - LED_R4, - LED_R5, - LED_R6, - LED_R7, - LED_R8 -}; - -#ifdef GAME_ENABLE -// Game LED rules -const uint8_t GAME_LIVES[] = { - LED_DEL, - LED_PGUP, - LED_PGDN, - LED_END -}; -const uint8_t GAME_PADDLE[] = { - LED_Z, - LED_X, - LED_C, - LED_V, - LED_B, - LED_N, - LED_M, - LED_COMM, - LED_DOT, - LED_SLSH -}; -const uint8_t GAME_SMILE1[] = { - LED_A, - LED_S, - LED_D, - LED_F, - LED_G, - LED_H, - LED_J, - LED_K, - LED_L, - LED_SCLN, - LED_QUOT -}; -const uint8_t GAME_SMILE2[] = { - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL -}; -const uint8_t GAME_R4[] = { - LED_X, - LED_C, - LED_V, - LED_B, - LED_N, - LED_M, - LED_COMM, - LED_DOT -}; -const uint8_t GAME_R3[] = { - LED_S, - LED_D, - LED_F, - LED_G, - LED_H, - LED_J, - LED_K, - LED_L, - LED_SCLN -}; -const uint8_t GAME_R2[] = { - LED_W, - LED_E, - LED_R, - LED_T, - LED_Y, - LED_U, - LED_I, - LED_O, - LED_P, - LED_LBRC -}; -const uint8_t GAME_R1[] = { - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL -}; -const uint8_t GAME_R0[] = { - LED_F1, - LED_F2, - LED_F3, - LED_F4, - LED_F5, - LED_F6, - LED_F7, - LED_F8, - LED_F9, - LED_F10, - LED_F11, - LED_F12 -}; -const uint8_t LED_GAME_OVER[] = { - LED_5, - LED_8, - LED_F, - LED_G, - LED_H, - LED_J, - LED_C, - LED_M -}; -#endif //GAME_ENABLE - -#endif \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk deleted file mode 100644 index 3a6786af6810..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk +++ /dev/null @@ -1,18 +0,0 @@ -LTO_ENABLE = yes # link time optimization -- achieves a smaller compiled size -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -VIA_ENABLE = yes - -MOUSEKEY_ENABLE = yes -TAP_DANCE_ENABLE = no -CAPS_WORD_ENABLE = yes # Enable built-in Caps Word functionality -IDLE_TIMEOUT_ENABLE = yes -STARTUP_NUMLOCK_ON = yes -ENCODER_DEFAULTACTIONS_ENABLE = no -COLEMAK_LAYER_ENABLE = yes # Enable Colemak layer / set to no to disable -INVERT_NUMLOCK_INDICATOR = yes -GAME_ENABLE ?= yes # Enable Paddle Game / set to no to disable -ifeq ($(strip $(GAME_ENABLE)), yes) - OPT_DEFS += -DGAME_ENABLE -endif diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/config.h deleted file mode 100644 index 52f82bd60e6b..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/config.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2021 Jonavin Eng - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 TAPPING_TOGGLE 2 -// TT set to two taps - -/* Handle GRAVESC combo keys */ -#define GRAVE_ESC_ALT_OVERRIDE - //Always send Escape if Alt is pressed -#define GRAVE_ESC_CTRL_OVERRIDE - //Always send Escape if Control is pressed - -#define TAPPING_TERM 180 - -#ifdef RGB_MATRIX_ENABLE - #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR - #define RGB_DISABLE_WHEN_USB_SUSPENDED -#endif - -// add fifth layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable -#if defined COLEMAK_LAYER_ENABLE - #define DYNAMIC_KEYMAP_LAYER_COUNT 5 - #define _COLEMAK 4 -#endif // COLEMAK_LAYER_ENABLE diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c deleted file mode 100644 index 7cb2d9f6fe7c..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c +++ /dev/null @@ -1,204 +0,0 @@ -/* Copyright 2021 Glorious, LLC - Copyright 2021 Jonavin - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H -#include "rgb_matrix_map.h" -#include "jonavin.h" - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Ins Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del -// Tab Q W E R T Y U I O P [ ] \ PgUp -// Caps A S D F G H J K L ; " Enter PgDn -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - [_BASE] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - TT(_LOWER), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFTCAPSWIN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_FN1] = LAYOUT( - _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CALC, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, - _______, _______, RGB_VAI, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, QK_BOOT, KC_HOME, - KC_CAPS, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, RGB_NITE,RGB_HUI, _______, _______, _______, KC_NUM, _______, RGB_TOD, RGB_TOI, _______, _______, RGB_MOD, _______, - _______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI - ), - - [_LOWER] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______, - _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PDOT, _______, _______, _______, KC_HOME, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, KC_END, - _______, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, _______, RCTL(KC_PGUP), _______, - _______, _______, _______, KC_BSPC, _______, _______, _______, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT) - ), - - [_RAISE] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - -#ifdef COLEMAK_LAYER_ENABLE - [_COLEMAK] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - 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_BSLS, KC_PGUP, - TT(_LOWER), 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_PGDN, - KC_LSFTCAPSWIN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), -#endif // COLEMAK_LAYER_ENABLE -}; - -#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults - void encoder_action_rgbhue(bool clockwise) { - if (clockwise) - rgblight_increase_hue_noeeprom(); - else - rgblight_decrease_hue_noeeprom(); - } - - bool encoder_update_user(uint8_t index, bool clockwise) { - uint8_t mods_state = get_mods(); - if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn - unregister_mods(MOD_BIT(KC_RSFT)); - encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_RSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour - encoder_action_rgbhue(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - switch(get_highest_layer(layer_state)) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(clockwise); - #endif - break; - default: - encoder_action_volume(clockwise); // Otherwise it just changes volume - break; - } - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; - } -#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE - -#ifdef RGB_MATRIX_ENABLE - // Capslock, Scroll lock and Numlock indicator on Left side lights. - bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - led_t led_state = host_keyboard_led_state(); - if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF); - if (led_state.scroll_lock) { - rgb_matrix_set_color(LED_L1, RGB_GREEN); - rgb_matrix_set_color(LED_L2, RGB_GREEN); - } - - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF - rgb_matrix_set_color(LED_L3, RGB_MAGENTA); - rgb_matrix_set_color(LED_L4, RGB_MAGENTA); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_L3, RGB_MAGENTA); - rgb_matrix_set_color(LED_L4, RGB_MAGENTA); - } - #endif // INVERT_NUMLOCK_INDICATOR - - if (led_state.caps_lock) { - rgb_matrix_set_color(LED_L5, RGB_RED); - rgb_matrix_set_color(LED_L6, RGB_RED); - rgb_matrix_set_color(LED_L7, RGB_RED); - } - if (keymap_config.no_gui) { - rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Win key when disabled - } - switch(get_highest_layer(layer_state)){ // special handling per layer - case _FN1: // on Fn layer select what the encoder does when pressed - rgb_matrix_set_color(LED_R2, RGB_RED); - rgb_matrix_set_color(LED_R3, RGB_RED); - rgb_matrix_set_color(LED_R4, RGB_RED); - rgb_matrix_set_color(LED_FN, RGB_RED); //FN key - - // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code - uint16_t timeout_threshold = get_timeout_threshold(); - if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_RED); - else if (timeout_threshold < 140) { - rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_RED); - rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_RED); - } else { // >= 140 minutes, just show these 3 lights - rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_RED); - rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_RED); - rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_RED); - } - break; - case _LOWER: - for (uint8_t i=0; i or encoder - - setting to zero disables timeout - - indicators in FN layer using RGB in FN and number rows to show the timeout in minutes - - LED address location map as enum definition in rgb_matrix_map.h - - LED group lists for arrows, numpad, F row, num row, left and right side LEDs - - default startup in single mode with default colour - - Capslock, Scroll Lock, and Num Lock (not set) indicator on left side LED - - Layer indicator on right side LED - - Fn key light up red when Fn layer activate - - Win Key light up red when Win Lock mode enabled - - Layer 2 activation lights up Numpad area - - Fn + Z to turn off all RGB lights except rgb indicators; press again to toggle - -rules.mk OPTIONS - Active features from userspace -STARTUP_NUMLOCK_ON = yes - - turns on NUMLOCK by default - -ENCODER_DEFAULTACTIONS_ENABLE = yes - - Enabled default encoder funtions - -TD_LSFT_CAPSLOCK_ENABLE = yes - - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS - -IDLE_TIMEOUT_ENABLE = yes - - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically - -INVERT_NUMLOCK_INDICATOR - - inverts the Num lock indicator, LED is on when num lokc is off - -COLEMAK_LAYER_ENABLE = yes - - Enabled optional 5th layer for COLEMAK layout - - Use Shift and encoder to enter 5th layer, right led indicator lights up BLUE - -## All layers diagram -Default layer -![image](https://user-images.githubusercontent.com/71780717/124177658-82324880-da7e-11eb-9421-b69100131062.png) - -Fn Layer -![image](https://user-images.githubusercontent.com/71780717/131255937-06c9691b-835f-4c94-93e6-6d1dc3de272b.png) - -Layer 2 (Caps Lock Mod) -![image](https://user-images.githubusercontent.com/71780717/124177683-8b231a00-da7e-11eb-9434-e2475f679a54.png) - -Optional COLEMAK layer -![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png) diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/rgb_matrix_map.h deleted file mode 100644 index 1ee53889054e..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/rgb_matrix_map.h +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright 2021 Jonavin Eng - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifdef RGB_MATRIX_ENABLE - - // Custom RGB Colours - #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps - #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Naurilus Font colours - - // RGB LED locations - enum led_location_map { - LED_ESC, // 0, ESC, k13 - LED_GRV, // 1, ~, k16 - LEB_TAB, // 2, Tab, k11 - LED_CAPS, // 3, Caps, k21 - LED_LSFT, // 4, Sh_L, k00 - LED_LCTL, // 5, Ct_L, k06 - LED_F1, // 6, F1, k26 - LED_1, // 7, 1, k17 - LED_Q, // 8, Q, k10 - LED_A, // 9, A, k12 - LED_Z, // 10, Z, k14 - LED_LWIN, // 11, Win_L, k90 - LED_F2, // 12, F2, k36 - LED_2, // 13, 2, k27 - LED_W, // 14, W, k20 - LED_S, // 15, S, k22 - LED_X, // 16, X, k24 - LED_LALT, // 17, Alt_L, k93 - LED_F3, // 18, F3, k31 - LED_3, // 19, 3, k37 - LED_E, // 20, E, k30 - LED_D, // 21, D, k32 - LED_C, // 22, C, k34 - LED_F4, // 23, F4, k33 - LED_4, // 24, 4, k47 - LED_R, // 25, R, k40 - LED_F, // 26, F, k42 - LED_V, // 27, V, k44 - LED_F5, // 28, F5, k07 - LED_5, // 29, 5, k46 - LED_T, // 30, T, k41 - LED_G, // 31, G, k43 - LED_B, // 32, B, k45 - LED_SPC, // 33, SPACE, k94 - LED_F6, // 34, F6, k63 - LED_6, // 35, 6, k56 - LED_Y, // 36, Y, k51 - LED_H, // 37, H, k53 - LED_N, // 38, N, k55 - LED_F7, // 39, F7, k71 - LED_7, // 40, 7, k57 - LED_U, // 41, U, k50 - LED_J, // 42, J, k52 - LED_M, // 43, M, k54 - LED_F8, // 44, F8, k76 - LED_8, // 45, 8, k67 - LED_I, // 46, I, k60 - LED_K, // 47, K, k62 - LED_COMM, // 48, ,, k64 - LED_RALT, // 49, Alt_R, k95 - LED_F9, // 50, F9, ka6 - LED_9, // 51, 9, k77 - LED_O, // 52, O, k70 - LED_L, // 53, L, k72 - LED_DOT, // 54, ., k74 - LED_FN, // 55, FN, k92 - LED_F10, // 56, F10, ka7 - LED_0, // 57, 0, k87 - LED_P, // 58, P, k80 - LED_SCLN, // 59, ;, k82 - LED_SLSH, // 60, ?, k85 - LED_F11, // 61, F11, ka3 - LED_MINS, // 62, -, k86 - LED_LBRC, // 63, [, k81 - LED_QUOT, // 64, ", k83 - LED_RCTL, // 65, Ct_R, k04 - LED_F12, // 66, F12, ka5 - LED_L1, // 67, LED, l01 - LED_R1, // 68, LED, l11 - LED_INS, // 69, Prt, k97 -- remapped to INS - LED_L2, // 70, LED, l02 - LED_R2, // 71, LED, l12 - LED_DEL, // 72, Del, k65 - LED_L3, // 73, LED, l03 - LED_R3, // 74, LED, l13 - LED_PGUP, // 75, PgUp, k15 - LED_L4, // 76, LED, l04 - LED_R4, // 77, LED, l14 - LED_EQL, // 78, =, k66 - LED_RIGHT, // 79, Right, k05 - LED_L5, // 80, LED, l05 - LED_R5, // 81, LED, l15 - LED_END, // 82, End, k75 - LED_L6, // 83, LED, l06 - LED_R6, // 84, LED, l16 - LED_BSPC, // 85, BSpc, ka1 - LED_PGDN, // 86, PgDn, k25 - LED_L7, // 87, LED, l07 - LED_R7, // 88, LED, l17 - LED_RBRC, // 89, ], k61 - LED_RSFT, // 90, Sh_R, k91 - LED_L8, // 91, LED, l08 - LED_R8, // 92, LED, l18 - LED_BSLS, // 93, \, ka2 - LED_UP, // 94, Up, k35 - LED_LEFT, // 95, Left, k03 - LED_ENT, // 96, Enter, ka4 - LED_DOWN // 97, Down, k73 - }; - - const uint8_t LED_LIST_WASD[] = { LED_W, LED_A, LED_S, LED_D }; - - const uint8_t LED_LIST_ARROWS[] = { LED_LEFT, LED_RIGHT, LED_UP, LED_DOWN }; - - const uint8_t LED_LIST_FUNCROW[] = { LED_ESC, LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12, LED_INS}; - - const uint8_t LED_LIST_NUMROW[] = { LED_GRV, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_DEL}; - - const uint8_t LED_LIST_NUMPAD[] = { - LED_7, LED_8, LED_9, - LED_U, LED_I, LED_O, - LED_J, LED_K, LED_L, - LED_M, LED_COMM, LED_DOT - }; - - const uint8_t LED_SIDE_LEFT[] = { LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7, LED_L8}; - - const uint8_t LED_SIDE_RIGHT[] = { LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7, LED_R8}; - -#endif diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/rules.mk b/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/rules.mk deleted file mode 100644 index 1ffc2058a262..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -VIA_ENABLE = yes -MOUSEKEY_ENABLE = no -TAP_DANCE_ENABLE = yes -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite - -TD_LSFT_CAPSLOCK_ENABLE = yes -IDLE_TIMEOUT_ENABLE = yes -STARTUP_NUMLOCK_ON = yes -ENCODER_DEFAULTACTIONS_ENABLE = no - -COLEMAK_LAYER_ENABLE = yes #Enable Colemak layer / set to no to disable -INVERT_NUMLOCK_INDICATOR = yes diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/ansi.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/ansi.c deleted file mode 100644 index a7ab0c9cc3ab..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/ansi.c +++ /dev/null @@ -1,241 +0,0 @@ -/* Copyright 2021 Gigahawk - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// clang-format off -#include "ansi.h" - -#ifdef RGB_MATRIX_ENABLE -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 }, - { 20, 18, 21, 23, 22, 94, 12, 19 }, - { 25, 30, 26, 31, 27, 32, 29, 24 }, - { 41, 36, 42, 37, 43, 38, 35, 40 }, - { 46, 89, 47, 34, 48, 72, 78, 45 }, - { 52, 39, 53, 97, 54, 82, 44, 51 }, - { 58, 63, 59, 64, NO_LED, 60, 62, 57 }, - { 11, 90, 55, 17, 33, 49, NO_LED, 69 }, - { NO_LED, 85, 93, 61, 96, 66, 50, 56 } -}, { - {0, 0}, // 0, ESC, k13 - {0, 15}, // 1, ~, k16 - {4, 26}, // 2, Tab, k11 - {5, 38}, // 3, Caps, k21 - {9, 49}, // 4, Sh_L, k00 - {2, 61}, // 5, Ct_L, k06 - {18, 0}, // 6, F1, k26 - {14, 15}, // 7, 1, k17 - {22, 26}, // 8, Q, k10 - {25, 38}, // 9, A, k12 - {33, 49}, // 10, Z, k14 - {20, 61}, // 11, Win_L, k90 - {33, 0}, // 12, F2, k36 - {29, 15}, // 13, 2, k27 - {36, 26}, // 14, W, k20 - {40, 38}, // 15, S, k22 - {47, 49}, // 16, X, k24 - {38, 61}, // 17, Alt_L, k93 - {47, 0}, // 18, F3, k31 - {43, 15}, // 19, 3, k37 - {51, 26}, // 20, E, k30 - {54, 38}, // 21, D, k32 - {61, 49}, // 22, C, k34 - {61, 0}, // 23, F4, k33 - {58, 15}, // 24, 4, k47 - {65, 26}, // 25, R, k40 - {69, 38}, // 26, F, k42 - {76, 49}, // 27, V, k44 - {79, 0}, // 28, F5, k07 - {72, 15}, // 29, 5, k46 - {79, 26}, // 30, T, k41 - {83, 38}, // 31, G, k43 - {90, 49}, // 32, B, k45 - {92, 61}, // 33, SPACE, k94 - {94, 0}, // 34, F6, k63 - {87, 15}, // 35, 6, k56 - {94, 26}, // 36, Y, k51 - {98, 38}, // 37, H, k53 - {105, 49}, // 38, N, k55 - {108, 0}, // 39, F7, k71 - {101, 15}, // 40, 7, k57 - {108, 26}, // 41, U, k50 - {112, 38}, // 42, J, k52 - {119, 49}, // 43, M, k54 - {123, 0}, // 44, F8, k76 - {116, 15}, // 45, 8, k67 - {123, 26}, // 46, I, k60 - {126, 38}, // 47, K, k62 - {134, 49}, // 48, ,, k64 - {145, 61}, // 49, Alt_R, k95 - {141, 0}, // 50, F9, ka6 - {130, 15}, // 51, 9, k77 - {137, 26}, // 52, O, k70 - {141, 38}, // 53, L, k72 - {148, 49}, // 54, ., k74 - {159, 61}, // 55, FN, k92 - {155, 0}, // 56, F10, ka7 - {145, 15}, // 57, 0, k87 - {152, 26}, // 58, P, k80 - {155, 38}, // 59, ;, k82 - {163, 49}, // 60, ?, k85 - {170, 0}, // 61, F11, ka3 - {159, 15}, // 62, -, k86 - {166, 26}, // 63, [, k81 - {170, 38}, // 64, ", k83 - {173, 61}, // 65, Ct_R, k04 - {184, 0}, // 66, F12, ka5 - {0, 8}, // 67, LED, l01 - {224, 8}, // 68, LED, l11 - {202, 0}, // 69, Prt, k97 - {0, 15}, // 70, LED, l02 - {224, 15}, // 71, LED, l12 - {224, 15}, // 72, Del, k65 - {0, 21}, // 73, LED, l03 - {224, 21}, // 74, LED, l13 - {224, 26}, // 75, PgUp, k15 - {0, 28}, // 76, LED, l04 - {224, 28}, // 77, LED, l14 - {173, 15}, // 78, =, k66 - {220, 64}, // 79, Right, k05 - {0, 35}, // 80, LED, l05 - {224, 35}, // 81, LED, l15 - {224, 49}, // 82, End, k75 - {0, 42}, // 83, LED, l06 - {224, 42}, // 84, LED, l16 - {195, 15}, // 85, BSpc, ka1 - {224, 38}, // 86, PgDn, k25 - {0, 48}, // 87, LED, l07 - {224, 48}, // 88, LED, l17 - {181, 26}, // 89, ], k61 - {182, 49}, // 90, Sh_R, k91 - {0, 55}, // 91, LED, l08 - {224, 55}, // 92, LED, l18 - {199, 26}, // 93, \, ka2 - {206, 52}, // 94, Up, k35 - {191, 64}, // 95, Left, k03 - {193, 38}, // 96, Enter, ka4 - {206, 64} // 97, Down, k73 -}, { - 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2, - 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 -}}; - -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { - {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 - {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 - {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 - {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21 - {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00 - {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06 - {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26 - {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17 - {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10 - {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12 - {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14 - {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90 - {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36 - {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27 - {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20 - {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22 - {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24 - {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93 - {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31 - {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37 - {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30 - {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32 - {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34 - {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33 - {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47 - {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40 - {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42 - {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44 - {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07 - {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46 - {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41 - {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43 - {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45 - {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94 - {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63 - {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56 - {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51 - {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53 - {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55 - {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71 - {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57 - {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50 - {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52 - {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54 - {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76 - {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67 - {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60 - {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62 - {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64 - {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95 - {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6 - {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77 - {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70 - {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72 - {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74 - {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92 - {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7 - {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87 - {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80 - {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82 - {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85 - {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3 - {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86 - {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81 - {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83 - {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04 - - {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5 - {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 67, LED, l01 - {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 68, LED, l11 - {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 69, Prt, k97 - {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 70, LED, l02 - {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 71, LED, l12 - {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 72, Del, k65 - {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 73, LED, l03 - {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 74, LED, l13 - {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 75, PgUp, k15 - {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 76, LED, l04 - {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 77, LED, l14 - {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 78, =, k66 - {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 79, Right, k05 - {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 80, LED, l05 - {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 81, LED, l15 - {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 82, End, k75 - {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 83, LED, l06 - {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 84, LED, l16 - {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 85, BSpc, ka1 - {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 86, PgDn, k25 - {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 87, LED, l07 - {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 88, LED, l17 - {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 89, ], k61 - {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 90, Sh_R, k91 - {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 91, LED, l08 - {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 92, LED, l18 - {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 93, \, ka2 - {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35 - {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 95, Left, k03 - {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 96, Enter, ka4 - {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 97, Down, k73 -}; -// clang-format on -#endif diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/config.h deleted file mode 100644 index 0a10e8c8cfda..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/config.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright 2021 Matt Gauf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// clang-format off -#pragma once - -/* Defaults */ -#define RAW_USAGE_PAGE 0x200 -#define RAW_USAGE_ID 0x40 - -/* Board Features */ -#define DYNAMIC_MACRO_SIZE 512 - -/* RGB Matrix Features */ -#define RGB_MATRIX_KEYPRESSES -#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR -#define RGB_DISABLE_WHEN_USB_SUSPENDED true - -/* RGB Matrix Framebuffer Config */ -// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS -// #define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 25 - -/* RGB Matrix Disabled Effects */ -#define DISABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue -#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_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in -#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel 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_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 - -#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) - #define DISABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation -#endif - -#if defined(RGB_MATRIX_KEYPRESSES) || defined(RGB_MATRIX_KEYRELEASES) - #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_CROSS // Hue & value pulse the same column and row of a single key hit 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_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 -#endif - -#define DISABLE_RGB_MATRIX_EFFECT_MAX -// clang-format on diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/helpers.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/helpers.c deleted file mode 100644 index d30224636b26..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/helpers.c +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright 2021 Matt Gauf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "rgb_matrix.h" - -void rgb_matrix_set_color_flags(uint8_t red, uint8_t green, uint8_t blue, uint8_t flags) { - for (uint8_t ii = 0; ii < RGB_MATRIX_LED_COUNT; ii++) { - if (g_led_config.flags[ii] & flags) { - rgb_matrix_set_color(ii, red, green, blue); - } - } -} diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c deleted file mode 100644 index ceddf81a77ea..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c +++ /dev/null @@ -1,222 +0,0 @@ -/* Copyright 2021 Matt Gauf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// clang-format off -#include QMK_KEYBOARD_H -#include "keymap_helpers.h" - - -enum custom_codes { - SET_MP = RGB_M_P, - SET_MB = RGB_M_B, - SET_MR = RGB_M_R, - - MG_F17 = SAFE_RANGE, - MG_F18, - MG_F19 -}; - - -enum layer_names { - _DEFAULT = 0, - _EFFECTS, - _UTILITY, - _DFUMODE -}; - - -// static uint8_t rgb_pin_fn_column[] = {PIN_DEL,PIN_PGUP,PIN_PGDN,PIN_END}; -// static uint8_t rgb_pin_left_underglow[] = {PIN_LED_L01,PIN_LED_L02,PIN_LED_L03,PIN_LED_L04,PIN_LED_L05,PIN_LED_L06,PIN_LED_L07,PIN_LED_L08}; -// static uint8_t rgb_pin_right_underglow[] = {PIN_LED_L11,PIN_LED_L12,PIN_LED_L13,PIN_LED_L14,PIN_LED_L15,PIN_LED_L16,PIN_LED_L17,PIN_LED_L18}; - - -#define MODS_SHIFT ((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) -#define MODS_CTRL ((get_mods() | get_oneshot_mods()) & MOD_MASK_CTRL) -#define MODS_ALT ((get_mods() | get_oneshot_mods()) & MOD_MASK_ALT) -#define MODS_GUI ((get_mods() | get_oneshot_mods()) & MOD_MASK_GUI) - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_DEFAULT] = LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MG_F17, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(_EFFECTS), KC_LEFT, KC_DOWN, KC_RGHT), - - [_EFFECTS] = LAYOUT(_______, KC_F13, KC_F14, KC_F15, KC_F16, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, MG_F18, _______, - _______, SET_MP, SET_MB, SET_MR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, RGB_SAI, RGB_SPD, - _______, _______, _______, _______, TG(_UTILITY), MO(_DFUMODE), _______, RGB_HUD, RGB_SAD, RGB_HUI), - - [_UTILITY] = LAYOUT(_______, _______, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_REC1, DM_REC2, DM_RSTP, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), - - [_DFUMODE] = LAYOUT(QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MG_F19, DB_TOGG, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -}; -// Runs constantly in the background, in a loop. -bool rgb_matrix_indicators_user(void) { - if (rgb_matrix_get_flags() & (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER)) { - - if (IS_LAYER_ON(_UTILITY)) { - rgb_matrix_set_color(PIN_F9, LEDGREE); - rgb_matrix_set_color(PIN_F10, LEDGREE); - rgb_matrix_set_color(PIN_F11, LED_RED); - rgb_matrix_set_color(PIN_F12, LED_RED); - rgb_matrix_set_color(PIN_PRINT, LEDTEAL); - } - - switch (get_highest_layer(layer_state)) { - case _DFUMODE: - rgb_matrix_set_color_all(LED_OFF); - rgb_matrix_set_color(PIN_ESC, LED_RED); - rgb_matrix_set_color(PIN_PRINT, LEDORAN); - return; - case _EFFECTS: - rgb_matrix_set_color(PIN_PRINT, LEDGREE); - break; - default: - break; - } - - if (host_keyboard_led_state().caps_lock) { - rgb_matrix_set_color(PIN_CAPS, RGB_WHITE); - } - - } - return false; -} - - -// Called on start -void dynamic_macro_record_start_user(int8_t direction) { - dprint("-- Recording Started\n"); - layer_on(_UTILITY); -} - - -// Called on end -void dynamic_macro_record_end_user(int8_t direction) { - dprint("-- Recording Ended\n"); -} - - -// Called on playback -void dynamic_macro_play_user(int8_t direction) { - dprint("-- Recording Playing\n"); -} - - -// Runs on encoder event -bool encoder_update_user(uint8_t index, bool clockwise) { - uint8_t curr_mod = get_mods(); - - if (IS_LAYER_ON(_EFFECTS)) { - if (clockwise) { - rgb_matrix_increase_val(); - } else { - rgb_matrix_decrease_val(); - } - } else { - if (MODS_GUI) { - if (MODS_GUI && MODS_SHIFT) { - clear_mods(); - if (clockwise) { - tap_code16(LSG(KC_Z)); - } else { - tap_code16(LGUI(KC_Z)); - } - set_mods(curr_mod); - } else if (MODS_GUI && MODS_ALT) { - clear_mods(); - if (clockwise) { - tap_code(KC_RIGHT); - } else { - tap_code(KC_LEFT); - } - set_mods(curr_mod); - } else { - if (clockwise) { - tap_code16(LGUI(KC_TAB)); - } else { - tap_code16(LSG(KC_TAB)); - } - } - } else { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; -} - - -// Runs on key event -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case MG_F17: - if (record->event.pressed) { - tap_code16(HYPR(KC_F17)); - } - return false; - case MG_F18: - if (record->event.pressed) { - tap_code16(HYPR(KC_F18)); - } - return false; - case MG_F19: - if (record->event.pressed) { - tap_code16(HYPR(KC_F19)); - } - return false; - case RGB_TOG: - if (record->event.pressed) { - switch (rgb_matrix_get_flags()) { - case LED_FLAG_ALL: - rgb_matrix_set_flags(LED_FLAG_NONE); - break; - case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: - rgb_matrix_set_flags(LED_FLAG_ALL); - break; - case LED_FLAG_UNDERGLOW: - rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER); - break; - default: - rgb_matrix_set_flags(LED_FLAG_UNDERGLOW); - break; - } - } - return false; - default: - return true; // Process all other keycodes normally - } -} -// clang-format on diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap_helpers.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap_helpers.h deleted file mode 100644 index 2a6e8dae7b75..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap_helpers.h +++ /dev/null @@ -1,165 +0,0 @@ -/* Copyright 2021 Matt Gauf - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// clang-format off -#include -#include "rgb_matrix_types.h" - -/* Color Codes */ -#define LEDWHIT 0xff, 0xff, 0xff -#define LED_RED 0xff, 0x00, 0x00 -#define LEDORAN 0xff, 0x29, 0x00 -#define LEDGOLD 0xff, 0x80, 0x00 -#define LEDYELL 0xff, 0xff, 0x00 -#define LEDCHAR 0x80, 0xff, 0x00 -#define LEDGREE 0x00, 0xff, 0x00 -#define LEDFOAM 0x00, 0xff, 0x40 -#define LEDTEAL 0x00, 0x80, 0xff -#define LEDBLUE 0x00, 0x00, 0xff -#define LEDPURP 0x80, 0x00, 0xff -#define LEDMAGE 0xff, 0x00, 0xff -#define LEDPINK 0xff, 0x00, 0x80 -#define LEDBLAC 0x00, 0x00, 0x00 -#define LED_OFF 0x00, 0x00, 0x00 - -/* Color Functions */ -void rgb_matrix_set_color_flags(uint8_t red, uint8_t green, uint8_t blue, uint8_t flags); - -/* Function Row */ -#define PIN_ESC 0 -#define PIN_F1 6 -#define PIN_F2 12 -#define PIN_F3 18 -#define PIN_F4 23 -#define PIN_F5 28 -#define PIN_F6 34 -#define PIN_F7 39 -#define PIN_F8 44 -#define PIN_F9 50 -#define PIN_F10 56 -#define PIN_F11 61 -#define PIN_F12 66 -#define PIN_PRINT 69 - -/* Number Row */ -#define PIN_0 57 -#define PIN_1 7 -#define PIN_2 13 -#define PIN_3 19 -#define PIN_4 24 -#define PIN_5 29 -#define PIN_6 35 -#define PIN_7 40 -#define PIN_8 45 -#define PIN_9 51 - -/* QWERTY */ -#define PIN_A 9 -#define PIN_B 32 -#define PIN_C 22 -#define PIN_D 21 -#define PIN_E 20 -#define PIN_F 26 -#define PIN_G 31 -#define PIN_H 37 -#define PIN_I 46 -#define PIN_J 42 -#define PIN_K 47 -#define PIN_L 53 -#define PIN_M 43 -#define PIN_N 38 -#define PIN_O 52 -#define PIN_P 58 -#define PIN_Q 8 -#define PIN_R 25 -#define PIN_S 15 -#define PIN_T 30 -#define PIN_U 41 -#define PIN_V 27 -#define PIN_W 14 -#define PIN_X 16 -#define PIN_Y 36 -#define PIN_Z 10 - -/* Symbols */ -#define PIN_MINUS 62 -#define PIN_EQUAL 78 -#define PIN_RBRACKET 89 -#define PIN_LBRACKET 63 -#define PIN_BSLASH 93 -#define PIN_SLASH 60 -#define PIN_SCOLON 59 -#define PIN_QUOTE 64 -#define PIN_COMMA 48 -#define PIN_DOT 54 -#define PIN_GRAVE 1 - -/* Indentation */ -#define PIN_TAB 2 -#define PIN_SPACE 33 - -/* Line Control */ -#define PIN_BSPACE 85 -#define PIN_ENTER 96 - -/* Indicator */ -#define PIN_CAPS 3 - -/* Left Modifiers */ -#define PIN_LSHIFT 4 -#define PIN_LCTRL 5 -#define PIN_LALT 17 -#define PIN_LGUI 11 - -/* Right Modifiers */ -#define PIN_RSHIFT 90 -#define PIN_RCTRL 65 -#define PIN_RALT 49 -#define PIN_FN 55 - -/* Arrow Keys */ -#define PIN_UP 94 -#define PIN_DOWN 97 -#define PIN_LEFT 95 -#define PIN_RIGHT 79 - -/* Fn Column */ -#define PIN_DEL 72 // ┳ TOP -#define PIN_PGUP 75 // ┃ -#define PIN_PGDN 86 // ┃ -#define PIN_END 82 // ┻ BOTTOM - -/* Left Side Underglow */ -#define PIN_LED_L01 67 // ┳ TOP -#define PIN_LED_L02 70 // ┃ -#define PIN_LED_L03 73 // ┃ -#define PIN_LED_L04 76 // ┃ -#define PIN_LED_L05 80 // ┃ -#define PIN_LED_L06 83 // ┃ -#define PIN_LED_L07 87 // ┃ -#define PIN_LED_L08 91 // ┻ BOTTOM - -/* Right Side Underglow */ -#define PIN_LED_L11 68 // ┳ TOP -#define PIN_LED_L12 71 // ┃ -#define PIN_LED_L13 74 // ┃ -#define PIN_LED_L14 77 // ┃ -#define PIN_LED_L15 81 // ┃ -#define PIN_LED_L16 84 // ┃ -#define PIN_LED_L17 88 // ┃ -#define PIN_LED_L18 92 // ┻ BOTTOM - -// clang-format on diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/readme.md b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/readme.md deleted file mode 100644 index 94e268a0e3c8..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/readme.md +++ /dev/null @@ -1,52 +0,0 @@ -# @mattgauf's GMMK Pro layout - -### `_DEFAULT` -> *Based on the default ansi layout, this keymap contains the following changes to the default layer.* - - Screensaver: `HYPER(F17)` - - `KC_PSCR` → `MG_F17` - - `KC_DEL` → `KC_HOME` - -> *Additionally the encoder will follow new rules when holding a key.* - - `KC_GUI` will cycle through applications (macOS variant) - - `KC_GUI + KC_ALT` will tap the left and right arrows. - - `KC_GUI + KC_SHIFT` will tap Undo and Redo (macOS variant) - -### `_EFFECTS` -> *The function layer is now used for additional layer access, effect keys, and media keys (following the Macbook Pro fn key layout).* - -> *Additionally while effects is active, the encoder will only adjust the brightness of the RGB matrix.* - - The RGB matrix effect and speed keys are located on the right hand vertical nav column. - - `KC_HOME` → `RGB_MOD` - - `KC_PGUP` → `RGB_RMOD` - - `KC_PGDN` → `RGB_SPI` - - `KC_END` → `RGB_SPD` - - The RGB matrix Hue, Saturation keys are mapped to the arrow keys. - - `KC_UP` → `RGB_SAI` - - `KC_DN` → `RGB_SAD` - - `KC_LEFT` → `RGB_HUD` - - `KC_RIGHT` → `RGB_HUI` - - The RGB matrix toggle is intercepted in process_record_user() cycling through the `LED_FLAG` modifiers. (`NONE`, `UNDERGLOW`, `KEYLIGHT`, `ALL`) - - `KC_SLSH` → `RGB_TOG` - - Hibernate: `HYPER(F18)` - - `MG_F17` → `MG_F18` - - -### `_UTILITY` -*The utility layer is currently used for remapping* `KF_F9` *to* `KC_F12` *&* `MG_F17` *to the dynamic macro keys.* - - Playback - - `KC_F9` → `DM_PLY1` - - `KC_F10` → `DM_PLY2` - - Record - - `KC_F11` → `DM_REC1` - - `KC_F12` → `DM_REC2` - - Stop Recording - - `MG_F17` → `DM_RSTP` - -### `_DFUMODE` -> *The final layer is used for resetting the board or triggering an immediate shutdown.* - - DFU Mode - - `KC_ESC` → `RESET` - - Shutdown: `HYPER(F19)` - - `MG_F17` → `MG_F19` - - Encoder press, triggers debug output. - - `KC_MUTE` → `DB_TOGG` diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/rules.mk b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/rules.mk deleted file mode 100644 index 76e1674d5848..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -# Build rules -LIB_SRC += ansi.c -LIB_SRC += helpers.c - -# Overrides -MOUSEKEY_ENABLE = no # Mouse keys diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c deleted file mode 100644 index 759c4034c062..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright 2021 Glorious, LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "moults31.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del -// Tab Q W E R T Y U I O P [ ] \ PgUp -// Caps A S D F G H J K L ; " Enter PgDn -// Sh_L Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT key (to put the board into bootloader mode). Without - // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB - // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI - // if that's your preference. - // - // To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and - // it'll be back to normal when you plug it back in. - [0] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MPLY, - 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_HOME, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_DEL, - 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(2), - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [1] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, _______, _______, QK_BOOT, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - [2] = LAYOUT( - M_GDB_STOP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_VSC_DBGCNSLFOCUS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, M_VSC_VIEWSIZEINC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, M_VSC_EDGRPPRV, M_VSC_VIEWSIZEDEC, M_VSC_EDGRPNXT, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_PLAY, M_GDB_PAUSE, - _______, M_VSC_FILEPRV, M_VSC_FILENXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_GDB_STEPOUT, _______, - _______, _______, _______, _______, _______, _______, _______, M_GDB_RESTART, M_GDB_STEPIN, M_GDB_STEPOVER - ), - -}; - - -bool encoder_update_user(uint8_t index, bool clockwise) { - const layer_state_t curr_layer = get_highest_layer(layer_state); - if(curr_layer == 2) { - if (clockwise) { - moults31_tap_custom_code(M_VSC_FILENXT); - } else { - moults31_tap_custom_code(M_VSC_FILEPRV); - } - } - else if(curr_layer == 1) { - if (clockwise) { - moults31_tap_custom_code(M_VSC_VIEWSIZEINC); - } else { - moults31_tap_custom_code(M_VSC_VIEWSIZEDEC); - } - } - else { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - return false; -} diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/keymap.c deleted file mode 100644 index e6627959c4c6..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/keymap.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright 2021 Glorious, LLC - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "vnmm.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [WIN_BASE] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, WIN_F, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [MAC_BASE] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, WIN_F, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [WIN_FN] = LAYOUT( - _______, DF_WIN, DF_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD,RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, - EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, _______, KC_MNXT - ), - - [MAC_FN] = LAYOUT( - _______, DF_WIN, DF_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD,RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, - EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, _______, KC_MNXT - ), -}; - -#if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [WIN_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, - [MAC_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, -}; -#endif diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/readme.md b/keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/readme.md deleted file mode 100644 index 28738e9bfc23..000000000000 --- a/keyboards/gmmk/pro/rev1/ansi/keymaps/vnmm/readme.md +++ /dev/null @@ -1,10 +0,0 @@ -# Vnmm's ANSI GMMK pro layout - -This keymap builds on the default but with a more sensible FN layer. - -## Features - -- Alphabet keys light up red when caps lock is on or shift is pressed -- Pressing FN shows keys that have a definition -- Via enabled -- Reset to bootloader with FN+Space diff --git a/keyboards/gmmk/pro/rev1/iso/info.json b/keyboards/gmmk/pro/rev1/iso/info.json index 52ea4538c8f4..492a5cf486d4 100644 --- a/keyboards/gmmk/pro/rev1/iso/info.json +++ b/keyboards/gmmk/pro/rev1/iso/info.json @@ -9,7 +9,7 @@ "device_version": "0.0.1" }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], diff --git a/keyboards/gmmk/pro/rev1/iso/iso.c b/keyboards/gmmk/pro/rev1/iso/iso.c index 0ded23162f6c..9744447587f0 100644 --- a/keyboards/gmmk/pro/rev1/iso/iso.c +++ b/keyboards/gmmk/pro/rev1/iso/iso.c @@ -137,7 +137,7 @@ led_config_t g_led_config = {{ 2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 }}; -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h deleted file mode 100644 index a0fbedde499b..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h +++ /dev/null @@ -1,146 +0,0 @@ -/* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Force n-key rollover -#define FORCE_NKRO - -// Set TT to two taps -#define TAPPING_TOGGLE 2 - -#ifdef COMMAND_ENABLE -#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL) //debug commands accessed by holding down both CTRLs: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_command.md -#endif - -// Caps Word configuration -#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD -#define CAPS_WORD_IDLE_TIMEOUT 10000 // Automatically turn off after x milliseconds of idle. 0 to never timeout. - -// Handle GRAVESC combo keys -#define GRAVE_ESC_ALT_OVERRIDE -// Always send Escape if Alt is pressed -#define GRAVE_ESC_CTRL_OVERRIDE -// Always send Escape if Control is pressed - -// #define TAPPING_TERM 180 -#define TAPPING_TERM 300 -#define TAPPING_TERM_PER_KEY - -#ifdef RGB_MATRIX_ENABLE - #define RGB_DISABLE_WHEN_USB_SUSPENDED - #define RGB_MATRIX_KEYPRESSES // Enables REACTIVE & SPLASH modes - #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables Heatmap, Rain - - // RGB step values - #define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10) - #define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17) - #define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17) - - // Startup values, when none have been set - #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default effect mode, if none has been set (was RGB_MATRIX_SOLID_COLOR) - #define RGB_MATRIX_DEFAULT_HUE 24 // Sets the default hue value, if none has been set - #define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set - #define RGB_MATRIX_DEFAULT_VAL 127 // Sets the default brightness value, if none has been set - #define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set - - // Uncomment any #undef line below to turn OFF any default enabled RGB background effect (enabled in keyboards/gmmk/pro/config.h). - #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Solid color (seems redundant; seems same as RGB_MATRIX_SOLID_COLOR?) - //#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static, horizontal rainbow - //#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static, vertical Rainbow - //#undef ENABLE_RGB_MATRIX_BREATHING // Breathing animation using selected HSV color - #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 (with white) - //#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness (with black) - #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades brightness (with white) - //#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 // Full gradient moving left to right - //#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom - #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient chevron scrolling left to right (too similar to cycle left right) - //#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. (seems mostly redundant with above) - #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Built-in cycling pinwheel (seems redundant with below) - //#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard - #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Spinning rainbow (more distracting transitions) - //#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Spinning rainbow (smoother) - #undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboard (distracting, busy) - #undef ENABLE_RGB_MATRIX_RAINDROPS // Sustained raindrops of blue, green, yellow (confusing to use with RGB layers) - //#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Sustained raindrops of blue, purple, pink, green (confusing to use with RGB layers, but slightly better than above) - #undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back (very subtle) - #undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left (very subtle) - #undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right (very subtle) - //#undef ENABLE_RGB_MATRIX_PIXEL_RAIN // Non-sustained raindrops of pastel colors - #undef ENABLE_RGB_MATRIX_PIXEL_FLOW // More active version of pixel rain with quick cycling (unusable, very distracting) - #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Same as Pixel Flow but with current HSV only (somewhat distracting) - //Only enabled if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined - //#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Fading heatmap that follows keystrokes (has buggy side LEDs that glow red) - //#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix (has buggy side LEDs that glow red) - //Only enabled if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Keyboard lights up in chosen hue, key hits shown in complementary hue (try this as default?) - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (Single key) - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but more intense (Multi-key) - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single current color fade (Single key) - //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-key) - #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades (Single key) - //#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. (distracting on multiple keystroke hits) - #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (distracting on multiple key hits) - //#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. -#endif //RGB_MATRIX_ENABLE - -// Add a layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable -#if defined COLEMAK_LAYER_ENABLE - #ifdef GAME_ENABLE - #define DYNAMIC_KEYMAP_LAYER_COUNT 6 - #define _COLEMAK 5 - #else - #define DYNAMIC_KEYMAP_LAYER_COUNT 5 - #define _COLEMAK 4 - #endif //GAME_ENABLE -#endif // COLEMAK_LAYER_ENABLE - -/* -// Mouse Keys Accelerated Mode Definitions -#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10) -#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement. -#define MOUSEKEY_MOVE_DELTA 8 // Step size (default: 8) -#define MOUSEKEY_MAX_SPEED 9 // Maximum cursor speed at which acceleration stops (default: 10) -#define MOUSEKEY_TIME_TO_MAX 150 // Time until maximum cursor speed is reached (default: 30) -#define MOUSEKEY_WHEEL_DELAY 0 // Delay between pressing a wheel key and wheel movement (default: 10) -#define MOUSEKEY_WHEEL_INTERVAL 80 // Time between wheel movements (default: 80) -#define MOUSEKEY_WHEEL_MAX_SPEED 8 // Maximum number of scroll steps per scroll action (default: 8) -#define MOUSEKEY_WHEEL_TIME_TO_MAX 40 // Time until maximum scroll speed is reached (default: 40) -*/ - -// Mouse Keys Kinetic Mode Definitions -#define MK_KINETIC_SPEED // Enable Kinetic mode: Uses a quadratic curve on cursor speed to allow precise movements at the beginning and increases speed thereafter. -#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10) -#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement. -#define MOUSEKEY_MOVE_DELTA 5 // Step size for accelerating from initial to base speed (default: 8) -#define MOUSEKEY_MOVE_MAX 50 // use instead of BASE SPEED to limit speed in Kinetic mode -#define MOUSEKEY_INITIAL_SPEED 100 // Initial speed of the cursor in pixels per second (default: 100) -//#define MOUSEKEY_BASE_SPEED 800 // (broken in QMK 0.16.0) Maximum cursor speed at which acceleration stops (default: 1000) -#define MOUSEKEY_DECELERATED_SPEED 400 // Decelerated cursor speed (default: 400) -#define MOUSEKEY_ACCELERATED_SPEED 2000 // Accelerated cursor speed (default: 3000) -#define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16 // Initial number of movements of the mouse wheel (default: 16) -#define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32 // Maximum number of movements at which acceleration stops (default: 32) -#define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 // Accelerated wheel movements (default: 48) -#define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 // Decelerated wheel movements (default: 8) diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c deleted file mode 100644 index 44fed8fd294d..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c +++ /dev/null @@ -1,726 +0,0 @@ -/* Copyright 2021 Glorious, LLC - Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 RustyBrakes (ISO conversion) - Copyright 2022 gourdo1 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -// Note: Many advanced functions referenced in this file are defined in /users/gourdo1/gourdo1.c - -#include QMK_KEYBOARD_H - -#include "rgb_matrix_map.h" - -#include "gourdo1.h" - -#include "paddlegame.h" - -#include - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Base Layout - * - * ,-------------------------------------------------------------------------------------------------------------. - * | Esc || F1 | F2 | F3 | F4 || F5 | F6 | F7 | F8 || F9 | F10 | F11 | F12 || Home || Mute | - * |=============================================================================================================| - * | ISO | 1 ! | 2 @ | 3 # | 4 $ | 5 % | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ | = + | Backspc || Del | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| - * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ } | ] } | || PgUp | - * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------| - * | Capslock | A | S | D | F | G | H | J | K | L | ; : | ' " | ISO| Enter || PgDn | - * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| - * | LShift | ISO | Z | X | C | V | B | N | M | , < | . > | / ? | RShift || Up || End | - * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| - * | Ctrl | Win | LAlt | Space | RAlt | Fn | Ctrl || Left | Down | Rght | - * `------------------------------------------------------------------------------------------------------------' - */ - - [_BASE] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LEFTOFENC, ENCFUNC, - 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, BELOWENC, - 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_PGUP, - CAPSNUM, 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_PGDN, - 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - /* FN1 Layout - * - * ,-------------------------------------------------------------------------------------------------------------. - * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause ||Sleep | - * |=============================================================================================================| - * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |RGBTOD|RGBTOI| ________ ||RGBTOG| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| - * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ | || Home | - * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------| - * | Capslock |RGBHUD|RGBVAD|RGBHUI| ____|GMAIL |HTMAIL| ____ | ____ | ____ | ____ | ____ | ___ | ____ || End | - * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| - * | ____ |QK_BOOT|RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| CAD | ______ ||RGBMOD|| ____ | - * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| - * | ____ | WinKyLk | ____ | _____ | ____ | ____ | ____ ||RGBSPD|RGBRMD|RGBSPI| - * `------------------------------------------------------------------------------------------------------------' - */ - - #ifdef GAME_ENABLE - [_FN1] = LAYOUT( - EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_SLEP, - PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR,TG_ENGCAP,RGB_TOD,RGB_TOI, _______, RGB_TOG, - _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, TG(_GAME),SWAP_L, SWAP_R, KC_HOME, - KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, _______, KC_END, - _______, QK_BOOT, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NUM, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, - _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI - ), - - [_GAME] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - #else - [_FN1] = LAYOUT( - EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_SLEP, - PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR,TG_ENGCAP,RGB_TOD,RGB_TOI, _______, RGB_TOG, - _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, KC_HOME, - KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, _______, KC_END, - _______, QK_BOOT, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NUM, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______, - _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI - ), - #endif //GAME_ENABLE - - /* _NUMPADMOUSE Layout - * Note: A symbol preceded by "P" is a Numpad-encoded version of the key -- any app that differentiates will recognize the char as coming from a physical numpad. - * ,-------------------------------------------------------------------------------------------------------------. - * | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ || ____ | - * |=============================================================================================================| - * | ____ | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P0 | P- | P+ | ________ || ____ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------| - * | ______ | PGUP | Up | PGDN | None | None | None | P4 | P5 | P6 | P+ | ____ | ____ | || WhUp | - * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------| - * | ________ | Left | Down | Rght | None| None | None | P1 | P2 | P3 | P* | ___ | ___ |P-Enter|| WhDn | - * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------| - * | __________ | None | ____ | ____ | ____ | None | None | 0 | 00 | P. | P/ | MBt1 ||MS_UP || MBt2 | - * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======| - * | ____ | ____ | ____ | _____ | ____ | ____ | MBt3 ||MS_LT |MS_DN |MS_RT | - * `------------------------------------------------------------------------------------------------------------' - */ - - [_NUMPADMOUSE] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______, - _______, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, KC_WH_U, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, _______, _______, KC_PENT, KC_WH_D, - _______, _______, KC_NO, _______, _______, _______, _______, _______, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, KC_PENT, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R - ), - - [_MOUSEKEY] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_D, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, - _______, _______, _______, _______, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R - ), - - #ifdef COLEMAK_LAYER_ENABLE - [_COLEMAK] = LAYOUT( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, - KC_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_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_PGUP, - _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, - _______, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - _______, _______, _______, KC_SPC, KC_RALT, _______, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - #endif // COLEMAK_LAYER_ENABLE -}; - -#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults -void encoder_action_rgbhue(bool clockwise) { - if (clockwise) - rgblight_increase_hue_noeeprom(); - else - rgblight_decrease_hue_noeeprom(); -} - -bool encoder_update_user(uint8_t index, bool clockwise) { - uint8_t mods_state = get_mods(); - if (mods_state & MOD_BIT(KC_LSFT)) { // If you are holding L shift, encoder changes layers - encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_RSFT)) { // If you are holding R shift, Page up/dn - unregister_mods(MOD_BIT(KC_RSFT)); - encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_RSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour - encoder_action_rgbhue(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - switch (get_highest_layer(layer_state)) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(clockwise); - #endif - break; - #ifdef GAME_ENABLE - case _GAME: - // Game: Paddle movement - if (damage_count == 0) { - if (clockwise) { - if (paddle_pos_full < 15) ++paddle_pos_full; - } else { - if (paddle_pos_full > 0) --paddle_pos_full; - } - } - break; - #endif //GAME_ENABLE - default: - encoder_action_volume(clockwise); // Otherwise it just changes volume - break; - } - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; -} -#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE - -#ifdef RGB_MATRIX_ENABLE - -// Game logic -#ifdef GAME_ENABLE -void init_ball(uint8_t i) { - i &= 1; - ball[i].on = true; - ball[i].up = false; - ball[i].y = 0; - ball[i].x = rand() % 16; - - // Set initial ball state - if (ball[i].x < 8) { - ball[i].left = false; - } else { - ball[i].x -= 4; - ball[i].left = true; - } - - // 1/4 chance of being an enemy ball after level 6 - if (level_number > 3) { - ball[i].enemy = ((rand() % 4) == 0); - } else { - ball[i].enemy = false; - } -} - -void hurt_paddle(void) { - if (paddle_lives > 0) { - --paddle_lives; - } - damage_timer = timer_read(); - damage_count = 10; - - // Reset board - init_ball(0); - ball[1].on = false; -} -#endif //GAME_ENABLE - -// Capslock, Scroll lock and Numlock indicator on Left side lights. -bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF); - - led_t led_state = host_keyboard_led_state(); - - // Scroll Lock RGB setup - if (led_state.scroll_lock) { - rgb_matrix_set_color(LED_L3, RGB_RED); - rgb_matrix_set_color(LED_L4, RGB_RED); - rgb_matrix_set_color(LED_TAB, RGB_RED); - rgb_matrix_set_color(LED_F12, RGB_RED); - } - -/* - // System NumLock warning indicator RGB setup - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled - rgb_matrix_set_color(LED_GRV, RGB_ORANGE2); - rgb_matrix_set_color(LED_L1, RGB_ORANGE2); - rgb_matrix_set_color(LED_L2, RGB_ORANGE2); - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - rgb_matrix_set_color(LED_FN, RGB_ORANGE2); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_GRV, RGB_ORANGE2); - rgb_matrix_set_color(LED_L1, RGB_ORANGE2); - rgb_matrix_set_color(LED_L2, RGB_ORANGE2); - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - rgb_matrix_set_color(LED_FN, RGB_ORANGE2); - } - #endif // INVERT_NUMLOCK_INDICATOR -*/ - - // CapsLock RGB setup - if (led_state.caps_lock) { - if (user_config.rgb_hilite_caps) { - if (user_config.rgb_english_caps) { - for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) { - rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE); - } - } - else { - for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS_DE); i++) { - rgb_matrix_set_color(LED_LIST_LETTERS_DE[i], RGB_CHARTREUSE); - } - } - rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); - } - else { - rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE); - } - } - - // Winkey disabled (gaming) mode RGB setup - if (keymap_config.no_gui) { - rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Winkey red when disabled - rgb_matrix_set_color(LED_W, RGB_CHARTREUSE); //light up gaming keys with WSAD higlighted - rgb_matrix_set_color(LED_S, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_A, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_D, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_Q, RGB_ORANGE2); - rgb_matrix_set_color(LED_E, RGB_ORANGE2); - rgb_matrix_set_color(LED_R, RGB_ORANGE2); - rgb_matrix_set_color(LED_TAB, RGB_ORANGE2); - rgb_matrix_set_color(LED_F, RGB_ORANGE2); - rgb_matrix_set_color(LED_Z, RGB_ORANGE2); - rgb_matrix_set_color(LED_X, RGB_ORANGE2); - rgb_matrix_set_color(LED_C, RGB_ORANGE2); - rgb_matrix_set_color(LED_V, RGB_ORANGE2); - rgb_matrix_set_color(LED_SPC, RGB_ORANGE2); - rgb_matrix_set_color(LED_LCTL, RGB_ORANGE2); - rgb_matrix_set_color(LED_LSFT, RGB_ORANGE2); - } - - // Fn selector mode RGB setup - switch (get_highest_layer(layer_state)) { // special handling per layer - case _FN1: // on Fn layer select what the encoder does when pressed - rgb_matrix_set_color(LED_FN, RGB_RED); //FN key - - //NEW RGB LIGHTING TO RING KEYBOARD ON FN LAYER ACTIVATION: - for (uint8_t j = 0; j < ARRAYSIZE(LED_LIST_FUNCROW); j++) { - rgb_matrix_set_color(LED_LIST_FUNCROW[j], RGB_RED); - } - rgb_matrix_set_color(LED_LCTL, RGB_RED); - rgb_matrix_set_color(LED_LALT, RGB_RED); - rgb_matrix_set_color(LED_SPC, RGB_RED); - rgb_matrix_set_color(LED_LWIN, RGB_RED); - //rgb_matrix_set_color(LED_RALT, RGB_RED); - rgb_matrix_set_color(LED_FN, RGB_OFFBLUE); - //rgb_matrix_set_color(LED_RCTL, RGB_RED); - rgb_matrix_set_color(LED_BSLS, RGB_RED); - rgb_matrix_set_color(LED_L1, RGB_RED); - rgb_matrix_set_color(LED_L2, RGB_RED); - rgb_matrix_set_color(LED_L3, RGB_RED); - rgb_matrix_set_color(LED_L4, RGB_RED); - rgb_matrix_set_color(LED_L5, RGB_RED); - rgb_matrix_set_color(LED_L6, RGB_RED); - rgb_matrix_set_color(LED_L7, RGB_RED); - rgb_matrix_set_color(LED_L8, RGB_RED); - rgb_matrix_set_color(LED_DOWN, RGB_RED); - rgb_matrix_set_color(LED_LEFT, RGB_RED); - rgb_matrix_set_color(LED_RIGHT, RGB_RED); - rgb_matrix_set_color(LED_R1, RGB_RED); - rgb_matrix_set_color(LED_R2, RGB_RED); - rgb_matrix_set_color(LED_R3, RGB_RED); - rgb_matrix_set_color(LED_R4, RGB_RED); - rgb_matrix_set_color(LED_R5, RGB_RED); - rgb_matrix_set_color(LED_R6, RGB_RED); - rgb_matrix_set_color(LED_R7, RGB_RED); - rgb_matrix_set_color(LED_R8, RGB_RED); - rgb_matrix_set_color(LED_MINS, RGB_OFFBLUE); - rgb_matrix_set_color(LED_EQL, RGB_OFFBLUE); - - // Indicator for paddle game enabled in build - #ifdef GAME_ENABLE - rgb_matrix_set_color(LED_P, RGB_CHARTREUSE); - #else - rgb_matrix_set_color(LED_P, RGB_RED); - #endif // GAME_ENABLE - - // System NumLock warning indicator RGB setup - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #endif // INVERT_NUMLOCK_INDICATOR - - //Add RGB statuses for user.config toggles - if (user_config.rgb_hilite_caps) { - rgb_matrix_set_color(LED_1, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_1, RGB_PURPLE); - } - if (user_config.rgb_hilite_numpad) { - rgb_matrix_set_color(LED_2, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_2, RGB_PURPLE); - } - if (user_config.esc_double_tap_to_baselyr) { - rgb_matrix_set_color(LED_3, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_3, RGB_PURPLE); - } - if (user_config.del_right_home_top) { - rgb_matrix_set_color(LED_4, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_4, RGB_PURPLE); - } - if (user_config.double_tap_shift_for_capslock) { - rgb_matrix_set_color(LED_5, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_5, RGB_PURPLE); - } - if (user_config.encoder_press_mute_or_media) { - rgb_matrix_set_color(LED_6, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_6, RGB_PURPLE); - } - if (user_config.ins_on_shft_bkspc_or_del) { - rgb_matrix_set_color(LED_7, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_7, RGB_PURPLE); - } - if (user_config.disable_space_mods) { - rgb_matrix_set_color(LED_8, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_8, RGB_PURPLE); - } - if (user_config.autocorrect) { - rgb_matrix_set_color(LED_9, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_9, RGB_PURPLE); - } - if (user_config.rgb_english_caps) { - rgb_matrix_set_color(LED_0, RGB_GREEN); - } else { - rgb_matrix_set_color(LED_0, RGB_PURPLE); - } - - // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code - uint16_t timeout_threshold = get_timeout_threshold(); - if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_BLUE); - else if (timeout_threshold < 140) { - rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold % 10)], RGB_BLUE); - } else { // >= 140 minutes, just show these 3 lights - rgb_matrix_set_color(LED_LIST_FUNCROW[10], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_FUNCROW[11], RGB_CYAN); - rgb_matrix_set_color(LED_LIST_FUNCROW[12], RGB_CYAN); - } - break; - - // Numpad & Mouse Keys overlay RGB - case _NUMPADMOUSE: - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_N, RGB_ORANGE2); - } - #endif // INVERT_NUMLOCK_INDICATOR - if (user_config.rgb_hilite_numpad) { - for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) { - rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE); - } - rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); - rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); - rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); - rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_END, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE); - } else { - rgb_matrix_set_color(LED_L5, RGB_OFFBLUE); - rgb_matrix_set_color(LED_L6, RGB_OFFBLUE); - rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE); - } - break; - - // MOUSEKEYS mode RGB - case _MOUSEKEY: - rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE); - rgb_matrix_set_color(LED_RCTL, RGB_CYAN); - rgb_matrix_set_color(LED_RSFT, RGB_CYAN); - rgb_matrix_set_color(LED_END, RGB_CYAN); - rgb_matrix_set_color(LED_PGUP, RGB_OFFBLUE); - rgb_matrix_set_color(LED_PGDN, RGB_OFFBLUE); - break; - - // Colemak layer RGB - #ifdef COLEMAK_LAYER_ENABLE - case _COLEMAK: - for (uint8_t i = 0; i < ARRAYSIZE(LED_SIDE_RIGHT); i++) { - rgb_matrix_set_color(LED_SIDE_RIGHT[i], RGB_MAGENTA); - rgb_matrix_set_color(LED_SIDE_LEFT[i], RGB_MAGENTA); - } - break; - #endif - - // Paddle game logic - #ifdef GAME_ENABLE - case _GAME: - if (!game_start) { - srand((unsigned int) timer_read()); - - // Store user light settings - last_hsv = rgb_matrix_get_hsv(); - rgb_matrix_sethsv_noeeprom(0, 0, 0); - - paddle_pos_full = 8; - paddle_lives = 4; - bounce_count = 0; - level_number = 0; - damage_count = 0; - - init_ball(0); - ball[1].on = false; - ball_timer = timer_read(); - - game_start = true; - } - - // Set level indicator - if (level_number < 12) { - rgb_matrix_set_color(GAME_R0[level_number], RGB_BLUE); - } - - // Set life bar - for (uint8_t i = 0; i < paddle_lives; i++) { - rgb_matrix_set_color(GAME_LIVES[i], RGB_GREEN); - } - - uint8_t paddle_pos = paddle_pos_full >> 1; - - if (damage_count > 0) { - // Flash paddle when receiving damage - if (timer_elapsed(damage_timer) > 500) { - --damage_count; - damage_timer = timer_read(); - } - if ((damage_count & 1) == 0) { - for (uint8_t i = 0; i < 3; i++) { - rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED); - } - } - if (damage_count == 0) { - ball_timer = timer_read(); - } - - } else if (paddle_lives == 0) { - // Game over - for (uint8_t i = 0; i < ARRAY_SIZE(LED_GAME_OVER); i++) { - rgb_matrix_set_color(LED_GAME_OVER[i], RGB_RED); - } - - } else if (level_number >= 12) { - // You win - if (rgb_value.r == 0xff && rgb_value.g < 0xff) { - if (rgb_value.b > 0) { - --rgb_value.b; - } else { - ++rgb_value.g; - } - } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) { - if (rgb_value.r > 0) { - --rgb_value.r; - } else { - ++rgb_value.b; - } - } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) { - if (rgb_value.g > 0) { - --rgb_value.g; - } else { - ++rgb_value.r; - } - } - - for (uint8_t i = 0; i < 3; i++) { - rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b); - } - rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); - rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); - rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b); - rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b); - - } else { - // normal game loop - - // Set paddle position - for (uint8_t i = 0; i < 3; i++) { - rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN); - } - - // Ball movement logic happens at intervals - if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) { - for (int i = 0; i < 2; ++i) { - if (ball[i].on) { - // Ball movement - if (ball[i].up) { - if (ball[i].y > 0) { - --ball[i].y; - if (!ball[i].left) ++ball[i].x; - } else { - // Count reflections. If > 10, increase level - ++bounce_count; - if (bounce_count >= 10) { - bounce_count = 0; - ++level_number; - } - ball[i].on = false; - } - } else { - ++ball[i].y; - if (ball[i].left) --ball[i].x; - if (ball[i].y > 4) { - // Remove a life if ball isn't returned and isn't enemy - if (!ball[i].enemy) { - hurt_paddle(); - i = 2; - } else { - ball[i].on = false; - } - } - } - } - } - if (ball[0].y == 4 && !ball[1].on) { - init_ball(1); - } - if (ball[1].y == 4 && !ball[0].on) { - init_ball(0); - } - if (!ball[0].on && !ball[1].on) { - init_ball(0); - } - ball_timer = timer_read(); - } - - // Other ball stuff - for (int i = 0; i < 2; ++i) { - if (ball[i].on) { - // Ball deflection logic - if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) { - if (!ball[i].enemy) { - --ball[i].y; - if (!ball[i].left) { - ++ball[i].x; - } - ball[i].up = true; - } else { - hurt_paddle(); - i = 2; - } - } - - // Ball display - switch (ball[i].y) { - case 0: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE); - } - break; - - case 1: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE); - } - break; - - case 2: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE); - } - break; - - case 3: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE); - } - break; - - case 4: - if (ball[i].enemy) { - rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED); - } else { - rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE); - } - break; - } - } - } - } - break; - #endif //GAME_ENABLE - default: - #ifdef GAME_ENABLE - if (game_start) { - // Reset lighting settings - game_start = false; - rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v); - } - #endif //GAME_ENABLE - break; - } - return false; -} -#endif - -void keyboard_post_init_keymap(void) { - // keyboard_post_init_user() moved to userspace - #ifdef RGB_MATRIX_ENABLE - activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle - #endif -} diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h deleted file mode 100644 index 3d33975cfed9..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2021 Glorious, LLC - Copyright 2021 Tomas Guinan - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifdef GAME_ENABLE -const uint16_t GAME_TIMER[] = { - 400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150 -}; - -bool game_start = false; -HSV last_hsv; -static uint8_t paddle_pos_full; -static uint8_t paddle_lives; -static uint8_t level_number; -static uint8_t bounce_count; -static uint8_t damage_count; -static uint16_t damage_timer; -static uint16_t ball_timer; - -struct BallStruct -{ - uint8_t x; - uint8_t y; - bool on; - bool up; - bool left; - bool enemy; -}; - -struct BallStruct ball[2]; - -void init_ball(uint8_t i); -void hurt_paddle(void); - -#endif //GAME_ENABLE \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md deleted file mode 100644 index aebccf6d147a..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md +++ /dev/null @@ -1,124 +0,0 @@ -# [gourdo1's](mailto:gourdo1@outlook.com) GMMK Pro Keyboard Layouts - -These Windows-centric layouts are based on Jonavin's GMMK Pro [layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin) with many additions, fixes, a revamped keymap, persistent user customizations, updated layers, Pascal Getreuer's [autocorrect](https://getreuer.info/posts/keyboards/autocorrection/), Tomas Guinan's [paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) and expanded RGB controls and effects. - -![image](https://raw.githubusercontent.com/gourdo1/media/main/susuwatari.jpg) - -* Up-to-date [Changelog](https://github.com/gourdo1/gmmkpro-media/blob/main/changelog.md) -* Latest [ANSI firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_ansi_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases)) -* Latest [ISO firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_iso_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases)) -* Printable Keyboard [Cheatsheet](https://github.com/gourdo1/gmmkpro-media/raw/main/GMMK_Pro_Cheatsheet.pdf) - -## Features - -### Core Functionality - -* Support for both [ANSI](https://keebnews.com/ansi-vs-iso/) and [ISO](https://keebnews.com/ansi-vs-iso/) keyboard layouts. -* Quick & Easy Customization: Open a text editor and hit [FN]` (tilde on ANSI; the key left of '1' on ISO layouts) to view toggle-able settings. -* [VIA](https://www.caniusevia.com/) support enabled. -* AutoCorrection: Pascal Getreuer's AutoCorrect code incorporated with 400 word dictionary on words > 4 characters. -* Most [default Glorious shortcuts](https://cdn.shopify.com/s/files/1/0549/2681/files/GMMK_Pro_User_Guide.pdf) enabled -* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with [FN]R -* 1000Hz polling rate with 5ms debounce time for quick response in games. -* Mouse Keys! Don't want to move your hands off the keyboard or you didn't bring it with you? Use cursor keys to move the mouse. -* Overlay numpad on 789-UIOP-JKL;-M,. & Space-bar mapped to Enter key for rapid number entry. -* Gaming mode ([FN]Win-key) locks out Win-key and double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming keys. -* Caps Word enabled: To capitalize the next word only, press and release left and right shift at the same time. -* Multi-monitor app moving shortcuts: [FN] ],[ (square brackets) to move current app window to next monitor. -* Capslock toggled by double tap of Left Shift key or FN + Capslock (RGB green highlighted). -* Paddle game accessible via [FN]P. Hit [FN]P again or double tap [ESC] to exit. -* Single-handed shortcut for Ctrl-Alt-Delete: [FN]/ -* Single-handed shortcut for WinKey-L (lock Windows): [FN]L -* Domain shortcuts: [FN]. for .com, [FN]O for outlook.com, [FN]Y for yahoo.com, [FN]H for hotmail.com, [FN]G for gmail.com. -* [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md) accessible via [FN]Backslash for ANSI and FN(key next to Left Shift) for ISO -* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: [FN]F11, [FN]F12, [FN]F13 -* [Colemak](https://colemak.com/) key layout support (Accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple) -* Double tap ESC any time to revert to base layer. -* RGB backlight effects expanded to include framebuffer effects and reactive keypress modes. -* RGB backlight now remembers last color & effect settings after power down. - -### Quick & Easy Customization -* Below features can be toggled by holding [FN] and pressing the number corresponding to that feature. Changes are saved to EEPROM for persistence. -* Print current settings by opening a text editor and pressing [FN]~ (the key left of '1' on ISO layout keyboards) -* Quick view current settings by holding [FN] and viewing RGB under number keys (green means ON, violet means OFF) - -#### Toggle-able Settings: - 1. CapsLock RGB - Highlight under alpha keys - 2. Numpad RGB - Highlight under numpad layer keys - 3. ESC key - Double tap ESC key to go to base layer - 4. Swap DEL and HOME - Default is DEL to the right of BKSPC & HOME is above BKSPC - 5. Capslock function - Toggle between double tap LShift for CapsLock with Numpad on CapsLock key (default) and standard CapsLock - 6. Encoder button - Default mutes volume; alternate plays/pauses media - 7. Insert function - Toggle between SHIFT-BKSPC and SHIFT-DEL - 8. Modded-Space override - Use standard Space in place of modded-Space functions - 9. AutoCorrect - Internal (English) AutoCorrect; default is enabled - 0. (ISO layouts only) CapsLock highlights extended alpha keys - -### Numpad + Mouse Keys (Capslock key) - -* Overlay numpad + [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) are accessed through Capslock key hold (temp) or double press (locked) with RGB highlighting -* Numpad uses Space-bar as Enter for rapid number entry. -* This layer disables much of the keyboard, except X/C/V for cut/copy/paste, WASD for cursor, Q/E for PgUp/PgDn, cursor keys become mouse keys, surrounding keys become mouse buttons and all number keys become numpad versions (so Alt char codes work regardless of which set you use) -* FN and N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output ([FN]N to toggle) -* Double zero on comma key. -* [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) allow you to use the mouse without taking your hand off the keyboard. -* Mouse controls are: Cursor keys = move mouse; RShift = button1, End = button2, RCtrl = button3, PgUp/PgDn = Scroll wheel -* Mouse Keys can also be accessed as a standalone layer by Left Shift-turning the Encoder until the cursor keys light up green - -### Encoder Functionality - -* Default knob turn changes volume; button press toggles mute -* Exponential encoder: quick repeated volume up doubles increase; quick repeated volume down triples decrease. -* FN + knob turn changes RGB idle timeout -* FN + knob push puts PC to Sleep -* holding Left Shift changes layers -* holding Right Shift navigates page up/down -* holding Left Ctrl navigates prev/next word -* holding Right Ctrl changes RGB hue/color -* holding Left Alt changes media prev/next track - -### Paddle Game - -* Based on [Tomas Guinan's excellent GMMK Pro paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) -* Paddle Game playable by pressing [FN]P (P lights up green in FN layer if game is enabled in firmware, otherwise it lights up red) -* Use rotary encoder to control paddle -* Contains 12 levels, indicated by blue LED on F-key row -* Player has 4 lives, indicated by nav cluster -* Deflect white balls while avoiding red ones -* Use [FN]P, double tap ESC or otherwise change layer to quit game - -### Global RGB Controls - -* RGB backlight lighting effect: [FN]up/down -* RGB backlight effect speed: [FN]left/right -* RGB backlight hue cycle: [FN]A/D -* RGB backlight brightness: [FN]W/S -* RGB backlight saturation: [FN]Q/E -* RGB backlight night mode toggle: [FN]Z (indicators still work) -* RGB backlight timeout: [FN]Encoder or "-" and "=" (default 15 minutes) - * F-key row indicator lights (cyan and blue) in FN layer display the current backlight timeout in minutes -* [FN]Z to turn off RGB backlighting (indicator lights still work); press again to toggle -* Left side RGB indicators in order from top: Scroll Lock (red), Numpad (blue), Capslock (green). - -### Advanced Controls - -* [FN]\ or [FN]B to get to bootloader mode (use key next to Left Shift on ISO) -* [FN][ESC] to clear EEPROM -* [FN]R to toggle N-key Rollover -* [FN]N to toggle system numlock -* [FN]/ is single-handed shortcut to Ctrl-Alt-Delete -* [FN]L is single-handed shortcut to Win-L (lock Windows) -* [FN][Encoder press] to sleep Windows PC - -## Layer Diagrams (ANSI) -### Base layer -![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/base.png) - -### FN Layer -![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/fn1.png) - -### Layer 2 (Numpad) -![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/numpad.png) - -### COLEMAK layer -![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png) diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h deleted file mode 100644 index abcdb82aeb85..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h +++ /dev/null @@ -1,433 +0,0 @@ -/* Copyright 2021 Jonavin Eng @Jonavin - Copyright 2022 gourdo1 - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#ifdef RGB_MATRIX_ENABLE - -//Define variables for Game -bool fn_active = false; -RGB rgb_value; - -// Custom GMMK Pro-specific RGB color customizations (defaults found in quantum/color.h) -#define RGB_GODSPEED 0x00, 0xE4, 0xFF // color for matching keycaps -#define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colors -#define RGB_OFFBLUE 0x00, 0x80, 0xFF // new color: blue with a hint of green -#define RGB_DKRED 0x28, 0x00, 0x00 // new color: dark red -#define RGB_ORANGE2 0xFF, 0x28, 0x00 // fix: reduced green from 80 to 28 -#define RGB_PURPLE2 0x80, 0x00, 0xFF // fix: increased red from 7A to 80 -#define RGB_SPRINGGREEN2 0x00, 0xFF, 0x10 // fix: blue was 80, now 10 -#define RGB_YELLOW2 0xFF, 0xB0, 0x00 // fix: green was FF, now B0 -#define RGB_OFF RGB_BLACK - -// Added by gourdo1 for RGB testing -// Red Green Blue Expected GMMK Pro result -#define RGB_TEST1 0xFF, 0x00, 0x00 // Q - red good! -#define RGB_TEST2 0x0F, 0xFF, 0x00 // W - green good! -#define RGB_TEST3 0x00, 0x00, 0xFF // E - blue good! -#define RGB_TEST4 0xFF, 0xB0, 0x00 // R - yellow slightly green heavy - reduced green LED by quite a bit -#define RGB_TEST5 0x00, 0xFF, 0xFF // T - cyan good! -#define RGB_TEST6 0xFF, 0x00, 0xFF // Y - magenta very slightly blue heavy? -#define RGB_TEST7 0xFF, 0x28, 0x00 // U - orange very green heavy at default -#define RGB_TEST8 0xFF, 0x00, 0x80 // I - pink good! -#define RGB_TEST9 0x80, 0xFF, 0x00 // O - chartreus good! -#define RGB_TEST10 0x00, 0xFF, 0x10 // P - springgrn fixed: was too blue because green LED has blue in it already -#define RGB_TEST11 0x00, 0x80, 0xFF // A - grn blue good! -#define RGB_TEST12 0x80, 0x00, 0xFF // S - purple good! - -// RGB LED locations -enum led_location_map { - LED_ESC, // 0, ESC, k13 - LED_GRV, // 1, `, k16 - LED_TAB, // 2, Tab, k11 - LED_CAPS, // 3, Caps, k21 - LED_LSFT, // 4, Sh_L, k00 - LED_LCTL, // 5, Ct_L, k06 - LED_F1, // 6, F1, k26 - LED_1, // 7, 1, k17 - LED_Q, // 8, Q, k10 - LED_A, // 9, A, k12 - LED_Z, // 10, Z, k14 - LED_LWIN, // 11, Win_L, k90 - LED_F2, // 12, F2, k36 - LED_2, // 13, 2, k27 - LED_W, // 14, W, k20 - LED_S, // 15, S, k22 - LED_X, // 16, X, k24 - LED_LALT, // 17, Alt_L, k93 - LED_F3, // 18, F3, k31 - LED_3, // 19, 3, k37 - LED_E, // 20, E, k30 - LED_D, // 21, D, k32 - LED_C, // 22, C, k34 - LED_F4, // 23, F4, k33 - LED_4, // 24, 4, k47 - LED_R, // 25, R, k40 - LED_F, // 26, F, k42 - LED_V, // 27, V, k44 - LED_F5, // 28, F5, k07 - LED_5, // 29, 5, k46 - LED_T, // 30, T, k41 - LED_G, // 31, G, k43 - LED_B, // 32, B, k45 - LED_SPC, // 33, SPACE, k94 - LED_F6, // 34, F6, k63 - LED_6, // 35, 6, k56 - LED_Y, // 36, Y, k51 - LED_H, // 37, H, k53 - LED_N, // 38, N, k55 - LED_F7, // 39, F7, k71 - LED_7, // 40, 7, k57 - LED_U, // 41, U, k50 - LED_J, // 42, J, k52 - LED_M, // 43, M, k54 - LED_F8, // 44, F8, k76 - LED_8, // 45, 8, k67 - LED_I, // 46, I, k60 - LED_K, // 47, K, k62 - LED_COMM, // 48, ,, k64 - LED_RALT, // 49, Alt_R, k95 - LED_F9, // 50, F9, ka6 - LED_9, // 51, 9, k77 - LED_O, // 52, O, k70 - LED_L, // 53, L, k72 - LED_DOT, // 54, ., k74 - LED_FN, // 55, FN, k92 - LED_F10, // 56, F10, ka7 - LED_0, // 57, 0, k87 - LED_P, // 58, P, k80 - LED_SCLN, // 59, ;, k82 - LED_SLSH, // 60, ?, k85 - LED_F11, // 61, F11, ka3 - LED_MINS, // 62, -, k86 - LED_LBRC, // 63, [, k81 - LED_QUOT, // 64, ", k83 - LED_RCTL, // 65, Ct_R, k04 - LED_F12, // 66, F12, ka5 - LED_BSLS, // 67, \, k23 - LED_L1, // 68, LED, l01 - LED_R1, // 69, LED, l11 - LED_PRT, // 70, Prt, k97 - LED_L2, // 71, LED, l02 - LED_R2, // 72, LED, l12 - LED_DEL, // 73, Del, k65 - LED_L3, // 74, LED, l03 - LED_R3, // 75, LED, l13 - LED_PGUP, // 76, PgUp, k15 - LED_L4, // 77, LED, l04 - LED_R4, // 78, LED, l14 - LED_EQL, // 79, =, k66 - LED_RIGHT, // 80, Right, k05 - LED_L5, // 81, LED, l05 - LED_R5, // 82, LED, l15 - LED_END, // 83, End, k75 - LED_L6, // 84, LED, l06 - LED_R6, // 85, LED, l16 - LED_BSPC, // 86, BSpc, ka1 - LED_PGDN, // 87, PgDn, k25 - LED_L7, // 88, LED, l07 - LED_R7, // 89, LED, l17 - LED_RBRC, // 90, ], k61 - LED_RSFT, // 91, Sh_R, k91 - LED_L8, // 92, LED, l08 - LED_R8, // 93, LED, l18 - LED_UP, // 94, Up, k35 - LED_HASH, // 95, #, k84 - LED_LEFT, // 96, Left, k03 - LED_ENT, // 97, Enter, ka4 - LED_DOWN // 98, Down, k73 -}; - -const uint8_t LED_LIST_WASD[] = { - LED_W, - LED_A, - LED_S, - LED_D -}; - -const uint8_t LED_LIST_ARROWS[] = { - LED_LEFT, - LED_RIGHT, - LED_UP, - LED_DOWN -}; - -const uint8_t LED_LIST_FUNCROW[] = { - LED_ESC, - LED_F1, - LED_F2, - LED_F3, - LED_F4, - LED_F5, - LED_F6, - LED_F7, - LED_F8, - LED_F9, - LED_F10, - LED_F11, - LED_F12, - LED_PRT -}; - -const uint8_t LED_LIST_NUMROW[] = { - LED_GRV, - LED_1, - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL, - LED_BSPC, - LED_DEL -}; - -const uint8_t LED_LIST_LETTERS[] = { - LED_Q, - LED_W, - LED_E, - LED_R, - LED_T, - LED_Y, - LED_U, - LED_I, - LED_O, - LED_P, - LED_A, - LED_S, - LED_D, - LED_F, - LED_G, - LED_H, - LED_J, - LED_K, - LED_L, - LED_Z, - LED_X, - LED_C, - LED_V, - LED_B, - LED_N, - LED_M -}; - -const uint8_t LED_LIST_LETTERS_DE[] = { - LED_Q, - LED_W, - LED_E, - LED_R, - LED_T, - LED_Y, - LED_U, - LED_I, - LED_O, - LED_P, - LED_A, - LED_S, - LED_D, - LED_F, - LED_G, - LED_H, - LED_J, - LED_K, - LED_L, - LED_Z, - LED_X, - LED_C, - LED_V, - LED_B, - LED_N, - LED_M, - LED_SCLN, - LED_LBRC, - LED_QUOT -}; - -const uint8_t LED_LIST_NUMPAD[] = { - LED_1, - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL, - LED_U, - LED_I, - LED_O, - LED_P, - LED_J, - LED_K, - LED_L, - LED_SCLN, - LED_ENT, - LED_M, - LED_COMM, - LED_DOT, - LED_SLSH, - LED_END, - LED_RIGHT -}; - -const uint8_t LED_SIDE_LEFT[] = { - LED_L1, - LED_L2, - LED_L3, - LED_L4, - LED_L5, - LED_L6, - LED_L7, - LED_L8 -}; - -const uint8_t LED_SIDE_RIGHT[] = { - LED_R1, - LED_R2, - LED_R3, - LED_R4, - LED_R5, - LED_R6, - LED_R7, - LED_R8 -}; - -#ifdef GAME_ENABLE -// Game LED rules -const uint8_t GAME_LIVES[] = { - LED_DEL, - LED_PGUP, - LED_PGDN, - LED_END -}; -const uint8_t GAME_PADDLE[] = { - LED_Z, - LED_X, - LED_C, - LED_V, - LED_B, - LED_N, - LED_M, - LED_COMM, - LED_DOT, - LED_SLSH -}; -const uint8_t GAME_SMILE1[] = { - LED_A, - LED_S, - LED_D, - LED_F, - LED_G, - LED_H, - LED_J, - LED_K, - LED_L, - LED_SCLN, - LED_QUOT -}; -const uint8_t GAME_SMILE2[] = { - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL -}; -const uint8_t GAME_R4[] = { - LED_X, - LED_C, - LED_V, - LED_B, - LED_N, - LED_M, - LED_COMM, - LED_DOT -}; -const uint8_t GAME_R3[] = { - LED_S, - LED_D, - LED_F, - LED_G, - LED_H, - LED_J, - LED_K, - LED_L, - LED_SCLN -}; -const uint8_t GAME_R2[] = { - LED_W, - LED_E, - LED_R, - LED_T, - LED_Y, - LED_U, - LED_I, - LED_O, - LED_P, - LED_LBRC -}; -const uint8_t GAME_R1[] = { - LED_2, - LED_3, - LED_4, - LED_5, - LED_6, - LED_7, - LED_8, - LED_9, - LED_0, - LED_MINS, - LED_EQL -}; -const uint8_t GAME_R0[] = { - LED_F1, - LED_F2, - LED_F3, - LED_F4, - LED_F5, - LED_F6, - LED_F7, - LED_F8, - LED_F9, - LED_F10, - LED_F11, - LED_F12 -}; -const uint8_t LED_GAME_OVER[] = { - LED_5, - LED_8, - LED_F, - LED_G, - LED_H, - LED_J, - LED_C, - LED_M -}; -#endif //GAME_ENABLE - -#endif \ No newline at end of file diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk deleted file mode 100644 index 1eb14ebbefcf..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk +++ /dev/null @@ -1,22 +0,0 @@ -LTO_ENABLE = yes # link time optimization -- achieves a smaller compiled size -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -MOUSEKEY_ENABLE = yes - -VIA_ENABLE = yes -TAP_DANCE_ENABLE = no -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -CAPS_WORD_ENABLE = yes # Enable built-in Caps Word functionality - -TD_LSFT_CAPSLOCK_ENABLE = yes -IDLE_TIMEOUT_ENABLE = yes -STARTUP_NUMLOCK_ON = yes -ENCODER_DEFAULTACTIONS_ENABLE = no - -COLEMAK_LAYER_ENABLE = yes # Enable Colemak layer / set to no to disable -INVERT_NUMLOCK_INDICATOR = yes - -GAME_ENABLE ?= yes # Enable Paddle Game / set to no to disable -ifeq ($(strip $(GAME_ENABLE)), yes) - OPT_DEFS += -DGAME_ENABLE -endif diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/config.h b/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/config.h deleted file mode 100644 index 539f78874a71..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/config.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2021 Jonavin Eng - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 TAPPING_TOGGLE 2 -// TT set to two taps - -/* Handle GRAVESC combo keys */ -#define GRAVE_ESC_ALT_OVERRIDE - //Always send Escape if Alt is pressed -#define GRAVE_ESC_CTRL_OVERRIDE - //Always send Escape if Control is pressed - -#define TAPPING_TERM 180 - -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR -# define RGB_DISABLE_WHEN_USB_SUSPENDED -#endif - -// add fifth layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable -#if defined COLEMAK_LAYER_ENABLE -# define DYNAMIC_KEYMAP_LAYER_COUNT 5 -# define _COLEMAK 4 -#endif // COLEMAK_LAYER_ENABLE diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c deleted file mode 100644 index 82359551d16f..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c +++ /dev/null @@ -1,194 +0,0 @@ -/* Copyright 2021 Glorious, LLC - Copyright 2021 Jonavin - Copyright 2022 RustyBrakes (ISO conversion) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "rgb_matrix_map.h" -#include "jonavin.h" - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Ins Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del -// Tab Q W E R T Y U I O P [ ] PgUp -// Caps A S D F G H J K L ; " # Enter PgDn -// Sh_L \ Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - [_BASE] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGUP, - TT(_LOWER), 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_PGDN, - KC_LSFTCAPSWIN, 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_FN1] = LAYOUT( - _______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CALC, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, - _______, _______, RGB_VAI, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______, KC_HOME, - KC_CAPS, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, - _______, QK_BOOT, RGB_NITE,RGB_HUI, _______, _______, _______, KC_NUM, _______, RGB_TOD, RGB_TOI, _______, _______, RGB_MOD, _______, - _______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI - ), - - [_LOWER] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______, - _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PDOT, _______, _______, KC_HOME, - _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, _______, KC_PENT, KC_END, - _______, _______, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, _______, RCTL(KC_PGUP), _______, - _______, _______, _______, KC_BSPC, _______, _______, _______, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT) - ), - -#ifdef COLEMAK_LAYER_ENABLE - [_COLEMAK] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, - 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_PGUP, - TT(_LOWER), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, - KC_LSFTCAPSWIN, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), -#endif // COLEMAK_LAYER_ENABLE -}; - -#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults - void encoder_action_rgbhue(bool clockwise) { - if (clockwise) - rgblight_increase_hue_noeeprom(); - else - rgblight_decrease_hue_noeeprom(); - } - - bool encoder_update_user(uint8_t index, bool clockwise) { - uint8_t mods_state = get_mods(); - if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn - unregister_mods(MOD_BIT(KC_RSFT)); - encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_RSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour - encoder_action_rgbhue(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - switch(get_highest_layer(layer_state)) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(clockwise); - #endif - break; - default: - encoder_action_volume(clockwise); // Otherwise it just changes volume - break; - } - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; - } -#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE - -#ifdef RGB_MATRIX_ENABLE - // Capslock, Scroll lock and Numlock indicator on Left side lights. - bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - led_t led_state = host_keyboard_led_state(); - if (get_rgb_nightmode()) rgb_matrix_set_color_all(RGB_OFF); - if (led_state.scroll_lock) { - rgb_matrix_set_color(LED_L1, RGB_GREEN); - rgb_matrix_set_color(LED_L2, RGB_GREEN); - } - - #ifdef INVERT_NUMLOCK_INDICATOR - if (!led_state.num_lock) { // on if NUM lock is OFF - rgb_matrix_set_color(LED_L3, RGB_MAGENTA); - rgb_matrix_set_color(LED_L4, RGB_MAGENTA); - } - #else - if (led_state.num_lock) { // Normal, on if NUM lock is ON - rgb_matrix_set_color(LED_L3, RGB_MAGENTA); - rgb_matrix_set_color(LED_L4, RGB_MAGENTA); - } - #endif // INVERT_NUMLOCK_INDICATOR - - if (led_state.caps_lock) { - rgb_matrix_set_color(LED_L5, RGB_RED); - rgb_matrix_set_color(LED_L6, RGB_RED); - rgb_matrix_set_color(LED_L7, RGB_RED); - } - if (keymap_config.no_gui) { - rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Win key when disabled - } - switch(get_highest_layer(layer_state)){ // special handling per layer - case _FN1: // on Fn layer select what the encoder does when pressed - rgb_matrix_set_color(LED_R2, RGB_RED); - rgb_matrix_set_color(LED_R3, RGB_RED); - rgb_matrix_set_color(LED_R4, RGB_RED); - rgb_matrix_set_color(LED_FN, RGB_RED); //FN key - - // Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code - uint16_t timeout_threshold = get_timeout_threshold(); - if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_RED); - else if (timeout_threshold < 140) { - rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_RED); - rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_RED); - } else { // >= 140 minutes, just show these 3 lights - rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_RED); - rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_RED); - rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_RED); - } - break; - case _LOWER: - for (uint8_t i=0; i or encoder - - setting to zero disables timeout - - indicators in FN layer using RGB in FN and number rows to show the timeout in minutes - - LED address location map as enum definition in rgb_matrix_map.h - - LED group lists for arrows, numpad, F row, num row, left and right side LEDs - - default startup in single mode with default colour - - Capslock, Scroll Lock, and Num Lock (not set) indicator on left side LED - - Layer indicator on right side LED - - Fn key light up red when Fn layer activate - - Win Key light up red when Win Lock mode enabled - - Layer 2 activation lights up Numpad area - - Fn + Z to turn off all RGB lights except rgb indicators; press again to toggle - -rules.mk OPTIONS - Active features from userspace -STARTUP_NUMLOCK_ON = yes - - turns on NUMLOCK by default - -ENCODER_DEFAULTACTIONS_ENABLE = yes - - Enabled default encoder funtions - -TD_LSFT_CAPSLOCK_ENABLE = yes - - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS - -IDLE_TIMEOUT_ENABLE = yes - - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically - -INVERT_NUMLOCK_INDICATOR - - inverts the Num lock indicator, LED is on when num lokc is off - -COLEMAK_LAYER_ENABLE = yes - - Enabled optional 5th layer for COLEMAK layout - - Use Shift and encoder to enter 5th layer, right led indicator lights up BLUE diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/rgb_matrix_map.h deleted file mode 100644 index 1aa31f2a0fd7..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/rgb_matrix_map.h +++ /dev/null @@ -1,146 +0,0 @@ -/* Copyright 2021 Jonavin Eng - * Copyright 2022 RustyBrakes (ISO conversion) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifdef RGB_MATRIX_ENABLE - - // Custom RGB Colours - #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps - #define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Naurilus Font colours - - // RGB LED locations - enum led_location_map { - LED_ESC, // 0, ESC, k13 - LED_GRV, // 1, `, k16 - LEB_TAB, // 2, Tab, k11 - LED_CAPS, // 3, Caps, k21 - LED_LSFT, // 4, Sh_L, k00 - LED_LCTL, // 5, Ct_L, k06 - LED_F1, // 6, F1, k26 - LED_1, // 7, 1, k17 - LED_Q, // 8, Q, k10 - LED_A, // 9, A, k12 - LED_Z, // 10, Z, k14 - LED_LWIN, // 11, Win_L, k90 - LED_F2, // 12, F2, k36 - LED_2, // 13, 2, k27 - LED_W, // 14, W, k20 - LED_S, // 15, S, k22 - LED_X, // 16, X, k24 - LED_LALT, // 17, Alt_L, k93 - LED_F3, // 18, F3, k31 - LED_3, // 19, 3, k37 - LED_E, // 20, E, k30 - LED_D, // 21, D, k32 - LED_C, // 22, C, k34 - LED_F4, // 23, F4, k33 - LED_4, // 24, 4, k47 - LED_R, // 25, R, k40 - LED_F, // 26, F, k42 - LED_V, // 27, V, k44 - LED_F5, // 28, F5, k07 - LED_5, // 29, 5, k46 - LED_T, // 30, T, k41 - LED_G, // 31, G, k43 - LED_B, // 32, B, k45 - LED_SPC, // 33, SPACE, k94 - LED_F6, // 34, F6, k63 - LED_6, // 35, 6, k56 - LED_Y, // 36, Y, k51 - LED_H, // 37, H, k53 - LED_N, // 38, N, k55 - LED_F7, // 39, F7, k71 - LED_7, // 40, 7, k57 - LED_U, // 41, U, k50 - LED_J, // 42, J, k52 - LED_M, // 43, M, k54 - LED_F8, // 44, F8, k76 - LED_8, // 45, 8, k67 - LED_I, // 46, I, k60 - LED_K, // 47, K, k62 - LED_COMM, // 48, ,, k64 - LED_RALT, // 49, Alt_R, k95 - LED_F9, // 50, F9, ka6 - LED_9, // 51, 9, k77 - LED_O, // 52, O, k70 - LED_L, // 53, L, k72 - LED_DOT, // 54, ., k74 - LED_FN, // 55, FN, k92 - LED_F10, // 56, F10, ka7 - LED_0, // 57, 0, k87 - LED_P, // 58, P, k80 - LED_SCLN, // 59, ;, k82 - LED_SLSH, // 60, /, k85 - LED_F11, // 61, F11, ka3 - LED_MINS, // 62, -, k86 - LED_LBRC, // 63, [, k81 - LED_QUOT, // 64, ", k83 - LED_RCTL, // 65, Ct_R, k04 - LED_F12, // 66, F12, ka5 - LED_BSLS, // 67, \, k23 - LED_L1, // 68, LED, l01 - LED_R1, // 69, LED, l11 - LED_PRT, // 70, Prt, k97 - LED_L2, // 71, LED, l02 - LED_R2, // 72, LED, l12 - LED_DEL, // 73, Del, k65 - LED_L3, // 74, LED, l03 - LED_R3, // 75, LED, l13 - LED_PGUP, // 76, PgUp, k15 - LED_L4, // 77, LED, l04 - LED_R4, // 78, LED, l14 - LED_EQL, // 79, =, k66 - LED_RIGHT, // 80, Right, k05 - LED_L5, // 81, LED, l05 - LED_R5, // 82, LED, l15 - LED_END, // 83, End, k75 - LED_L6, // 84, LED, l06 - LED_R6, // 85, LED, l16 - LED_BSPC, // 86, BSpc, ka1 - LED_PGDN, // 87, PgDn, k25 - LED_L7, // 88, LED, l07 - LED_R7, // 89, LED, l17 - LED_RBRC, // 90, ], k61 - LED_RSFT, // 91, Sh_R, k91 - LED_L8, // 92, LED, l08 - LED_R8, // 93, LED, l18 - LED_UP, // 94, Up, k35 - LED_HASH, // 95, #, k84 - LED_LEFT, // 96, Left, k03 - LED_ENT, // 97, Enter, ka4 - LED_DOWN // 98, Down, k73 - }; - - const uint8_t LED_LIST_WASD[] = { LED_W, LED_A, LED_S, LED_D }; - - const uint8_t LED_LIST_ARROWS[] = { LED_LEFT, LED_RIGHT, LED_UP, LED_DOWN }; - - const uint8_t LED_LIST_FUNCROW[] = { LED_ESC, LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12, LED_PRT}; - - const uint8_t LED_LIST_NUMROW[] = { LED_GRV, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_DEL}; - - const uint8_t LED_LIST_NUMPAD[] = { - LED_7, LED_8, LED_9, - LED_U, LED_I, LED_O, - LED_J, LED_K, LED_L, - LED_M, LED_COMM, LED_DOT - }; - - const uint8_t LED_SIDE_LEFT[] = { LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7, LED_L8}; - - const uint8_t LED_SIDE_RIGHT[] = { LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7, LED_R8}; - -#endif diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/rules.mk b/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/rules.mk deleted file mode 100644 index 1ffc2058a262..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/rules.mk +++ /dev/null @@ -1,12 +0,0 @@ -VIA_ENABLE = yes -MOUSEKEY_ENABLE = no -TAP_DANCE_ENABLE = yes -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite - -TD_LSFT_CAPSLOCK_ENABLE = yes -IDLE_TIMEOUT_ENABLE = yes -STARTUP_NUMLOCK_ON = yes -ENCODER_DEFAULTACTIONS_ENABLE = no - -COLEMAK_LAYER_ENABLE = yes #Enable Colemak layer / set to no to disable -INVERT_NUMLOCK_INDICATOR = yes diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/config.h b/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/config.h deleted file mode 100644 index 91fce71359fa..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/config.h +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2021 Victor Toni (@vitoni) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#if defined(RGB_MATRIX_ENABLE) - #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR - // number of milliseconds to wait until turning off RGB automatically - #define RGB_MATRIX_TIMEOUT 300000 // 300 seconds / 5 min - // start fading out before getting disabled - // fading out is timed (depending on the rgb_matrix_config.speed) to have finished before reaching RGB_MATRIX_TIMEOUT - #define RGB_DISABLE_WITH_FADE_OUT - #define RGB_DISABLE_WHEN_USB_SUSPENDED - // number of milliseconds to wait until activating RGB idle effects - #define RGB_IDLE_TIMEOUT 4500 // 4.5 seconds - // activate breathe effect when idle - #define RGB_IDLE_BREATHE - // fade in when we have been suspended - #define RGB_FADE_IN -#endif diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c deleted file mode 100644 index 2c8a67ef9b75..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 Glorious, LLC , -// Copyright 2021 Victor Toni (@vitoni) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H - -#include "vitoni.h" - -enum layer_names { - _BASE, - _MOV, - _RGB -}; - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) -// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del -// Tab Q W E R T Y U I O P [ ] PgUp -// Caps A S D F G H J K L ; " # Enter PgDn -// Sh_L / Z X C V B N M , . ? Sh_R Up End -// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right - - - // - // This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO). - // Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience. - // Press CAPS+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts. - [_BASE] = LAYOUT( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGUP, - MO(_MOV), 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_PGDN, - 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, TG(_RGB),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - - [_MOV] = LAYOUT( - QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP, _______, - _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END - ), - - [_RGB] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, RGB_MOD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SPI, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_SPD, - _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI - ), - -}; -// clang-format on - -#if defined(ENCODER_ENABLE) -bool encoder_update_user(uint8_t index, bool clockwise) { - switch (get_highest_layer(layer_state)) { - case _MOV: - if (clockwise) { - tap_code16(C(KC_TAB)); - } else { - tap_code16(S(C(KC_TAB))); - } - break; -#if defined(RGB_MATRIX_ENABLE) - case _RGB: - if (clockwise) { - rgb_matrix_increase_val_noeeprom(); - } else { - rgb_matrix_decrease_val_noeeprom(); - } - break; -#endif // RGB_MATRIX_ENABLE - default: - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - break; - } - //return true; //set to return false to counteract enabled encoder in pro.c - return false; -} -#endif // ENCODER_ENABLE - -#if defined(RGB_MATRIX_ENABLE) -/* -* Set up default RGB color. -*/ -void rgb_matrix_set_default_color(void) { - rgb_matrix_sethsv_noeeprom_user(HSV_CHARTREUSE); -} - -/* -* Set up RGB defaults. -*/ -void rgb_matrix_configure_default_settings(void) { - rgb_matrix_set_default_color(); -} - -void keyboard_post_init_user(void) { - rgb_matrix_enable_noeeprom(); - rgb_matrix_configure_default_settings(); -} - -/* -* Use RGB underglow to indicate specific layers. -*/ -layer_state_t layer_state_set_user(layer_state_t state) { - switch (get_highest_layer(state)) { - case _MOV: - rgb_matrix_sethsv_noeeprom_user(HSV_SPRINGGREEN); - break; - case _RGB: - rgb_matrix_sethsv_noeeprom_user(HSV_GREEN); - break; - default: // for any other layer - rgb_matrix_set_default_color(); - break; - } - return state; -} - -void matrix_scan_user(void) { - matrix_scan_user_rgb(); -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!process_record_user_rgb(keycode, record)) { - return false; - } - - switch (keycode) { - case QK_BOOT: // when activating QK_BOOT mode for flashing - if (record->event.pressed) { - rgb_matrix_set_color_all(63, 0, 0); - rgb_matrix_driver.flush(); - } - return true; - } - return true; // Process all other keycodes normally -} -#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/readme.adoc b/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/readme.adoc deleted file mode 100644 index c34887ebd240..000000000000 --- a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/readme.adoc +++ /dev/null @@ -1,104 +0,0 @@ -= ViToni's keymap for GMMK Pro ISO - -== Layout -Based on the stock layout but making use of CAPS as FN similar to laptop keyboards. -This frees up the left row for other uses (although not remapped yet). -Since both Delete and Insert are used for coding they are part of the CAPS layer as well. - -The differences are as follows: - -=== Layer 0 (`_BASE`) -Mostly stock + CAPS goes to layer `_MOV`. -FN toggles the layer `_RGB`. - -=== Layer 1 (`_MOV`), accessed by pressing `CAPS` on layer `_BASE` -[%header] -|=== -| Key / Action | Mapped to -| ESC | _RESET_ -| F1 | KC_MYCM -| F2 | KC_WHOM -| F3 | KC_CALC -| F4 | KC_MSEL -| F5 | KC_MPRV -| F6 | KC_MPLY -| F7 | KC_MSTP -| F8 | KC_MNXT -| F9 | KC_MUTE -| F10 | KC_VOLD -| F11 | KC_VOLU -| N | NK_TOGG -| Delete | Insert -| Left | Home -| Right | End -| Up | PgUp -| Down | PgDn -|=== - -=== Layer 2 (`_RGB`), accessed by pressing `FN` on layer `_BASE` -Revamped the stock FN layer to focus on RGB only. - -[%header] -|=== -| Key / Action | Mapped to -| Knob clockwise | Value/Brightness up -| Knob anti-clockwise | Value/Brightness down -| Backspace | _RESET_ -| Enter | RGB_TOG -| Del | RGB_MOD -| PgUp | RGB_RMOD -| PgDn | RGB_SPI -| End | RGB_SPD -| Left | RGB_HUD -| Right | RGB_HUI -| Up | RGB_SAI -| Down | RGB_SAD -|=== - -No other changes have been made. - -== RGB light - -The code customizing RGB light usage is decribed here: - -* link:../../../../../../users/vitoni/readme.adoc[/users/vitoni/readme.adoc] - -When using `RGB_MATRIX_TIMEOUT` addtional options are available: - -* `RGB_FADE_IN` makes the RGB lights fade in instead of setting the value/brightness to 100% (implicitly due to HSV including the brightness) when resuming after RGB lights have been turned off. -Fade in occurs when the keyboard is initialized and when the RGB brightness has been changed (e.g. suspending, fade out, etc.). -* `RGB_DISABLE_WITH_FADE_OUT` activates fade out before the keyboard is disabled by `RGB_MATRIX_TIMEOUT`. - -Parameters used to define the behavior are: -[%header] -|=== -|Key | Default | Description - -| RGB_MATRIX_MAXIMUM_BRIGHTNESS -| 200 (<= UNIT8_MAX) -| Maximum assumed value for brightness. -Used to calculate lead time for fade out before suspend timeout. - -|=== - -`RGB_IDLE_TIMEOUT` enables fading out after being idle for the defined time and allows -* `RGB_IDLE_BREATHE` also activates a brethe effect while idling. - -[%header] -|=== -|Key | Default | Description - -|RGB_IDLE_TIMEOUT -|4500 -|Time in milliseconds without activity before considered to be idle. - -|RGB_IDLE_MINIMUM_BRIGHTNESS -|`RGB_MATRIX_MAXIMUM_BRIGHTNESS` / 5 -|Brightness value RGB is dimmed to when starting to idle. + -When breathing used as the lower bound of the brightness value. - -|RGB_IDLE_MAXIMUM_BRIGHTNESS -|`RGB_MATRIX_MAXIMUM_BRIGHTNESS` * 2/5 -|Upper bound of brightness value of the RGB light while breathing. - -|=== diff --git a/keyboards/gmmk/pro/rev2/ansi/ansi.c b/keyboards/gmmk/pro/rev2/ansi/ansi.c index ccdcd427268b..322e94c938cb 100644 --- a/keyboards/gmmk/pro/rev2/ansi/ansi.c +++ b/keyboards/gmmk/pro/rev2/ansi/ansi.c @@ -136,7 +136,7 @@ led_config_t g_led_config = {{ 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 }}; -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 diff --git a/keyboards/gmmk/pro/rev2/ansi/info.json b/keyboards/gmmk/pro/rev2/ansi/info.json index 082b5f865686..cd1fd31bf005 100644 --- a/keyboards/gmmk/pro/rev2/ansi/info.json +++ b/keyboards/gmmk/pro/rev2/ansi/info.json @@ -9,13 +9,20 @@ "device_version": "0.0.2" }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "encoder": { "rotary": [ {"pin_a": "C15", "pin_b": "C14"} diff --git a/keyboards/gmmk/pro/rev2/ansi/rules.mk b/keyboards/gmmk/pro/rev2/ansi/rules.mk index 2f50d82c82f4..6d23fe350a4f 100644 --- a/keyboards/gmmk/pro/rev2/ansi/rules.mk +++ b/keyboards/gmmk/pro/rev2/ansi/rules.mk @@ -12,5 +12,3 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash diff --git a/keyboards/gmmk/pro/rev2/config.h b/keyboards/gmmk/pro/rev2/config.h index fa409ba02661..c393e04e45e3 100644 --- a/keyboards/gmmk/pro/rev2/config.h +++ b/keyboards/gmmk/pro/rev2/config.h @@ -19,7 +19,6 @@ /* External spi flash */ #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B12 -#define WEAR_LEVELING_BACKING_SIZE 2048 /* SPI Config for LED Driver */ #define SPI_DRIVER SPIDQ diff --git a/keyboards/gmmk/pro/rev2/iso/info.json b/keyboards/gmmk/pro/rev2/iso/info.json index a4aef24e6581..623335661646 100644 --- a/keyboards/gmmk/pro/rev2/iso/info.json +++ b/keyboards/gmmk/pro/rev2/iso/info.json @@ -9,13 +9,20 @@ "device_version": "0.0.2" }, "rgb_matrix": { - "driver": "aw20216" + "driver": "aw20216s" }, "matrix_pins": { "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "encoder": { "rotary": [ {"pin_a": "C15", "pin_b": "C14"} diff --git a/keyboards/gmmk/pro/rev2/iso/iso.c b/keyboards/gmmk/pro/rev2/iso/iso.c index e056ff6c12b1..3a5b21c01495 100644 --- a/keyboards/gmmk/pro/rev2/iso/iso.c +++ b/keyboards/gmmk/pro/rev2/iso/iso.c @@ -137,7 +137,7 @@ led_config_t g_led_config = {{ 2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4 }}; -const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = { +const aw20216s_led_t g_aw20216s_leds[RGB_MATRIX_LED_COUNT] = { {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13 {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16 {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11 diff --git a/keyboards/gmmk/pro/rev2/iso/rules.mk b/keyboards/gmmk/pro/rev2/iso/rules.mk index db00e4c84c73..46eda64be726 100644 --- a/keyboards/gmmk/pro/rev2/iso/rules.mk +++ b/keyboards/gmmk/pro/rev2/iso/rules.mk @@ -15,5 +15,3 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output ENCODER_ENABLE = yes RGB_MATRIX_ENABLE = yes -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash diff --git a/keyboards/gopolar/gg86/config.h b/keyboards/gopolar/gg86/config.h index e925b2b38446..633ca727de38 100644 --- a/keyboards/gopolar/gg86/config.h +++ b/keyboards/gopolar/gg86/config.h @@ -23,7 +23,6 @@ /* RGB Matrix config */ #define RGB_MATRIX_LED_COUNT 100 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 - #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_KEYPRESSES /* RGB Matrix effect */ diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c deleted file mode 100644 index fc725ad3f0a2..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright 2023 HorrorTroll - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "horrortroll.h" -#include "oled/oled_stuff.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* - ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ - └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ - │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bckspc│ │Hom│Scr│Pse│ - ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ - │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │End│Scr│Pse│ - ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ - │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter│ - ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ - │LSft│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│ │ ↑ │ - ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ - │LCrl │GUI│ LAlt│ Space │ RAlt│ Fn│ RCrl│ │ ← │ ↓ │ → │ - └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ - ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ - │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │ - ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ - │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │ - ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ - │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ - ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ - │LSft│ | │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │RSt│ │ │ - ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ - │ │ │ │ │ │ │ │ │ │ │ │ - └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ -*/ - /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - [_BASE] = 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_SCRL, KC_PAUSE, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_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_UP, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT - ), - -/* - ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - │Rst│ │MeP│VoD│VoU│Mut│ │Stp│Prv│Ply│Nxt│ │Mai│Hom│Cal│Sch│ │Rod│Mod│Tog│ - └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ - │NKO│ │ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │C_E│ │ │ - ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ - │ │1Hd│1Hi│1Sd│1Si│1Vd│1Vi│ │ │ │ │ │ │ │ │ │ │ │ - ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ - │ │2Hd│2Hi│2Sd│2Si│2Vd│2Vi│ │ │ │ │ │ │ - ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ - │ │ │Pre│Ref│Flp│ │ │ │ │ │ │ │ │ │ │Vai│ - ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ - │ │ │ │ │ │ Fn│ │ │Hud│Vad│Hui│ - └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ -*/ - /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ - [_FN] = LAYOUT_all( - QK_BOOT, KC_MSEL, KC_VOLD, KC_VOLU, KC_MUTE, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MAIL, KC_WHOM, KC_CALC, KC_WSCH, RGB_RMOD, RGB_MOD, RGB_TOG, - NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_C_E, _______, _______, - _______, G1_HUD, G1_HUI, G1_SAD, G1_SAI, G1_VAD, G1_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, G2_HUD, G2_HUI, G2_SAD, G2_SAI, G2_VAD, G2_VAI, _______, _______, _______, _______, _______, _______, - _______, _______, G_PRE, REF_G, G_FLIP, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, - _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI - ), -}; diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/oled/oled_stuff.h b/keyboards/gopolar/gg86/keymaps/horrortroll/oled/oled_stuff.h deleted file mode 100644 index d67e5a18c533..000000000000 --- a/keyboards/gopolar/gg86/keymaps/horrortroll/oled/oled_stuff.h +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright 2021 HorrorTroll - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -// OLED animation -#include "lib/wave.h" - -#ifdef OLED_ENABLE - static void render_layer_info(void) { - switch (get_highest_layer(layer_state)) { - case 0: - oled_write_P(PSTR(" QWERTY "), false); - break; - case 1: - oled_write_P(PSTR(" Function "), false); - break; - default: - oled_write_P(PSTR(" Undefined "), false); - } - } - - static void render_layer_number(void) { - switch (get_highest_layer(layer_state)) { - case 0: - oled_write_P(PSTR("0"), false); - break; - case 1: - oled_write_P(PSTR("1"), false); - break; - default: - oled_write_P(PSTR("X"), false); - } - } - - bool oled_task_user(void) { - render_layer_info(); - - // sleep if it has been long enough since we last got a char - if (timer_elapsed32(wave_sleep) > OLED_TIMEOUT) { - oled_off(); - } else { - oled_on(); - } - // time for the next frame? - if (timer_elapsed(wave_timer) > FRAME_TIMEOUT) { - wave_timer = timer_read(); - render_frame(); - } - - oled_set_cursor(0, 3); - oled_write_P(PSTR(" Layer: "), false); - render_layer_number(); - - return true; - } -#endif diff --git a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/config.h b/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/config.h deleted file mode 100644 index 9b3ecffef128..000000000000 --- a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/config.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2019 Brandon Schlack - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 RGBLIGHT_EFFECT_BREATHING // Only have Breathing Animation - -#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 diff --git a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c b/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c deleted file mode 100644 index a71389707da9..000000000000 --- a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright 2019 Brandon Schlack - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "brandonschlack.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Base Layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│PgU│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│| \│PgD│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │HyCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter│ │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ │ - * │Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│ │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │Ctrl│ Opt│ Cmd│ Space │Cmd │FnPy│ │Lef│Dow│Rig│ - * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ - */ -[_BASE] = LAYOUT_65_ansi_blocker( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_PGDN, - HY_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, XXXXXXX, - 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, XXXXXXX, - KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, PLY_FN1, KC_LEFT, KC_DOWN, KC_RGHT -), -/* Function Layer - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │` ~│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ Delete│VlU│ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │RMod │RH+│RS+│RV+│ │ │ │ │ │ │F13│F14│F15│ SlpD│VlD│ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │RTgl │RH-│RS-│RV-│ │ │ │ │ │ │MNC│LHP│ │ │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ │ - * │ │LYR│Thm│ │ │RST│ │Mke│Prv│Nxt│Ply│MteSft│PgU│ │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │ │ │ │ │ │ │ │Hom│PgD│End│ - * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ - */ -[_FN1] = LAYOUT_65_ansi_blocker( - KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_VOLU, - RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, MC_SLPD, KC_VOLD, - RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, MC_MSSN, MC_LHPD, _______, XXXXXXX, - _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, MUT_SFT, KC_PGUP, XXXXXXX, - _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END -), -/* Blank Layout - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ │ - * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ - * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ - * │ │ │ │ │ │ │ │ │ │ │ - * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘ -[X] = LAYOUT_65_ansi_blocker( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______ -), -*/ -}; diff --git a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/readme.md b/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/readme.md deleted file mode 100644 index 76174061a98e..000000000000 --- a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# brandonschlack's Think6.5 keymap - -My keymap for the Think6.5. Using the `LAYOUT_65_ansi_blocker` LAYOUT and based on my keyboard-agnostic layout, some small changes for the navigation keys not present due to the badge. - -## [Base Layer](http://www.keyboard-layout-editor.com/#/gists/b396fee9f49d6e9493876e82a8ee99ac) -![Base Layer](https://i.imgur.com/AZYVuZS.jpg) - -## [Function Layer](http://www.keyboard-layout-editor.com/#/gists/06e684133399bb63d8b72ac6982e0e68) -![Function Layer](https://i.imgur.com/GbOOxME.jpg) diff --git a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/rules.mk b/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/rules.mk deleted file mode 100644 index 4ce80104ef53..000000000000 --- a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -# Build Options -MOUSEKEY_ENABLE = no # Don't need mouse keys diff --git a/keyboards/gray_studio/think65v3/info.json b/keyboards/gray_studio/think65v3/info.json index 0fbab667d443..8fba691fa483 100644 --- a/keyboards/gray_studio/think65v3/info.json +++ b/keyboards/gray_studio/think65v3/info.json @@ -2,13 +2,13 @@ "keyboard_name": "think65v3", "url": "https://graystudio.club/products/testthink6-5-v3", "maintainer": "edwardslau", - "manufacturer":"GrayStudio", + "manufacturer": "GrayStudio", "processor": "STM32F072", "diode_direction": "COL2ROW", "bootloader": "stm32-dfu", - "usb": { - "vid":"0x4753", - "pid":"0x4003", + "usb": { + "vid": "0x4753", + "pid": "0x4003", "device_version": "0.0.3" }, "features": { @@ -22,19 +22,19 @@ }, "ws2812": { "pin": "B10" - } + }, "matrix_pins": { "cols": ["A3", "A5", "A4", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "B0", "A8", "B15", "B14", "B13"], "rows": ["A6", "B12", "A2", "A0", "A1"] }, -"rgblight": { - "led_count": 6, - "sleep": true, - "max_brightness": 150, - "layers": { - "enabled": true - "override_rgb": true - }, + "rgblight": { + "led_count": 6, + "sleep": true, + "max_brightness": 150, + "layers": { + "enabled": true, + "override_rgb": true + }, "animations": { "alternating": true, "breathing": true, @@ -47,228 +47,749 @@ "static_gradient": true, "twinkle": true } - }, + }, + "layout_aliases": { + "LAYOUT_65_blocker": "LAYOUT_ansi_blocker", + "LAYOUT_65_iso_blocker": "LAYOUT_iso_blocker" + }, "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 2, "w": 1.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} + ] + }, "LAYOUT": { "layout": [ - {"matrix": [0,0], "x": 0, "y": 0}, - {"matrix": [0,1], "x": 1, "y": 0}, - {"matrix": [0,2], "x": 2, "y": 0}, - {"matrix": [0,3], "x": 3, "y": 0}, - {"matrix": [0,4], "x": 4, "y": 0}, - {"matrix": [0,5], "x": 5, "y": 0}, - {"matrix": [0,6], "x": 6, "y": 0}, - {"matrix": [0,7], "x": 7, "y": 0}, - {"matrix": [0,8], "x": 8, "y": 0}, - {"matrix": [0,9], "x": 9, "y": 0}, - {"matrix": [0,10],"x": 10, "y": 0}, - {"matrix": [0,11],"x": 11, "y": 0}, - {"matrix": [0,12],"x": 12, "y": 0}, - {"matrix": [0,13],"x": 13, "y": 0}, - {"matrix": [0,14],"x": 14, "y": 0}, - {"matrix": [0,15],"x": 15, "y": 0}, - - {"matrix": [1,0], "x": 0, "y": 1, "w": 1.5}, - {"matrix": [1,2], "x": 1.5, "y": 1}, - {"matrix": [1,3], "x": 2.5, "y": 1}, - {"matrix": [1,4], "x": 3.5, "y": 1}, - {"matrix": [1,5], "x": 4.5, "y": 1}, - {"matrix": [1,6], "x": 5.5, "y": 1}, - {"matrix": [1,7], "x": 6.5, "y": 1}, - {"matrix": [1,8], "x": 7.5, "y": 1}, - {"matrix": [1,9], "x": 8.5, "y": 1}, - {"matrix": [1,10],"x": 9.5, "y": 1}, - {"matrix": [1,11],"x": 10.5, "y": 1}, - {"matrix": [1,12],"x": 11.5, "y": 1}, - {"matrix": [1,13],"x": 12.5, "y": 1}, - {"matrix": [1,14],"x": 13.5, "y": 1, "w": 1.5}, - {"matrix": [1,15],"x": 15, "y": 1}, - - {"matrix": [2,0], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2,2], "x": 1.75, "y": 2}, - {"matrix": [2,3], "x": 2.75, "y": 2}, - {"matrix": [2,4], "x": 3.75, "y": 2}, - {"matrix": [2,5], "x": 4.75, "y": 2}, - {"matrix": [2,6], "x": 5.75, "y": 2}, - {"matrix": [2,7], "x": 6.75, "y": 2}, - {"matrix": [2,8], "x": 7.75, "y": 2}, - {"matrix": [2,9], "x": 8.75, "y": 2}, - {"matrix": [2,10],"x": 9.75, "y": 2}, - {"matrix": [2,11],"x": 10.75, "y": 2}, - {"matrix": [2,12],"x": 11.75, "y": 2}, - {"matrix": [2,13],"x": 12.75, "y": 2, "w": 2.25}, - - {"matrix": [3,0], "x": 0, "y": 3, "w": 1.25}, - {"matrix": [3,1], "x": 1.25, "y": 3}, - {"matrix": [3,2], "x": 2.25, "y": 3}, - {"matrix": [3,3], "x": 3.25, "y": 3}, - {"matrix": [3,4], "x": 4.25, "y": 3}, - {"matrix": [3,5], "x": 5.25, "y": 3}, - {"matrix": [3,6], "x": 6.25, "y": 3}, - {"matrix": [3,7], "x": 7.25, "y": 3}, - {"matrix": [3,8], "x": 8.25, "y": 3}, - {"matrix": [3,9],"x": 9.25, "y": 3}, - {"matrix": [3,10],"x": 10.25, "y": 3}, - {"matrix": [3,11],"x": 11.25, "y": 3}, - {"matrix": [3,13],"x": 12.25, "y": 3, "w": 1.75}, - {"matrix": [3,14],"x": 14, "y": 3}, - - {"matrix": [4,0], "x": 0, "y": 4, "w": 1.25}, - {"matrix": [4,1], "x": 1.25, "y": 4, "w": 1.25}, - {"matrix": [4,2], "x": 2.5, "y": 4, "w": 1.25}, - {"matrix": [4,7], "x": 3.75, "y": 4, "w": 6.25}, - {"matrix": [4,10],"x": 10, "y": 4, "w": 1.25}, - {"matrix": [4,11],"x": 11.25, "y": 4, "w": 1.25}, - {"matrix": [4,13],"x": 13, "y": 4}, - {"matrix": [4,14],"x": 14, "y": 4}, - {"matrix": [4,15],"x": 15, "y": 4} + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi_blocker": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi_blocker_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} ] }, - "LAYOUT_65_blocker": { + "LAYOUT_ansi_blocker_tsangan_split_bs": { "layout": [ - {"matrix": [0,0], "x": 0, "y": 0}, - {"matrix": [0,1], "x": 1, "y": 0}, - {"matrix": [0,2], "x": 2, "y": 0}, - {"matrix": [0,3], "x": 3, "y": 0}, - {"matrix": [0,4], "x": 4, "y": 0}, - {"matrix": [0,5], "x": 5, "y": 0}, - {"matrix": [0,6], "x": 6, "y": 0}, - {"matrix": [0,7], "x": 7, "y": 0}, - {"matrix": [0,8], "x": 8, "y": 0}, - {"matrix": [0,9], "x": 9, "y": 0}, - {"matrix": [0,10],"x": 10, "y": 0}, - {"matrix": [0,11],"x": 11, "y": 0}, - {"matrix": [0,12],"x": 12, "y": 0}, - {"matrix": [0,13],"x": 13, "y": 0, "w": 2}, - {"matrix": [0,15],"x": 15, "y": 0}, - - {"matrix": [1,0], "x": 0, "y": 1, "w": 1.5}, - {"matrix": [1,2], "x": 1.5, "y": 1}, - {"matrix": [1,3], "x": 2.5, "y": 1}, - {"matrix": [1,4], "x": 3.5, "y": 1}, - {"matrix": [1,5], "x": 4.5, "y": 1}, - {"matrix": [1,6], "x": 5.5, "y": 1}, - {"matrix": [1,7], "x": 6.5, "y": 1}, - {"matrix": [1,8], "x": 7.5, "y": 1}, - {"matrix": [1,9], "x": 8.5, "y": 1}, - {"matrix": [1,10],"x": 9.5, "y": 1}, - {"matrix": [1,11],"x": 10.5, "y": 1}, - {"matrix": [1,12],"x": 11.5, "y": 1}, - {"matrix": [1,13],"x": 12.5, "y": 1}, - {"matrix": [1,14],"x": 13.5, "y": 1, "w": 1.5}, - {"matrix": [1,15],"x": 15, "y": 1}, - - {"matrix": [2,0], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2,2], "x": 1.75, "y": 2}, - {"matrix": [2,3], "x": 2.75, "y": 2}, - {"matrix": [2,4], "x": 3.75, "y": 2}, - {"matrix": [2,5], "x": 4.75, "y": 2}, - {"matrix": [2,6], "x": 5.75, "y": 2}, - {"matrix": [2,7], "x": 6.75, "y": 2}, - {"matrix": [2,8], "x": 7.75, "y": 2}, - {"matrix": [2,9], "x": 8.75, "y": 2}, - {"matrix": [2,10],"x": 9.75, "y": 2}, - {"matrix": [2,11],"x": 10.75, "y": 2}, - {"matrix": [2,12],"x": 11.75, "y": 2}, - {"matrix": [2,13],"x": 12.75, "y": 2, "w": 2.25}, - - {"matrix": [3,0], "x": 0, "y": 3, "w": 2.25}, - {"matrix": [3,2], "x": 2.25, "y": 3}, - {"matrix": [3,3], "x": 3.25, "y": 3}, - {"matrix": [3,4], "x": 4.25, "y": 3}, - {"matrix": [3,5], "x": 5.25, "y": 3}, - {"matrix": [3,6], "x": 6.25, "y": 3}, - {"matrix": [3,7], "x": 7.25, "y": 3}, - {"matrix": [3,8], "x": 8.25, "y": 3}, - {"matrix": [3,9], "x": 9.25, "y": 3}, - {"matrix": [3,10],"x": 10.25, "y": 3}, - {"matrix": [3,11],"x": 11.25, "y": 3}, - {"matrix": [3,13],"x": 12.25, "y": 3, "w": 1.75}, - {"matrix": [3,14],"x": 14, "y": 3}, - - {"matrix": [4,0], "x": 0, "y": 4, "w": 1.25}, - {"matrix": [4,1], "x": 1.25, "y": 4, "w": 1.25}, - {"matrix": [4,2], "x": 2.5, "y": 4, "w": 1.25}, - {"matrix": [4,7], "x": 3.75, "y": 4, "w": 6.25}, - {"matrix": [4,10],"x": 10, "y": 4, "w": 1.25}, - {"matrix": [4,11],"x": 11.25, "y": 4, "w": 1.25}, - {"matrix": [4,13],"x": 13, "y": 4}, - {"matrix": [4,14],"x": 14, "y": 4}, - {"matrix": [4,15],"x": 15, "y": 4} + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} ] }, - "LAYOUT_65_iso_blocker": { + "LAYOUT_iso_blocker": { "layout": [ - {"matrix": [0,0], "x": 0, "y": 0}, - {"matrix": [0,1], "x": 1, "y": 0}, - {"matrix": [0,2], "x": 2, "y": 0}, - {"matrix": [0,3], "x": 3, "y": 0}, - {"matrix": [0,4], "x": 4, "y": 0}, - {"matrix": [0,5], "x": 5, "y": 0}, - {"matrix": [0,6], "x": 6, "y": 0}, - {"matrix": [0,7], "x": 7, "y": 0}, - {"matrix": [0,8], "x": 8, "y": 0}, - {"matrix": [0,9], "x": 9, "y": 0}, - {"matrix": [0,10],"x": 10, "y": 0}, - {"matrix": [0,11],"x": 11, "y": 0}, - {"matrix": [0,12],"x": 12, "y": 0}, - {"matrix": [0,13],"x": 13, "y": 0, "w": 2}, - {"matrix": [0,15],"x": 15, "y": 0}, - - {"matrix": [1,0], "x": 0, "y": 1, "w": 1.5}, - {"matrix": [1,2], "x": 1.5, "y": 1}, - {"matrix": [1,3], "x": 2.5, "y": 1}, - {"matrix": [1,4], "x": 3.5, "y": 1}, - {"matrix": [1,5], "x": 4.5, "y": 1}, - {"matrix": [1,6], "x": 5.5, "y": 1}, - {"matrix": [1,7], "x": 6.5, "y": 1}, - {"matrix": [1,8], "x": 7.5, "y": 1}, - {"matrix": [1,9], "x": 8.5, "y": 1}, - {"matrix": [1,10],"x": 9.5, "y": 1}, - {"matrix": [1,11],"x": 10.5, "y": 1}, - {"matrix": [1,12],"x": 11.5, "y": 1}, - {"matrix": [1,13],"x": 12.5, "y": 1}, - {"matrix": [1,15],"x": 15, "y": 1}, - - {"matrix": [2,0], "x": 0, "y": 2, "w": 1.75}, - {"matrix": [2,2], "x": 1.75, "y": 2}, - {"matrix": [2,3], "x": 2.75, "y": 2}, - {"matrix": [2,4], "x": 3.75, "y": 2}, - {"matrix": [2,5], "x": 4.75, "y": 2}, - {"matrix": [2,6], "x": 5.75, "y": 2}, - {"matrix": [2,7], "x": 6.75, "y": 2}, - {"matrix": [2,8], "x": 7.75, "y": 2}, - {"matrix": [2,9], "x": 8.75, "y": 2}, - {"matrix": [2,10],"x": 9.75, "y": 2}, - {"matrix": [2,11],"x": 10.75, "y": 2}, - {"matrix": [1,14],"x": 11.75, "y": 2}, - {"matrix": [2,13],"x": 12.75, "y": 2}, - {"matrix": [2,14],"x": 13.75, "y": 1, "w": 1.25, "h": 2}, - - {"matrix": [3,0], "x": 0, "y": 3, "w": 1.25}, - {"matrix": [3,1],"x": 1.25, "y": 3}, - {"matrix": [3,2], "x": 2.25, "y": 3}, - {"matrix": [3,3], "x": 3.25, "y": 3}, - {"matrix": [3,4], "x": 4.25, "y": 3}, - {"matrix": [3,5], "x": 5.25, "y": 3}, - {"matrix": [3,6], "x": 6.25, "y": 3}, - {"matrix": [3,7], "x": 7.25, "y": 3}, - {"matrix": [3,8], "x": 8.25, "y": 3}, - {"matrix": [3,9], "x": 9.25, "y": 3}, - {"matrix": [3,10],"x": 10.25, "y": 3}, - {"matrix": [3,11],"x": 11.25, "y": 3}, - {"matrix": [3,13],"x": 12.25, "y": 3, "w": 1.75}, - {"matrix": [3,14],"x": 14, "y": 3}, - - {"matrix": [4,0], "x": 0, "y": 4, "w": 1.25}, - {"matrix": [4,1], "x": 1.25, "y": 4, "w": 1.25}, - {"matrix": [4,2], "x": 2.5, "y": 4, "w": 1.25}, - {"matrix": [4,7], "x": 3.75, "y": 4, "w": 6.25}, - {"matrix": [4,10],"x": 10, "y": 4, "w": 1.25}, - {"matrix": [4,11],"x": 11.25, "y": 4, "w": 1.25}, - {"matrix": [4,13],"x": 13, "y": 4}, - {"matrix": [4,14],"x": 14, "y": 4}, - {"matrix": [4,15],"x": 15, "y": 4} + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso_blocker_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso_blocker_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso_blocker_tsangan_split_bs": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.5, "y": 1}, + {"matrix": [1, 3], "x": 2.5, "y": 1}, + {"matrix": [1, 4], "x": 3.5, "y": 1}, + {"matrix": [1, 5], "x": 4.5, "y": 1}, + {"matrix": [1, 6], "x": 5.5, "y": 1}, + {"matrix": [1, 7], "x": 6.5, "y": 1}, + {"matrix": [1, 8], "x": 7.5, "y": 1}, + {"matrix": [1, 9], "x": 8.5, "y": 1}, + {"matrix": [1, 10], "x": 9.5, "y": 1}, + {"matrix": [1, 11], "x": 10.5, "y": 1}, + {"matrix": [1, 12], "x": 11.5, "y": 1}, + {"matrix": [1, 13], "x": 12.5, "y": 1}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.75, "y": 2}, + {"matrix": [2, 3], "x": 2.75, "y": 2}, + {"matrix": [2, 4], "x": 3.75, "y": 2}, + {"matrix": [2, 5], "x": 4.75, "y": 2}, + {"matrix": [2, 6], "x": 5.75, "y": 2}, + {"matrix": [2, 7], "x": 6.75, "y": 2}, + {"matrix": [2, 8], "x": 7.75, "y": 2}, + {"matrix": [2, 9], "x": 8.75, "y": 2}, + {"matrix": [2, 10], "x": 9.75, "y": 2}, + {"matrix": [2, 11], "x": 10.75, "y": 2}, + {"matrix": [2, 12], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 14], "x": 14, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 7], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 13], "x": 13, "y": 4}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4} ] } } diff --git a/keyboards/gray_studio/think65v3/keymaps/default/keymap.c b/keyboards/gray_studio/think65v3/keymaps/default/keymap.c index 82ff711808ed..a3c2e873c177 100644 --- a/keyboards/gray_studio/think65v3/keymaps/default/keymap.c +++ b/keyboards/gray_studio/think65v3/keymaps/default/keymap.c @@ -3,18 +3,18 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_all( QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_ENT, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_all( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, QK_BOOT, - _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/keyboards/gray_studio/think65v3/keymaps/via/keymap.c b/keyboards/gray_studio/think65v3/keymaps/via/keymap.c index 82ff711808ed..a3c2e873c177 100644 --- a/keyboards/gray_studio/think65v3/keymaps/via/keymap.c +++ b/keyboards/gray_studio/think65v3/keymaps/via/keymap.c @@ -3,18 +3,18 @@ #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT( + [0] = LAYOUT_all( QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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_ENT, - KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT ), - [1] = LAYOUT( + [1] = LAYOUT_all( _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, QK_BOOT, - _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; diff --git a/keyboards/gray_studio/think65v3/matrix_diagram.md b/keyboards/gray_studio/think65v3/matrix_diagram.md new file mode 100644 index 000000000000..e2bbb127b68b --- /dev/null +++ b/keyboards/gray_studio/think65v3/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for GrayStudio think65v3 + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ ┌─────┐ +│10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │1F │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┘ ┌──┴┐2E │ ISO Enter +│20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2D │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┐ +│40 │41 │42 │47 │4A │4B │ │4D │4E │4F │ +└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +┌────────┐ +│30 │ 2.25u LShift +└────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┐ +│40 │41 │42 │47 │4B │ Blocker Tsangan +└─────┴───┴─────┴───────────────────────────┴─────┘ +``` diff --git a/keyboards/gregandcin/teaqueen/info.json b/keyboards/gregandcin/teaqueen/info.json new file mode 100644 index 000000000000..841c524e62d3 --- /dev/null +++ b/keyboards/gregandcin/teaqueen/info.json @@ -0,0 +1,115 @@ +{ + "manufacturer": "gregandcin", + "keyboard_name": "gregandcin/teaqueen", + "maintainer": "gregandcin", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP22", "GP20", "GP23", "NO_PIN"], + "rows": ["GP5", "GP6", "GP7", "GP8", "GP9"] + }, + "processor": "RP2040", + "split": { + "enabled": true, + "matrix_pins": { + "right": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP22", "GP20", "GP23", "GP21"], + "rows": ["GP5", "GP6", "GP7", "GP8", "GP9"] + } + }, + "soft_serial_pin": "GP3" + }, + "url": "https://github.com/gregandcin/teaqueen", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0x4743" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0.6, "y": 0}, + {"matrix": [0, 1], "x": 1.6, "y": 0}, + {"matrix": [0, 2], "x": 2.6, "y": 0}, + {"matrix": [0, 3], "x": 3.6, "y": 0}, + {"matrix": [0, 4], "x": 4.6, "y": 0}, + {"matrix": [0, 5], "x": 5.6, "y": 0}, + {"matrix": [0, 6], "x": 6.6, "y": 0}, + + {"matrix": [5, 0], "x": 8.5, "y": 0}, + {"matrix": [5, 1], "x": 9.5, "y": 0}, + {"matrix": [5, 2], "x": 10.5, "y": 0}, + {"matrix": [5, 3], "x": 11.5, "y": 0}, + {"matrix": [5, 4], "x": 12.5, "y": 0}, + {"matrix": [5, 5], "x": 13.5, "y": 0}, + {"matrix": [5, 6], "x": 14.5, "y": 0, "w": 2}, + + {"matrix": [1, 0], "x": 0.35, "y": 1, "w": 1.5}, + {"matrix": [1, 2], "x": 1.85, "y": 1}, + {"matrix": [1, 3], "x": 2.85, "y": 1}, + {"matrix": [1, 4], "x": 3.85, "y": 1}, + {"matrix": [1, 5], "x": 4.85, "y": 1}, + {"matrix": [1, 6], "x": 5.85, "y": 1}, + + {"matrix": [6, 0], "x": 8.25, "y": 1}, + {"matrix": [6, 1], "x": 9.25, "y": 1}, + {"matrix": [6, 2], "x": 10.25, "y": 1}, + {"matrix": [6, 3], "x": 11.25, "y": 1}, + {"matrix": [6, 4], "x": 12.25, "y": 1}, + {"matrix": [6, 5], "x": 13.25, "y": 1}, + {"matrix": [6, 6], "x": 14.25, "y": 1}, + {"matrix": [6, 7], "x": 15.25, "y": 1, "w": 1.5}, + + {"matrix": [2, 0], "x": 0.2, "y": 2, "w": 1.75}, + {"matrix": [2, 2], "x": 1.95, "y": 2}, + {"matrix": [2, 3], "x": 2.95, "y": 2}, + {"matrix": [2, 4], "x": 3.95, "y": 2}, + {"matrix": [2, 5], "x": 4.95, "y": 2}, + {"matrix": [2, 6], "x": 5.95, "y": 2}, + + {"matrix": [7, 0], "x": 8.75, "y": 2}, + {"matrix": [7, 1], "x": 9.75, "y": 2}, + {"matrix": [7, 2], "x": 10.75, "y": 2}, + {"matrix": [7, 3], "x": 11.75, "y": 2}, + {"matrix": [7, 4], "x": 12.75, "y": 2}, + {"matrix": [7, 5], "x": 13.75, "y": 2}, + {"matrix": [7, 7], "x": 14.75, "y": 2, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + + {"matrix": [8, 0], "x": 8.45, "y": 3}, + {"matrix": [8, 1], "x": 9.45, "y": 3}, + {"matrix": [8, 2], "x": 10.45, "y": 3}, + {"matrix": [8, 3], "x": 11.45, "y": 3}, + {"matrix": [8, 4], "x": 12.45, "y": 3}, + {"matrix": [8, 5], "x": 13.45, "y": 3}, + {"matrix": [8, 6], "x": 14.45, "y": 3, "w": 1.75}, + {"matrix": [8, 7], "x": 16.20, "y": 3}, + + {"matrix": [4, 0], "x": 0.2, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.7, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4, "w": 1.5}, + {"matrix": [4, 5], "x": 4.75, "y": 4, "w": 2}, + {"matrix": [4, 6], "x": 6.75, "y": 4}, + + {"matrix": [9, 1], "x": 8.45, "y": 4, "w": 2.75}, + {"matrix": [9, 3], "x": 11.20, "y": 4, "w": 1.5}, + {"matrix": [9, 6], "x": 14.5, "y": 4}, + {"matrix": [9, 7], "x": 15.5, "y": 4, "w": 1.5} + ] + } + } +} diff --git a/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c new file mode 100644 index 000000000000..2bcc085b7775 --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/default/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2018-2023 Mattia Dal Ben gregandcin +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layer { + _QWERTY, + _SYMB, + _NAV +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + [_SYMB] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT), + + [_NAV] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/gregandcin/teaqueen/keymaps/via/keymap.c b/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c new file mode 100644 index 000000000000..2bcc085b7775 --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/via/keymap.c @@ -0,0 +1,40 @@ +// Copyright 2018-2023 Mattia Dal Ben gregandcin +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum custom_layer { + _QWERTY, + _SYMB, + _NAV +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL), + + [_SYMB] = LAYOUT( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT), + + [_NAV] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/gregandcin/teaqueen/keymaps/via/rules.mk b/keyboards/gregandcin/teaqueen/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/gregandcin/teaqueen/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/gregandcin/teaqueen/readme.md b/keyboards/gregandcin/teaqueen/readme.md new file mode 100644 index 000000000000..2d259e644d2d --- /dev/null +++ b/keyboards/gregandcin/teaqueen/readme.md @@ -0,0 +1,26 @@ +# gregandcin/teaqueen + +![gregandcin/teaqueen](https://i.imgur.com/Wf1EIqwh.png) + +An Alice inspired, split layout keyboar featuring Kailh hotswap sockets. + +* Keyboard Maintainer: [gregandcin](https://github.com/gregandcin) +* Hardware Supported: Elite-Pi, other RP2040 Community Edition Boards + +Make example for this keyboard (after setting up your build environment): + + make gregandcin/teaqueen:default + +Flashing example for this keyboard: + + make gregandcin/teaqueen:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/gregandcin/teaqueen/rules.mk b/keyboards/gregandcin/teaqueen/rules.mk new file mode 100644 index 000000000000..161ec22b16e2 --- /dev/null +++ b/keyboards/gregandcin/teaqueen/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor diff --git a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c index f352b1c8510c..9cc621df2f22 100644 --- a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c +++ b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c @@ -316,36 +316,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; } - -void matrix_init_user(void) { -#ifdef AUDIO_ENABLE - startup_user(); -#endif -} - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick - PLAY_SONG(tone_startup); -} - -void shutdown_user(void) -{cc - PLAY_SONG(tone_goodbye); - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif diff --git a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c b/keyboards/hadron/ver3/keymaps/ishtob/keymap.c deleted file mode 100644 index a3b522fa0474..000000000000 --- a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c +++ /dev/null @@ -1,241 +0,0 @@ -#include QMK_KEYBOARD_H -#include "ishtob.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,------+------+------+------+------+------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | PSCR | - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | Tab | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | LCTL | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ;/Nav|Ctl/Et| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | - | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | Ctrl | GUI | Alt |Lower |Space | 0 | . | = |Space |Raise | Alt | NumL | App | Del | - * `--------------------------------------------------------------------------------------------------------' - */ -[_QWERTY] = LAYOUT_wrapper( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, - LT_FN(KC_TAB), _________________QWERTY_L1_________________, KC_P7, KC_P8, KC_P9, _________________QWERTY_R1_________________, KC_BSPC, - KC_CAPS, _________________QWERTY_L2_________________, KC_P4, KC_P5, KC_P6, _________________QWERTY_R2_________________, CTL_ENT, - KC_LSFT, _________________QWERTY_L3_________________, KC_P1, KC_P2, KC_P3, _________________QWERTY_R3_________________, LT_RAI(KC_MINS), - KC_ESC, KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_DEL -), - -/* Colemak - * ,------+------+------+------+------+------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | PSCR | - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | Tab | Q | W | F | P | G | 7 | 8 | 9 | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | CAPS | A | R | S | T | D | 4 | 5 | 6 | H | N | E | I | O |Ctl/Et| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | 1 | 2 | 3 | K | M | , | . | / | - | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | Ctrl | GUI | Alt |Lower |Space | 0 | . | = |Space |Raise | Alt | NumL | App | Del | - * `--------------------------------------------------------------------------------------------------------' - */ -[_COLEMAK] = LAYOUT_wrapper( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, - LT_FN(KC_TAB), _________________COLEMAK_L1________________, KC_P7, KC_P8, KC_P9, _________________COLEMAK_R1________________, KC_BSPC, - KC_LCTL, _________________COLEMAK_L2________________, KC_P4, KC_P5, KC_P6, _________________COLEMAK_R2________________, CTL_ENT, - KC_LSFT, _________________COLEMAK_L3________________, KC_P1, KC_P2, KC_P3, _________________COLEMAK_R3________________, LT_RAI(KC_MINS), - KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_DEL - ), - -/* Dvorak - * ,------+------+------+------+------+------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | PSCR | - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | Tab | " | , | . | P | Y | 7 | 8 | 9 | F | G | C | R | L | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | Esc | A | O | E | U | I | 4 | 5 | 6 | D | H | T | N | S | / | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | 1 | 2 | 3 | B | M | W | V | Z |Ctl/Et| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Esc | Ctrl | GUI | Alt |Lower |Space | 0 | . | = |Space |Raise | Alt | NumL | App | Del | - * `--------------------------------------------------------------------------------------------------------' - */ -[_DVORAK] = LAYOUT_wrapper( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR, - LT_FN(KC_TAB), _________________DVORAK_L1_________________, KC_P7, KC_P8, KC_P9, _________________DVORAK_R1_________________, KC_BSPC, - KC_LCTL, _________________DVORAK_L2_________________, KC_P4, KC_P5, KC_P6, _________________DVORAK_R2_________________, CTL_ENT, - KC_LSFT, _________________DVORAK_L3_________________, KC_P1, KC_P2, KC_P3, _________________DVORAK_R3_________________, LT_RAI(KC_MINS), - KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_P0, KC_DOT, KC_EQL, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_APP, KC_DEL -), - -/* Lower - * ,------+------+------+------+------+------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `--------------------------------------------------------------------------------------------------------' - */ -[_LOWER] = LAYOUT_wrapper( - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_EQL, KC_LBRC, KC_RBRC, KC_PIPE, - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Raise - * ,------+------+------+------+------+------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | | | | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO # |ISO / | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * `--------------------------------------------------------------------------------------------------------' - */ -[_RAISE] = LAYOUT_wrapper( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - ________________NUMBER_LEFT________________, KC_6, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_PLUS, KC_BSLS, - KC_DEL, KC_A, KC_UP, KC_D, KC_PSCR, KC_VOLU, _______, _______, _______, KC_4, KC_5, KC_6, KC_PAST, KC_COLN, KC_QUOT, - _______, KC_LEFT, KC_DOWN, KC_RIGHT,KC_MUTE, KC_VOLD, _______, _______, _______, KC_1, KC_2, KC_3, KC_UP, KC_SLSH, _______, - _______, _______, _______, _______, _______, KC_SPC, _______, _______, KC_SPC, KC_0, _______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NUM -), - -/* FN layer on Esc key - * ,------+------+------+------+------+------------------------------------------------. - * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | + | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | _ | = | [ | ] | ' | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | | | | F12 |ISO ~ |ISO | | { | } |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | Next | Vol- | Vol+ | Play | - * '------+------+------+------+------+------+------+------+------+------+------+------+--------------------' - */ -[_FNLAYER] = LAYOUT_wrapper( - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, - _______, __________________LONG_FUNC_LEFT___________________, _______, _______, _______, KC_UNDS, KC_EQL, KC_LBRC, KC_RBRC, KC_QUOT, - _______, __________________LONG_FUNC_RIGHT__________________, _______, _______, _______,S(KC_NUHS),S(KC_NUBS),KC_LCBR, KC_RCBR, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Mouse Layer (semi-col) - * ,------+------+------+------+------+------------------------------------------------. - * | ACCL0| ACCL1| ACCL2| | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | | | | | | | | | Home | Wh_Up| WHL_L| M_Up | WHL_R| Macro| | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | End | Wh_Dn| M_Lft| M_Dn | M_Rt | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | BTN2 | BTN3 | BTN4 | BTN5 | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | BTN1 | | | | BTN1 | | | | | | - * `--------------------------------------------------------------------------------------------------------' - */ - -[_MOUSECURSOR] = LAYOUT_wrapper( - KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, M_EMAIL,M_EMAIL2, _______, _______, _______, KC_HOME, KC_PGUP, KC_WH_L, KC_MS_U, KC_WH_R, P_MPASS, P_META, - _______, _______, _______, _______, O_RTQ6H, _______, _______, _______, KC_END , KC_PGDN, KC_MS_L, KC_MS_D, KC_MS_R, _______, O_DAYRN, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, - _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, KC_BTN1, _______, _______, _______, P_CITRIX, O_AUTODC -), - -/* Adjust (Lower + Raise) - * ,------+------+------+------+------+------------------------------------------------. - * | Reset|HPT TG|HPT FB|HPT M+|HPT M-|HPT RS| | | | | |EEP RS| - * |------+------+------+------+------+------+------+------+------+------+------+------+--------------------. - * | |RGB TG|RGB ST|RGBH -|RGBH +|RGBS -|RGBS +|RGBV -|RGBV +| | | | | | Del | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm| | | |AGswap|Qwerty|Colemk| | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | |Voice-|Voice+|Mus on|Musoff| | | | | | |BL - | BL + |BL ST |BL TG | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | |CK RS |CK - |CK + |CK TG | - * `--------------------------------------------------------------------------------------------------------' - */ -[_ADJUST] = LAYOUT_wrapper( - _______, HF_TOGG, HF_FDBK, HF_NEXT, HF_PREV, HF_RST, _______, _______, _______, _______, _______, EE_CLR, - QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL, - _______, MAGIC_TOGGLE_NKRO, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______, - _______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, BL_DOWN, BL_UP, BL_STEP, BL_TOGG, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CK_RST, CK_DOWN, CK_UP, CK_TOGG -) - - - -}; - -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case LOWER: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - layer_on(_LOWER); - } else { - layer_off(_LOWER); - } - return false; - break; - case RAISE: - if (record->event.pressed) { - //not sure how to have keyboard check mode and set it to a variable, so my work around - //uses another variable that would be set to true after the first time a reactive key is pressed. - layer_on(_RAISE); - } else { - layer_off(_RAISE); - } - return false; - break; - case BACKLIT: - if (record->event.pressed) { - register_code(KC_RSFT); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - return false; - break; - } - return true; -} - -bool music_mask_user(uint16_t keycode) { - switch (keycode) { - case RAISE: - case LOWER: - return false; - default: - return true; - } -} diff --git a/keyboards/hadron/ver3/keymaps/ishtob/readme.md b/keyboards/hadron/ver3/keymaps/ishtob/readme.md deleted file mode 100644 index 88b958ec4235..000000000000 --- a/keyboards/hadron/ver3/keymaps/ishtob/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -# The Default Hadron Layout - diff --git a/keyboards/hadron/ver3/keymaps/xulkal/config.h b/keyboards/hadron/ver3/keymaps/xulkal/config.h deleted file mode 100644 index 6f70f09beec2..000000000000 --- a/keyboards/hadron/ver3/keymaps/xulkal/config.h +++ /dev/null @@ -1 +0,0 @@ -#pragma once diff --git a/keyboards/hadron/ver3/keymaps/xulkal/keymap.c b/keyboards/hadron/ver3/keymaps/xulkal/keymap.c deleted file mode 100644 index 4ae1d0717003..000000000000 --- a/keyboards/hadron/ver3/keymaps/xulkal/keymap.c +++ /dev/null @@ -1,73 +0,0 @@ -#include QMK_KEYBOARD_H -#include "xulkal.h" - -#define EXPAND_LAYOUT(...) LAYOUT(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Qwerty Layout - * ,-----------------------------------------------------------------------------------. - * | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BkSp | - * |------+------+------+------+------+------|------+------+------+------+------+------+--------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | \ | 7 | 8 | 9 | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| - * |FN(CAPS)| A | S | D | F | G | H | J | K | L | ; | Enter| 4 | 5 | 6 | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Sft[ | Z | X | C | V | B | N | M | , | . | / | Sft] | 1 | 2 | 3 | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctl- | Win | LOWER| RAISE| Alt | Space| Space| Left | Up | Down | Right| Ctl= | 0 | . | = | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------' - */ - [_QWERTY] = EXPAND_LAYOUT( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_P7, KC_P8, KC_P9, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_P4, KC_P5, KC_P6, - _________________QWERTY_L4_________________, _________________QWERTY_R4_________________, KC_P1, KC_P2, KC_P3, - _________________QWERTY_L5_________________, _________________QWERTY_R5_________________, KC_P0, KC_DOT, KC_EQL - ), - -#ifndef GAMELAYER_DISABLE - [_GAME] = EXPAND_LAYOUT( - ___________________GAME_L1_________________, ___________________GAME_R1_________________, - ___________________GAME_L2_________________, ___________________GAME_R2_________________, _______, _______, _______, - ___________________GAME_L3_________________, ___________________GAME_R3_________________, _______, _______, _______, - ___________________GAME_L4_________________, ___________________GAME_R4_________________, _______, _______, _______, - ___________________GAME_L5_________________, ___________________GAME_R5_________________, _______, _______, _______ - ), -#endif - - [_LOWER] = EXPAND_LAYOUT( - __________________LOWER_L1_________________, __________________LOWER_R1_________________, - __________________LOWER_L2_________________, __________________LOWER_R2_________________, _______, _______, _______, - __________________LOWER_L3_________________, __________________LOWER_R3_________________, _______, _______, _______, - __________________LOWER_L4_________________, __________________LOWER_R4_________________, _______, _______, _______, - __________________LOWER_L5_________________, __________________LOWER_R5_________________, _______, _______, _______ - ), - - [_RAISE] = EXPAND_LAYOUT( - __________________RAISE_L1_________________, __________________RAISE_R1_________________, - __________________RAISE_L2_________________, __________________RAISE_R2_________________, _______, _______, _______, - __________________RAISE_L3_________________, __________________RAISE_R3_________________, _______, _______, _______, - __________________RAISE_L4_________________, __________________RAISE_R4_________________, _______, _______, _______, - __________________RAISE_L5_________________, __________________RAISE_R5_________________, _______, _______, _______ - ), - -#ifdef TRILAYER_ENABLED - [_ADJUST] = EXPAND_LAYOUT( - _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, - _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, _______, _______, _______, - _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, _______, _______, _______, - _________________ADJUST_L4_________________, _________________ADJUST_R4_________________, _______, _______, _______, - _________________ADJUST_L5_________________, _________________ADJUST_R5_________________, _______, _______, _______ - ), -#endif -}; - -bool music_mask_user(uint16_t keycode) { - switch (keycode) { - case RAISE: - case LOWER: - return false; - default: - return true; - } -} diff --git a/keyboards/hadron/ver3/keymaps/xulkal/rules.mk b/keyboards/hadron/ver3/keymaps/xulkal/rules.mk deleted file mode 100644 index 0305226b3215..000000000000 --- a/keyboards/hadron/ver3/keymaps/xulkal/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -# Overridden build options - -COMMAND_ENABLE = no -ENCODER_ENABLER = no diff --git a/keyboards/handwired/3dp660/info.json b/keyboards/handwired/3dp660/info.json index 6d380fc3c609..82132e447332 100644 --- a/keyboards/handwired/3dp660/info.json +++ b/keyboards/handwired/3dp660/info.json @@ -18,6 +18,7 @@ "diode_direction": "COL2ROW", "processor": "atmega32u4", "bootloader": "halfkay", + "community_layouts": ["66_ansi"], "layouts": { "LAYOUT_66_ansi": { "layout": [ diff --git a/keyboards/handwired/3dp660_oled/3dp660_oled.c b/keyboards/handwired/3dp660_oled/3dp660_oled.c new file mode 100644 index 000000000000..cc98d235f45a --- /dev/null +++ b/keyboards/handwired/3dp660_oled/3dp660_oled.c @@ -0,0 +1,121 @@ +// Copyright 2023 xia0 (@xia0) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#if defined (OLED_ENABLE) + + +// WPM responsiveness +#define IDLE_FRAMES 5 +#define IDLE_SPEED 20 // Speed at which animation goes into idle +#define TAP_FRAMES 2 +#define TAP_SPEED 40 // WPM to trigger Bongo +#define ANIM_FRAME_DURATION 200 // Frame MS +#define ANIM_SIZE 636 // Number of bytes in array, max 1024 + + + +static void render_animation(void) { + + static uint32_t anim_timer = 0; + static uint32_t anim_sleep = 0; + static uint8_t current_idle_frame = 0; + static uint8_t current_tap_frame = 0; + + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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}}; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + }; + + void animation_phase(void) { + if (get_current_wpm() <= IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + + if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { + oled_write_raw_P(prep[0], ANIM_SIZE); + } + + if (get_current_wpm() >= TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); + } + } + if (get_current_wpm() != 000) { + oled_on(); // Enables OLED on any alpha keypress + + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } +} + + + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + // Render Bongo Cat + render_animation(); + + // WPM text + oled_set_cursor(0, 0); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + + // Caps lock text + led_t led_state = host_keyboard_led_state(); + oled_set_cursor(0, 3); + if (led_state.caps_lock) { + oled_write_P(PSTR("CAPS"), false); + } + + return true; +} + +#endif diff --git a/keyboards/handwired/3dp660_oled/info.json b/keyboards/handwired/3dp660_oled/info.json new file mode 100644 index 000000000000..a43aca34643c --- /dev/null +++ b/keyboards/handwired/3dp660_oled/info.json @@ -0,0 +1,251 @@ +{ + "manufacturer": "xia0", + "keyboard_name": "handwired/3dp660_oled", + "maintainer": "xia0", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "oled": true, + "nkro": true, + "wpm": true + }, + "build": { + "lto": true + }, + "matrix_pins": { + "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"], + "rows": ["D5", "B0", "B5", "B4", "E6", "D7", "C6", "D4", "D2", "D3"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x3661", + "vid": "0x6662" + }, + "layouts": { + "LAYOUT_66_ansi": { + "layout": [ + { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 }, + { "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 }, + { "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 }, + { "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 }, + { "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 }, + { "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 }, + { "label": "Page Up", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Page Down", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [7, 5], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 }, + { "label": "Up", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4 }, + { "label": "Win", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4 }, + { "label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 }, + { "label": "Left", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 }, + { "label": "Down", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 }, + { "label": "Up", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 } + ] + }, + "LAYOUT_66_iso": { + "layout": [ + { "label": "~", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "*", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 }, + { "label": "(", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 }, + { "label": ")", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 }, + { "label": "_", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 }, + { "label": "+", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 }, + { "label": "Backspace", "matrix": [5, 6], "w": 2, "x": 13, "y": 0 }, + { "label": "Insert", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 }, + { "label": "Delete", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 }, + { "label": "", "matrix": [7, 4], "w": 1, "x": 12.75, "y": 2 }, + { "h": 2, "label": "Enter", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 1 }, + { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "\\", "matrix": [3, 1], "w": 1, "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [8, 5], "w": 2.25, "x": 12.25, "y": 3 }, + { "label": "\u2191", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 6], "w": 6, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [9, 2], "w": 1.25, "x": 9.75, "y": 4 }, + { "label": "Ctrl", "matrix": [9, 3], "w": 1.25, "x": 11, "y": 4 }, + { "label": "Menu", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 }, + { "label": "\u2190", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 }, + { "label": "\u2193", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 }, + { "label": "\u2192", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 } + ] + }, + "LAYOUT_all": { + "layout": [ + { "label": "GRAVE", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 }, + { "label": "1", "matrix": [0, 1], "w": 1, "x": 1, "y": 0 }, + { "label": "2", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 }, + { "label": "3", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 }, + { "label": "4", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 }, + { "label": "5", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 }, + { "label": "6", "matrix": [0, 6], "w": 1, "x": 6, "y": 0 }, + { "label": "7", "matrix": [0, 7], "w": 1, "x": 7, "y": 0 }, + { "label": "8", "matrix": [5, 0], "w": 1, "x": 8, "y": 0 }, + { "label": "9", "matrix": [5, 1], "w": 1, "x": 9, "y": 0 }, + { "label": "0", "matrix": [5, 2], "w": 1, "x": 10, "y": 0 }, + { "label": "DASH", "matrix": [5, 3], "w": 1, "x": 11, "y": 0 }, + { "label": "EQUALSIGN", "matrix": [5, 4], "w": 1, "x": 12, "y": 0 }, + { "label": "YEN", "matrix": [5, 5], "w": 1, "x": 13, "y": 0 }, + { "label": "BACKSPACE", "matrix": [5, 6], "w": 1, "x": 14, "y": 0 }, + { "label": "PAGEUP", "matrix": [5, 7], "w": 1, "x": 15.5, "y": 0 }, + { "label": "TAB", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "w": 1, "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "w": 1, "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "w": 1, "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "w": 1, "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "w": 1, "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "w": 1, "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "w": 1, "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [6, 0], "w": 1, "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [6, 1], "w": 1, "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [6, 2], "w": 1, "x": 10.5, "y": 1 }, + { "label": "LBRACKET", "matrix": [6, 3], "w": 1, "x": 11.5, "y": 1 }, + { "label": "RBRACKET", "matrix": [6, 4], "w": 1, "x": 12.5, "y": 1 }, + { "label": "BACKSLASH", "matrix": [6, 5], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "PAGEDOWN", "matrix": [6, 7], "w": 1, "x": 15.5, "y": 1 }, + { "label": "CAPSLOCK", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "w": 1, "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "w": 1, "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "w": 1, "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "w": 1, "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "w": 1, "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "w": 1, "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "w": 1, "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [7, 0], "w": 1, "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [7, 1], "w": 1, "x": 9.75, "y": 2 }, + { "label": "SEMICOLON", "matrix": [7, 2], "w": 1, "x": 10.75, "y": 2 }, + { "label": "QUOTE", "matrix": [7, 3], "w": 1, "x": 11.75, "y": 2 }, + { "label": "ISOHASH", "matrix": [7, 4], "w": 1, "x": 12.75, "y": 2 }, + { "label": "ENTER", "matrix": [7, 5], "w": 1.25, "x": 13.75, "y": 2 }, + { "label": "LSHIFT", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "label": "ISOBACKSLASH", "matrix": [3, 1], "w": 1, "x": 1.25, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "w": 1, "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "w": 1, "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "w": 1, "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "w": 1, "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "w": 1, "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "w": 1, "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [8, 0], "w": 1, "x": 8.25, "y": 3 }, + { "label": "COMMA", "matrix": [8, 1], "w": 1, "x": 9.25, "y": 3 }, + { "label": "PERIOD", "matrix": [8, 2], "w": 1, "x": 10.25, "y": 3 }, + { "label": "SLASH", "matrix": [8, 3], "w": 1, "x": 11.25, "y": 3 }, + { "label": "JPBACKSLASH", "matrix": [8, 4], "w": 1, "x": 12.25, "y": 3 }, + { "label": "RSHIFT", "matrix": [8, 5], "w": 1.25, "x": 13.25, "y": 3 }, + { "label": "UP", "matrix": [8, 6], "w": 1, "x": 14.5, "y": 3 }, + { "label": "LCTRL", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "LALT", "matrix": [4, 1], "w": 1, "x": 1.25, "y": 4 }, + { "label": "LCMD", "matrix": [4, 2], "w": 1.25, "x": 2.25, "y": 4 }, + { "label": "MUHENKAN", "matrix": [4, 3], "w": 1.25, "x": 3.5, "y": 4 }, + { "label": "SPACE1", "matrix": [4, 5], "w": 2, "x": 4.75, "y": 4 }, + { "label": "SPACE2", "matrix": [4, 6], "w": 2, "x": 6.75, "y": 4 }, + { "label": "HENKAN", "matrix": [9, 0], "w": 1.25, "x": 8.75, "y": 4 }, + { "label": "RCMD", "matrix": [9, 2], "w": 1.25, "x": 10, "y": 4 }, + { "label": "RCTRL", "matrix": [9, 3], "w": 1, "x": 11.25, "y": 4 }, + { "label": "FN", "matrix": [9, 4], "w": 1.25, "x": 12.25, "y": 4 }, + { "label": "LEFT", "matrix": [9, 5], "w": 1, "x": 13.5, "y": 4 }, + { "label": "DOWN", "matrix": [9, 6], "w": 1, "x": 14.5, "y": 4 }, + { "label": "RIGHT", "matrix": [9, 7], "w": 1, "x": 15.5, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/3dp660_oled/keymaps/default/keymap.c b/keyboards/handwired/3dp660_oled/keymaps/default/keymap.c new file mode 100644 index 000000000000..79e23eaabcaa --- /dev/null +++ b/keyboards/handwired/3dp660_oled/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +// Copyright 2023 xia0 (@xia0) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_GRV , KC_BSPC, KC_INS, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_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_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC , KC_SPC , KC_INT4, KC_RALT, MO(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT_all( KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, KC_DEL , KC_VOLU, + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_MUTE, KC_VOLD, + _______, _______, MO(2) , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END), + + [2] = LAYOUT_all( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/handwired/3dp660_oled/keymaps/via/keymap.c b/keyboards/handwired/3dp660_oled/keymaps/via/keymap.c new file mode 100644 index 000000000000..74d17bf0edbf --- /dev/null +++ b/keyboards/handwired/3dp660_oled/keymaps/via/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2023 xia0 (@xia0) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_INT1, KC_RSFT, KC_UP, KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_SPC, KC_INT4, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_all( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL, KC_VOLU, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_MUTE, KC_VOLD, + KC_TRNS, KC_TRNS, _______, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, KC_TRNS, KC_HOME, KC_PGDN, KC_END), +}; diff --git a/keyboards/handwired/3dp660_oled/keymaps/via/rules.mk b/keyboards/handwired/3dp660_oled/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/3dp660_oled/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/3dp660_oled/readme.md b/keyboards/handwired/3dp660_oled/readme.md new file mode 100644 index 000000000000..408fa4770a5b --- /dev/null +++ b/keyboards/handwired/3dp660_oled/readme.md @@ -0,0 +1,28 @@ +# handwired/3dp660_oled + +![handwired/3dp660_oled](https://i.imgur.com/AQ6VQfgh.jpg) + +*A handwired FC660 layout with OLED display support.* + +* Keyboard Maintainer: [xia0](https://github.com/xia0) +* Hardware Supported: ATmega32U4 e.g. Arduino Pro Micro or Teensy 2.0 + * Note: If using a Pro Micro, pins B0 and D5 are required. [Click for details](https://golem.hu/guide/pro-micro-upgrade/). +* Hardware Availability: [Printables](https://www.printables.com/model/464322-3dp-fc660-v3-oled-hand-wired-mechanical-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make handwired/3dp660_oled:default + +Flashing example for this keyboard: + + make handwired/3dp660_oled:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the MCU or short RST to GND. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/3dp660_oled/rules.mk b/keyboards/handwired/3dp660_oled/rules.mk new file mode 100644 index 000000000000..c80812f6e0a4 --- /dev/null +++ b/keyboards/handwired/3dp660_oled/rules.mk @@ -0,0 +1 @@ +# This file is intentionally blank diff --git a/keyboards/handwired/6key/config.h b/keyboards/handwired/6key/config.h deleted file mode 100644 index 0ba89040c74a..000000000000 --- a/keyboards/handwired/6key/config.h +++ /dev/null @@ -1,20 +0,0 @@ - /* Copyright 2020 Bratzworth - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 - -/* dip switch */ -#define DIP_SWITCH_PINS { C6 } diff --git a/keyboards/handwired/6key/info.json b/keyboards/handwired/6key/info.json index 39c26006d6e5..8e33a60e2e8d 100644 --- a/keyboards/handwired/6key/info.json +++ b/keyboards/handwired/6key/info.json @@ -13,6 +13,9 @@ "rows": ["B4", "D0"] }, "diode_direction": "COL2ROW", + "dip_switch": { + "pins": ["C6"] + }, "processor": "atmega32u4", "bootloader": "caterina", "layouts": { diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/config.h b/keyboards/handwired/atreus50/keymaps/ajp10304/config.h deleted file mode 100644 index 4f15c5626969..000000000000 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/config.h +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright 2021 Alan Pocklington - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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_USER_H -#define CONFIG_USER_H - -#include "../../config.h" - -#undef MATRIX_ROW_PINS -#undef MATRIX_COL_PINS - -#define MATRIX_ROW_PINS { D4, D5, C7, C6 } -#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, D7, D1, B7, D0, B3, B2, B1, B0 } - -#endif diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c b/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c deleted file mode 100644 index d807df047d2b..000000000000 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c +++ /dev/null @@ -1,222 +0,0 @@ -/* Copyright 2021 Alan Pocklington - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include QMK_KEYBOARD_H -#include "keymap_uk.h" -#include "ajp10304.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,-----------------------------------------| |-----------------------------------------. - * | Esc | Q | W | E | R | T | | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | A | S | D | F | G | | H | J | K | L | ;: | Enter| - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shft | Z | X | C | V | B | | N | M | ,< | .> | /? | Shft | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 | - * `-------------------------------------------------------------------------------------------------' - */ -[_QWERTY] = LAYOUT( - LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC , - MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) , - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , - MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSFT, KC_BTN2, KC_RCTL, MO(_FUNC2) -), - -/* Colemak-DHm - * ,-----------------------------------------| |-----------------------------------------. - * | Esc | Q | W | F | P | B | | J | L | U | Y | ;: | Bksp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | A | R | S | T | G | | M | N | E | I | O | Enter| - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shft | Z | X | C | D | V | | K | H | ,< | .> | /? | Shft | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 | - * `-------------------------------------------------------------------------------------------------' - */ -[_QWERTY] = LAYOUT( - LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC , - MT(MOD_LSFT, KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, MT(MOD_RSFT, KC_ENT) , - KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT , - MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSFT, KC_BTN2, KC_RCTL, MO(_FUNC2) -), - -/* Function - * ,------------------------------------------ |-----------------------------------------. - * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------- |------+------+------+------+------+------| - * | 1! | 2" | 3£ | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | ~ |INSERT| - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| \| | `¬ | #~ | * | -_ | | =+ | \| | [{ | ]} | '@ |Shift | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Mouse | MENU | Alt | Ctrl | Fn | - * `-------------------------------------------------------------------------------------------------' - */ -[_FUNC] = LAYOUT( - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 , - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT , - KC_LSFT, KC_NUBS, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLS, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) , - _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______ -), - -/* Lower - * ,------------------------------------------ |-----------------------------------------. - * | 1! | 2" | 3£ | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | DEL | Bksp | - * |------+------+------+------+------+------- |------+------+------+------+------+------| - * | ! | " | £ | $ | % | ^ | | & | * | ( | ) |WrdDel|WrdBks| - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| \| | `¬ | #~ | '@ | -_ | | =+ | #~ | [{ | ]} | '@ |Shift | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | |Lower | Del | Ctrl | Alt |Space | | Next | Vol- | Vol+ | Play | - * `-------------------------------------------------------------------------------------------------' - */ -[_LOWER] = LAYOUT( - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC , - LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC) , - SC_LSPO, KC_NUBS, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) , - _______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -), - -/* Raise - * ,------------------------------------------ |-----------------------------------------. - * | ` | |WRDSEL| [ | ] | | | | PGUP | HOME |PGDOWN| |PRNTSC| - * |------+------+------+------+------+------- |------+------+------+------+------+------| - * | ` | | | ( | ) | | | | HOME | UP | END | |ZOOM +| - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | { | } | | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -| - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------| - * | Mouse| | | | | Alt | Ctrl | Alt |Enter |Raise | | | | | - * `-------------------------------------------------------------------------------------------------' - */ -[_RAISE] = LAYOUT( - KC_GRV, XXXXXXX, M_WORD_SEL, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDN, XXXXXXX, KC_PSCR , - KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) , - _______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) , - MO(_MOUSE), _______, _______, _______, _______, KC_LALT, _______, _______, KC_ENT, _______, XXXXXXX, _______, _______, _______ -), - -/* Adjust (Lower + Raise) - * ,------------------------------------------ |------------------------------------------. - * | ???? | Reset|Qwerty| | | REC1 | | REC2 | | | | | Del | - * |------+------+------+------+------+------- |------+------+------+------+------+-------| - * | CAPS | | | | | PLAY1| | PLAY2| Mute | Vol+ | Play | |Qwerty | - * |------+------+------+------+------+------| |------+------+------+------+------+-------| - * | PC/MC| | | | | STOP | | STOP | Prev | Vol- | Next | |Colemak| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+-------| - * | | | | | | | | | | | | | | | - * `--------------------------------------------------------------------------------------------------' - */ -[_ADJUST] = LAYOUT( - M_CUSTOM, QK_BOOT, QWERTY, _______, _______, DM_REC1, DM_REC2, _______, _______, _______, _______, KC_DEL , - KC_CAPS, _______, _______, _______, _______, DM_PLY1, DM_PLY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, QWERTY , - TG(_MAC), _______, _______, _______, _______, DM_RSTP, DM_RSTP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, COLEMAK , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -/* Mouse - * ,------------------------------------------ |-----------------------------------------. - * | ESC | | | | | | | WH_L | WH_UP| BTN3 | WH_D | WH_R | | - * |------+------+------+------+------+------- |------+------+------+------+------+------| - * | ACC0 | ACC1 | ACC2 | | | | | | BTN1 | UP | BTN2 | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | ACC0 | ACC1 | ACC2 | | | | | | LEFT | DOWN |RIGHT | | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ -[_MOUSE] = LAYOUT( - KC_ESC , _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______ , - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______ , - KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - - -/* Num Pad - * ,------------------------------------------ |-----------------------------------------. - * | ESC | | | | | | |NMLOCK| 7 | 8 | 9 | / | | - * |------+------+------+------+------+------- |------+------+------+------+------+------| - * | | | | | | | | | 4 | 5 | 6 | * | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | 1 | 2 | 3 | + | | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------| - * | | | | | | | | | | 0 | . | , | - | | - * `-------------------------------------------------------------------------------------------------' - */ -[_NUMPAD] = LAYOUT( - _______, _______, _______, _______, _______, _______, KC_NUM, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, _______, - _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, KC_COMM, KC_KP_MINUS, _______ -), - - -/* Function 2 (Right hand side) - * ,------------------------------------------ |-----------------------------------------. - * | | |WRDSEL| | | | | LNDEL| | | | | | - * |------+------+------+------+------+------- |------+------+------+------+------+------| - * | | | LNSEL| DUP | | | | | |LNJOIN| | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | UNDO | CUT | COPY | PASTE| | | | | | | | MODE | - * |------+------+------+------+------+------|------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ -[_FUNC2] = LAYOUT( - _______, _______, M_WORD_SEL, _______, _______, _______, M_LINE_DEL, _______, _______, _______, _______, _______, - _______, _______, M_LINE_SEL, M_DUP, _______, _______, _______, M_JOIN, _______, _______, _______, _______, - _______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M_MODE, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MAC] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - MFNC, _______, _______, _______, MLWR, _______, _______, _______, _______, MRSE, _______, _______, _______, MFNC2 -), - -[_MLWR] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MRSE] = LAYOUT( - _______, _______, M_WORD_SEL_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) , - _______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MFNC] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT) , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -), - -[_MFNC2] = LAYOUT( - _______, _______, M_WORD_SEL_MAC, _______, _______, _______, M_LINE_DEL_MAC, _______, _______, _______, _______, _______, - _______, _______, M_LINE_SEL_MAC, M_DUP_MAC, _______, _______, _______, M_JOIN_MAC, _______, _______, _______, _______, - _______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M_MODE_MAC, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ -) - -}; diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md b/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md deleted file mode 100644 index 6ba052065d7f..000000000000 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/readme.md +++ /dev/null @@ -1,130 +0,0 @@ -# AJP10304 Custom Atreus50 Layout -# Also available for the Planck, Shark, Quark and JJ40 - -**Note:** In the tables below where there are two characters on a key, -the second is the output when shift is applied. - -**Note:** The below tables assume a UK layout. - -#### Flashing -Refer to the README.md of the keyboard you want to flash. - -##### Main Qwerty Layer - -* Tab: when held, operates as shift. -* Enter: when held, operates as shift. -* MENU: perform right-click - -| | | | | | | | | | | | | | | -| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:| -| Esc | Q | W | E | R | T | | | Y | U | I | O | P | Bksp | -| Tab | A | S | D | F | G | | | H | J | K | L | ;: | Enter| -| Shft | Z | X | C | V | B | | | N | M | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 | - -##### Main Colemak-DHm Layer - -| | | | | | | | | | | | | | | -| ---- |:----:| :---:|:---:|:-----:|:----:| :---:| :---:|:-----:|:-----:|:-----:|:----:|:----:| ----:| -| Esc | Q | W | F | P | B | | | J | L | U | Y | ;: | Bksp | -| Tab | A | R | S | T | G | | | M | N | E | I | O | Enter| -| Shft | Z | X | C | D | V | | | K | H | ,< | .> | /? | Shft | -| Fn | Ctrl | Alt | GUI | Lower | Bksp | Ctrl | Alt | Space | Raise | Shift | MENU | Ctrl | Fn2 | - - -##### Function Layer -Activated when `fn` held in the above `qwerty` layer. - -| | | | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| F1 | F2 | F3 | F4 | F5 | F6 | | | F7 | F8 | F9 | F10 | F11 | F12 | -| 1! | 2" | 3£ | 4$ | 5% | 6^ | | | 7& | 8* | 9( | 0) | ~ |INSERT| -| Shift | \| | `¬ | #~ | * | -_ | | | =+ | \| | [{ | ]} | '@ |Shift | -| Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Mouse | MENU | Alt | Ctrl | Fn2 | - -##### Lower Layer -Activated when `Lower` is held in the above `qwerty` layer. - -* Numbers are along the top row, their shifted counterparts are on row 2. -* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word. -* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word. - -| | | | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| 1! | 2" | 3£ | 4$ | 5% | 6^ | | | 7& | 8* | 9( | 0) | DEL | Bksp | -| ! | " | £ | $ | % | ^ | | | & | * | ( | ) |WrdDel|WrdBks| -| Shift | \| | `¬ | #~ | '@ | -_ | | | =+ | #~ | [{ | ]} | '@ |Shift | -| | | | |Lower | Del | Ctrl | Alt |Space | | Next | Vol- | Vol+ | Play | - -##### Raise Layer -Activated when `Raise` is held in the above `qwerty` layer. - -* Preferred layer for typing brackets. -* Allows for cursor navigation to be used solely with the right hand. -* WRDSEL: Select the word where the cursor is. -* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping. - -| | | | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:| -| ` | |WRDSEL| [ | ] | | | | | PGUP | HOME |PGDOWN| |PRNTSC| -| ` | | | ( | ) | | | | | HOME | UP | END | |ZOOM +| -| | | | { | } | | | ||<| LEFT | DOWN |RIGHT |>||ZOOM -| -| Mouse | | | | | Alt | Ctrl | Alt | Enter |Raise | | | | | - -##### Lower + Raise -Activated when `Lower` and `Raise` are held together in the above `qwerty` layer. - -* Audio controls in the same position as cursor keys from the `Raise` layer. -* ????: Runs a macro for outputting a text string. Do not use this store passwords. -* Reset: Enter bootloader for flashing firmware to the keyboard. -* CAPS: Toggle caps lock. -* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2. -To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2. -* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER, -MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively. - -| | | | | | | | | | | | | | | -| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:| -| ???? | Reset|Qwerty| | | REC1 | | | REC2 | | | | | Del | -| CAPS | | | | | PLAY1| | |PLAY2 | Mute | Vol+ | Play | | Qwerty | -| MAC | | | | | STOP1| | |STOP2 | Prev | Vol- | Next | | Colemak | -| | | | | | | Ctrl | Alt | | | DYN | | | | - -##### Function 2 Layer -Activated when `fn` held in the above `qwerty` layer. -* WRDSEL: Select the word where the cursor is. -* LNDEL: Delete the line where the cursor is. -* LNSEL: Select the line where the cursor is. -* DUP: Duplicate the selected text. -* LNJOIN: Join the line where the cursor is with the following line. -* MODE: Print either `PC` or `OSX` depending on what layer mode is active. - -| | | | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | |WRDSEL| | | | | | LNDEL| | | | | | -| | | LNSEL| DUP | | | | | | |LNJOIN| | | | -| | UNDO | CUT | COPY | PASTE| | | | | | | | | MODE | -| | | | | | | Ctrl | Alt | | | | | | | - -##### Mouse Layer -Activated when `fn` and `raise` held together. - -| | | | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| ESC | | | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | | -| ACC0 | ACC1 | ACC2 | | | | | | | BTN1 | UP | BTN2 | | | -| ACC0 | ACC1 | ACC2 | | | | | | | LEFT | DOWN | RIGHT| | | -| | | | | | | Ctrl | Alt | | | | | | | - -##### Number Pad Layout -Activated when holding `Esc` key. - -| | | | | | | | | | | | | | | -| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| -| | | | | | | | |NMLOCK| 7 | 8 | 9 | / | | -| | | | | | | | | | 4 | 5 | 6 | * | | -| | | | | | | | | | 1 | 2 | 3 | + | | -| | | | | | | Ctrl | Alt | | 0 | . | , | - | | - - - diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk b/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk deleted file mode 100644 index 900dbaed11ac..000000000000 --- a/keyboards/handwired/atreus50/keymaps/ajp10304/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -AUDIO_ENABLE = no -MOUSEKEY_ENABLE = yes -BOOTLOADER = halfkay diff --git a/keyboards/handwired/atreus50/keymaps/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c index cbcc5fc6f8f7..c9de095cf895 100644 --- a/keyboards/handwired/atreus50/keymaps/default/keymap.c +++ b/keyboards/handwired/atreus50/keymaps/default/keymap.c @@ -94,20 +94,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef AUDIO_ENABLE -float tone_startup[][2] = { - {NOTE_B5, 20}, - {NOTE_B6, 8}, - {NOTE_DS6, 20}, - {NOTE_B6, 8} -}; +// float tone_startup[][2] = { +// {NOTE_B5, 20}, +// {NOTE_B6, 8}, +// {NOTE_DS6, 20}, +// {NOTE_B6, 8} +// }; float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float tone_goodbye[][2] = SONG(GOODBYE_SOUND); - -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif void persistent_default_layer_set(uint16_t default_layer) { @@ -178,36 +175,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick - PLAY_SONG(tone_startup); -} - -void shutdown_user(void) -{ - PLAY_SONG(tone_goodbye); - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif diff --git a/keyboards/handwired/battleship_gamepad/rules.mk b/keyboards/handwired/battleship_gamepad/rules.mk index 7422e738735d..a41273f89001 100644 --- a/keyboards/handwired/battleship_gamepad/rules.mk +++ b/keyboards/handwired/battleship_gamepad/rules.mk @@ -1,5 +1,3 @@ -SRC += analog.c - # Build Options # change yes to no to disable # diff --git a/keyboards/handwired/brain/keymaps/klackygears/config.h b/keyboards/handwired/brain/keymaps/klackygears/config.h deleted file mode 100644 index b572858448b6..000000000000 --- a/keyboards/handwired/brain/keymaps/klackygears/config.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright 2020 James Smith - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 PERMISSIVE_HOLD -#define TAPPING_TERM 150 - -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#undef RGBLIGHT_RAINBOW_SWIRL_RANGE -#define RGBLIGHT_RAINBOW_SWIRL_RANGE 75 -#define RGBLIGHT_EFFECT_SNAKE -#undef RGBLIGHT_EFFECT_SNAKE_LENGTH -#define RGBLIGHT_EFFECT_SNAKE_LENGTH 20 -#define RGBLIGHT_EFFECT_KNIGHT -#undef RGBLIGHT_EFFECT_KNIGHT_LENGTH -#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 20 - -// #define RGBLIGHT_EFFECT_CHRISTMAS -// #define RGBLIGHT_EFFECT_STATIC_GRADIENT -// #define RGBLIGHT_EFFECT_RGB_TEST -// #define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -#define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 127 diff --git a/keyboards/handwired/brain/keymaps/klackygears/keymap.c b/keyboards/handwired/brain/keymaps/klackygears/keymap.c deleted file mode 100644 index 07185446db69..000000000000 --- a/keyboards/handwired/brain/keymaps/klackygears/keymap.c +++ /dev/null @@ -1,99 +0,0 @@ -#include QMK_KEYBOARD_H -#include "klackygears.h" - -//For an explanation of what's going on here with the keymap wrappers, check out drashna's user folder. - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_WINBASE] = LAYOUT_wrapper( - _______________DVORAK_L1___________________, KC_ESC, KC_GAMER, _______________DVORAK_R1___________________, - RGB_TOG, _______________DVORAK_L2___________________, _______, KC_GAMR1, _______________DVORAK_R2___________________, RGB_TOG, - RGB_MOD, _______________WINDVK_L3___________________, _______, KC_GAMR2, _______________WINDVK_R3___________________, RGB_MOD, - _______, _______, __________________WIN_THUMB_CLUSTER_V2______________ , _______, _______, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO - ), - - [_MACBASE] = LAYOUT_wrapper( - _______________DVORAK_L1___________________, KC_ESC, _______, _______________DVORAK_R1___________________, - RGB_TOG, _______________DVORAK_L2___________________, _______, _______, _______________DVORAK_R2___________________, RGB_TOG, - RGB_MOD, _______________MACDVK_L3___________________, _______, _______, _______________MACDVK_R3___________________, RGB_MOD, - _______, _______, __________________MAC_THUMB_CLUSTER_V2______________ , _______, _______, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO - ), - - - [_QWERTY] = LAYOUT_wrapper( - _________________QWERTY_L1_________________, KC_ESC, _______, _________________QWERTY_R1_________________, - KC_CAPS, _________________QWERTY_L2_________________, _______, _______, _________________QWERTY_R2_________________, KC_ENT, - KC_LSFT, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, KC_RSFT, - KC_LCTL, KC_LALT, KC_LGUI, MO(_MNMB), MO(_SYMB), MO(_SYMB), MO(_MNMB), KC_RGUI, MO(_MDIA), MO(_FUNC), - KC_LSFT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RSFT - ), - //Jedi - Fallen Order - [_GAMER] = LAYOUT_wrapper( - KC_R, KC_Q, KC_W, KC_E, KC_1, KC_ESC, KC_WINBASE, _________________RGB_1_____________________, - KC_TAB, KC_F, KC_A, KC_S, KC_D, KC_2, LSFT(KC_F2), KC_GAMR1, _________________RGB_2_____________________, RGB_TOG, - KC_TAB, KC_TAB, KC_X, KC_Z, KC_C, KC_3, KC_M, KC_GAMR2, _________________MEDIA_____________________, RGB_MOD, - KC_LCTL, KC_LALT, KC_LCTL, KC_LSFT, KC_SPC, _______, KC_UP, _______, _______, _______, - KC_NO, KC_LSFT, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT - ), - //Borderlands - [_GAMR1] = LAYOUT_wrapper( - KC_R, KC_G, KC_W, KC_E, KC_1, KC_ESC, KC_WINBASE, _________________RGB_1_____________________, - KC_TAB, KC_V, KC_A, KC_S, KC_D, KC_2, KC_L, KC_GAMR1, _________________RGB_2_____________________, RGB_TOG, - KC_T, KC_I, KC_F, KC_Q, KC_4, KC_3, KC_M, KC_GAMR2, _________________MEDIA_____________________, RGB_MOD, - KC_X, KC_K, KC_C, KC_LSFT, KC_SPC, _______, KC_UP, _______, _______, _______, - KC_Z, KC_LSFT, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT - ), - //Witcher - [_GAMR2] = LAYOUT_wrapper( - KC_R, KC_Q, KC_W, KC_E, KC_1, KC_ESC, KC_WINBASE, _________________RGB_1_____________________, - KC_TAB, KC_LALT, KC_A, KC_S, KC_D, KC_2, KC_J, KC_GAMR1, _________________RGB_2_____________________, RGB_TOG, - KC_X, KC_I, KC_F, KC_C, KC_V, KC_3, KC_M, KC_GAMR2, _________________MEDIA_____________________, RGB_MOD, - KC_LCTL, KC_V, KC_HOME, KC_LSFT, KC_SPC, _______, KC_UP, _______, _______, _______, - KC_ENT, KC_LCTL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT - ), - - [_SYMB] = LAYOUT_wrapper( - _________________PUNC_L1_ALT_______________, _______, _______, _________________PUNC_R1___________________, - _______, _________________PUNC_L3___________________, _______, _______, _________________PUNC_R2___________________, _______, - RGB_MOD, _________________PUNC_L3_ALT_______________, _______, _______, _________________PUNC_R3___________________, _______, - _______, _______, _______, _______, KC_DEL, KC_CAPS, _______, _______, _______, _______, - _______, _______, KC_DEL, KC_CAPS, _______, _______ - ), - - [_FUNC] = LAYOUT_wrapper( - _____________FUNC_L1_______________________, _______, _______, _______, _____________FUNC_1_______________, - _______, ________MAC_MISSION_CTRL__________, LGUI(KC_L), _______, _______, _______, _____________FUNC_2_______________, _______, - RGB_MOD, _____________FUNC_L3_______________________, _______, _______, _______, _____________FUNC_3_______________, _______, - _______, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, - _______, _______, _______, KC_CAPS, _______, _______ - ), - - [_MNMB] = LAYOUT_wrapper( - _________________MACNAV_L1_________________, _______, _______, _________________NUMB_R1___________________, - _______, _________________MACNAV_L2_________________, _______, _______, _________________NUMB_R2___________________, _______, - RGB_MOD, _________________MACNAV_L3_________________, _______, _______, _________________NUMB_R3_MAC_______________, _______, - _______, _______, _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______, - _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT - ), - - - [_NUMB] = LAYOUT_wrapper( - _________________WINNAV_L1_________________, _______, _______, _________________NUMB_R1___________________, - _______, _________________WINNAV_L2_________________, _______, _______, _________________NUMB_R2___________________, _______, - RGB_MOD, _________________WINNAV_L3_________________, _______, _______, _________________NUMB_R3_WIN_______________, _______, - _______, _______, _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______, - _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT - ), - - [_MDIA] = LAYOUT_wrapper( - _________________LYOUT_____________________, _______, RGB_TOG, _________________RGB_1_____________________, - _______, _________________KC_BLANK__________________, _______, _______, _________________RGB_2_____________________, _______, - RGB_MOD, _________________KC_BLANK__________________, _______, _______, _________________MEDIA_____________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______ - ) - - }; diff --git a/keyboards/handwired/brain/keymaps/klackygears/rules.mk b/keyboards/handwired/brain/keymaps/klackygears/rules.mk deleted file mode 100644 index 26c9daf6ad33..000000000000 --- a/keyboards/handwired/brain/keymaps/klackygears/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ - -RGBLIGHT_ENABLE = yes #Enable WS2812 RGB underlight. -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/co60/rev7/config.h b/keyboards/handwired/co60/rev7/config.h index 7e50f570ed1a..b6b7cecec24f 100644 --- a/keyboards/handwired/co60/rev7/config.h +++ b/keyboards/handwired/co60/rev7/config.h @@ -23,5 +23,5 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE /* RGB underglow configuration */ -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 diff --git a/keyboards/handwired/d48/keymaps/anderson/keymap.c b/keyboards/handwired/d48/keymaps/anderson/keymap.c deleted file mode 100644 index 5ae92d2360a6..000000000000 --- a/keyboards/handwired/d48/keymaps/anderson/keymap.c +++ /dev/null @@ -1,342 +0,0 @@ -#include QMK_KEYBOARD_H -#include "taphold.h" -#include "seq.h" -#include "ds1307.h" -#include "lightmode.h" -#include - -/* Note: don't forget there's some more code in qmk_firmware/users/anderson dir */ - -#define _MAIN 0 -#define _ALPHA 1 -#define _BETA 2 - -enum custom_keycodes { - KC_MAIN = SAFE_RANGE, - KC_ALPHA, - KC_BETA, -#ifdef LIGHTMODE_ENABLE - KC_LIGHT_MODE, -#endif - KC_SEQ, - KC_SET_TIME, -}; -#ifdef LIGHTMODE_ENABLE -#endif - -/* TapHold is my own implementation of the `LT` macro. It's processed in `process_record_user()`. */ -#define TAPHOLD_CONFIG_SIZE 3 -taphold_t taphold_config[TAPHOLD_CONFIG_SIZE] = { - {.key=KC_ALPHA, .mode=TAPHOLD_LAYER, .shortAction=KC_ESC, .longAction=_ALPHA}, - {.key=KC_BETA, .mode=TAPHOLD_LAYER, .shortAction=KC_EQL, .longAction=_BETA}, - {.key=KC_RCTL, .mode=TAPHOLD_MOD, .shortAction=KC_MINS, .longAction=KC_LCTL}, -}; -uint16_t taphold_config_size = TAPHOLD_CONFIG_SIZE; -uint32_t taphold_timeout = 90; - -/* Seq is implementation of unicode macros similar to UCIS, but with unicode strings. */ -#define SEQ_CONFIG_SIZE 3 -seq_t seq_config[SEQ_CONFIG_SIZE] = { - {.sequence="temp", .result="42°C"}, - {.sequence="table", .result="┳━━┳"}, - {.sequence="shrug", .result="¯\\_(ツ)_/¯"} -}; -uint16_t seq_config_size = SEQ_CONFIG_SIZE; - -/* Colors */ -uint32_t layer_colors[3] = { - [_MAIN] = 0xFF0010, - [_ALPHA] = 0x4020FF, - [_BETA] = 0x20FF00, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Main layer - │MUTE │ │L_MOD│ - ┏━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┓ - ┃ TAB ┃ Q │ W │ E │ R │ T ┃ Y │ U │ I │ O │ P ┃ BSP ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃𝛼/ESC┃ A │ S │ D │ F │ G ┃ H │ J │ K │ L │ ; ┃ RET ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃SHIFT┃ Z │ X │ C │ V │ B ┃ N │ M │ , │ . │ / ┃CTL/-┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃LCTRL┃ │ │ ALT │ GUI │SPACE┃SPACE│ 𝛽/= │ ' │ │ ┃ \ ┃ - ┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛ - */ - [_MAIN] = LAYOUT( - KC_MUTE, LCTL(KC_D), - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_ALPHA,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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_RCTL, - KC_LCTL, _______, _______, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_BETA, KC_QUOT, _______, _______, KC_BSLS - ), - - /* Alpha layer (𝛼) - │ │ │ │ - ┏━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┓ - ┃ ┃PREV │PLAY │NEXT │ │NUMLK┃ - │ ^^^ │ ^ │ vvv │ ~ ┃ DEL ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃ ┃ │VOL -│VOL +│ │CPSLK┃HOME │ <-- │ v │ --> │ ` ┃ \ ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃ ┃ │ │ │ │SCRLK┃ END │ = │ [ │ ] │ ( ┃ ) ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃ ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┃ - ┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛ - */ - [_ALPHA] = LAYOUT( - _______, _______, - _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_NUM, KC_MINS, KC_PGUP, KC_UP, KC_PGDN, KC_TILD, KC_DEL, - _______, _______, KC_VOLD, KC_VOLU, _______, KC_CAPS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_GRV, KC_BSLS, - _______, _______, _______, _______, _______, KC_SCRL, KC_END, KC_EQL, KC_LBRC, KC_RBRC, KC_LPRN ,KC_RPRN, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - - /* Beta layer (𝛽) - │ │ │ │ - ┏━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┓ - ┃ RGB ┃ 1 │ 2 │ 3 │ 4 │ 5 ┃ 6 │ 7 │ 8 │ 9 │ 0 ┃ F12 ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃L_MOD┃ F1 │ F2 │ F3 │ F4 │ F5 ┃ F6 │ F7 │ F8 │ F9 │ F10 ┃ F11 ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃ ┃Boot │Debug│ │ │TIME ┃SLEEP│ SEQ │ { │ } │PTSCR┃ ┃ - ┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫ - ┃ ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┃ - ┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛ - */ - [_BETA] = LAYOUT( - _______, _______, - RGB_TOG, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, -#ifdef LIGHTMODE_ENABLE - KC_LIGHT_MODE, -#else - _______, -#endif - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, QK_BOOT, DB_TOGG, _______, _______, KC_SET_TIME,KC_SLEP,KC_SEQ,KC_LCBR, KC_RCBR, KC_PSCR, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; - -static bool alpha_pressed = false; -static bool beta_pressed = false; - -static bool ctrl_pressed = false; -static bool alt_pressed = false; -static bool shift_pressed = false; -static bool gui_pressed = false; - -static bool is_in_seq = false; - -void keyboard_post_init_user(void) { - /* debug_enable = true; */ - /* debug_matrix = true; */ -} - -void eeconfig_init_user(void) { - set_unicode_input_mode(UNICODE_MODE_LINUX); -} - -void matrix_init_user(void) { -#ifdef LIGHTMODE_ENABLE - set_light_mode(SMOOTHLED, layer_colors[_MAIN]); -#endif -} - -static uint32_t last_update = 0; -static uint8_t hours, minutes, seconds; - -void matrix_scan_user(void) { - uint32_t now = timer_read32(); - if (now - last_update > 500) { - ds1307_get_time(&hours, &minutes, &seconds); - last_update = now; - } -} - -static bool is_in_set_time = false; -static char new_time[6]; -static uint8_t new_time_index = 0; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (keycode == KC_SEQ && record->event.pressed) { - seq_start(); - layer_off(_BETA); - is_in_seq = true; - return false; - } else if (is_in_seq) { - if (record->event.pressed) { - if (!seq_feed(keycode)) { - is_in_seq = false; - } - } - return false; - } - if (keycode == KC_SET_TIME && record->event.pressed) { - is_in_set_time = true; - new_time_index = 0; - } else if (is_in_set_time) { - if (!record->event.pressed && keycode >= KC_1 && keycode <= KC_0) { - new_time[new_time_index++] = (keycode == KC_0) ? 0 : keycode - KC_1 + 1; - if (new_time_index == 6) { - is_in_set_time = false; - ds1307_set_time( - (new_time[0]) * 10 + (new_time[1]), - (new_time[2]) * 10 + (new_time[3]), - (new_time[4]) * 10 + (new_time[5]) - ); - for (int i = 0; i < 6; i++) { - tap_code(KC_BACKSPACE); - } - } - } - } - - if (keycode == KC_LCTL || keycode == KC_RCTL) { - ctrl_pressed = record->event.pressed; - } else if (keycode == KC_LALT) { - alt_pressed = record->event.pressed; - } else if (keycode == KC_LSFT) { - shift_pressed = record->event.pressed; - } else if (keycode == KC_LGUI) { - gui_pressed = record->event.pressed; - } else if (keycode == KC_ALPHA) { - alpha_pressed = record->event.pressed; - } else if (keycode == KC_BETA) { - beta_pressed = record->event.pressed; - } - - if (keycode == QK_BOOT) { - rgblight_setrgb(255, 255, 0); - } -#ifdef LIGHTMODE_ENABLE - if (record->event.pressed && keycode == KC_LIGHT_MODE) { - next_light_mode(layer_colors[_MAIN]); - } -#endif - if (keycode == KC_LCTL) { - /* Some Overlay1_Enable fuckery! */ - (record->event.pressed ? register_code : unregister_code)(KC_LCTL); - return false; - } - return taphold_process(keycode, record); -} - -layer_state_t layer_state_set_user(layer_state_t state) { -#ifdef LIGHTMODE_ENABLE - uint8_t layer = get_highest_layer(state); - update_light_mode(layer_colors[layer]); -#endif - return state; -} - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - if (!alpha_pressed) { - tap_code(clockwise ? KC_VOLD : KC_VOLU); - } else { - tap_code(clockwise ? KC_MPRV : KC_MNXT); - } - } else if (index == 1) { - if (!alpha_pressed) { - tap_code(clockwise ? KC_UP : KC_DOWN); - } else { - tap_code(clockwise ? KC_PGUP : KC_PGDN); - } - } - return true; -} - -#ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - return OLED_ROTATION_0; -} - -bool oled_task_user(void) { - /* Host Keyboard Layer Status */ - uint8_t current_layer = get_highest_layer(layer_state); - - /* Layer */ - static const char PROGMEM icons[4][3][6] = { - { - { 0x80, 0x81, 0x82, 0x83, 0x84, 0 }, - { 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0 }, - { 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0 } - }, - { - { 0x85, 0x86, 0x87, 0x88, 0x89, 0 }, - { 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0 }, - { 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0 } - }, - { - { 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0 }, - { 0xaa, 0xab, 0xac, 0xad, 0xae, 0 }, - { 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0 } - }, - { - { 0x8f, 0x90, 0x91, 0x92, 0x93, 0 }, - { 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0 }, - { 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0 } - } - }; - - uint8_t icon_index = current_layer == _MAIN ? 3 : current_layer == _ALPHA ? 1 : 2; - for (int i = 0; i < 3; i++) { - oled_set_cursor(0, i + 1); - oled_write_P(icons[icon_index][i], false); - } - - /* Time */ - oled_set_cursor(6, 0); - // oled_write_P(PSTR("-D48 Custom-\n"), false); - char buf[16]; - sprintf( - buf, - "%02d:%02d:%02d", hours, minutes, seconds - ); - oled_write(buf, false); - - /* Modifiers */ - static const char PROGMEM mods[][2] = { - {0x94, 0x95}, // CTL - {0x96, 0x97}, // ALT - {0x98, 0x99}, // GUI - {0x9a, 0x9b}, // SFT - /* {0x9c, 0x9d}, // EMPTY */ - }; - - char mod_data[13] = "\x9c\x9d\x9c\x9d\x9c\x9d\x9c\x9d \x07\x07\x07\0"; - if (ctrl_pressed) strncpy(mod_data, mods[0], 2); - if (alt_pressed) strncpy(mod_data + 2, mods[1], 2); - if (gui_pressed) strncpy(mod_data + 4, mods[2], 2); - if (shift_pressed) strncpy(mod_data + 6, mods[3], 2); - led_t led_usb_state = host_keyboard_led_state(); - if (led_usb_state.num_lock) mod_data[9] = 'N'; - if (led_usb_state.caps_lock) mod_data[10] = 'C'; - if (led_usb_state.scroll_lock) mod_data[11] = 'S'; - - oled_set_cursor(6, 1); - oled_write(mod_data, false); - - /* Matrix */ - static const char PROGMEM matrix_chars[] = { - 0xb4, // None - 0xb5, // Upper - 0xb6, // Lower - 0xb7 // Both - }; - - for (uint8_t row = 1; row < MATRIX_ROWS; row += 2) { - // Skip first row because it's used by the encoders. - uint16_t bits1 = matrix_get_row(row); - uint16_t bits2 = matrix_get_row(row + 1); - - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - uint8_t matrix_char = matrix_chars[((bits1 & (1 << col)) ? 1 : 0) | ((bits2 & (1 << col)) ? 2 : 0)]; - oled_set_cursor(6 + col, 2 + (row - 1) / 2); - oled_write_char(matrix_char, false); - } - } - - return false; -} -#endif diff --git a/keyboards/handwired/d48/keymaps/anderson/lightmode.c b/keyboards/handwired/d48/keymaps/anderson/lightmode.c deleted file mode 100644 index bc059562144c..000000000000 --- a/keyboards/handwired/d48/keymaps/anderson/lightmode.c +++ /dev/null @@ -1,44 +0,0 @@ -#include "lightmode.h" - -#ifdef LIGHTMODE_ENABLE - -/* Light modes switcher */ - -uint8_t light_mode = SMOOTHLED; - -void set_light_mode(light_mode_t value, uint32_t color) { - light_mode = value; - if (light_mode == SMOOTHLED) { - smoothled_set(color); - } else { - dmc12_start(color, true); - } -} - -void process_light_mode(void) { - if (light_mode == SMOOTHLED) { - smoothled_process(); - } else { - dmc12_process(); - } -} - -void update_light_mode(uint32_t color) { - if (light_mode == SMOOTHLED) { - smoothled_set(color); - } else { - dmc12_start(color, false); - } -} - -void next_light_mode(uint32_t color) { - light_mode = (light_mode + 1) % LIGHT_MODE_SIZE; - set_light_mode(light_mode, color); -} - -void matrix_scan_kb(void) { - process_light_mode(); - matrix_scan_user(); -} - -#endif diff --git a/keyboards/handwired/d48/keymaps/anderson/lightmode.h b/keyboards/handwired/d48/keymaps/anderson/lightmode.h deleted file mode 100644 index 0c81e476bbe1..000000000000 --- a/keyboards/handwired/d48/keymaps/anderson/lightmode.h +++ /dev/null @@ -1,12 +0,0 @@ -#include "smoothled.h" -#include "dmc12.h" -#include "quantum.h" - -/* Light modes */ -enum light_mode_enum { SMOOTHLED, DMC12, LIGHT_MODE_SIZE }; -typedef enum light_mode_enum light_mode_t; - -void set_light_mode(light_mode_t value, uint32_t color); -void process_light_mode(void); -void update_light_mode(uint32_t color); -void next_light_mode(uint32_t color); diff --git a/keyboards/handwired/d48/keymaps/anderson/rules.mk b/keyboards/handwired/d48/keymaps/anderson/rules.mk deleted file mode 100644 index e925b9a89f7d..000000000000 --- a/keyboards/handwired/d48/keymaps/anderson/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -OPT_DEFS += -DLIGHTMODE_ENABLE -SRC += smoothled.c dmc12.c seq.c lightmode.c diff --git a/keyboards/handwired/dactyl/rules.mk b/keyboards/handwired/dactyl/rules.mk index 830812f79ade..bffd901b04db 100644 --- a/keyboards/handwired/dactyl/rules.mk +++ b/keyboards/handwired/dactyl/rules.mk @@ -14,5 +14,5 @@ SWAP_HANDS_ENABLE = yes # Allow swapping hands of keyboard RGBLIGHT_ENABLE = no # project specific files -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes SRC += matrix.c diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/config.h deleted file mode 100644 index a597d848e2e6..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/config.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -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 - -/* Select hand configuration */ - -#define MASTER_LEFT -// #define MASTER_RIGHT -// #define EE_HANDS diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c deleted file mode 100644 index 9d613042c962..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c +++ /dev/null @@ -1,60 +0,0 @@ -#include QMK_KEYBOARD_H - -#include "ibnuda.h" - -#define TAB KC_TAB -#define GUI KC_LGUI -#define MIN KC_MINS -#define SLS KC_SLSH -#define CTL KC_LCTL -#define DEL KC_DEL -#define QUE KC_QUES -#define ___ KC_NO - -// clang-format off -#define LAYOUT_dm_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ - KTA, KTB, KTC, KTD, KTE, KTF \ - ) \ - LAYOUT_wrapper( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ - TAB, KTA, KTF, SLS, \ - KTB, KTC, KTD, KTE, \ - CTL, DEL, QUE, CTL, \ - ___, ___, ___, ___ \ - ) - -#define LAYOUT_dm_base_wrapper(...) LAYOUT_dm_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_BASE] = LAYOUT_dm_base_wrapper( - LUP, LUR, LUM, LUI, LUII, RUII, RUI, RUM, RUR, RUP, - SHLP, CTLR, ALLM, LMI, GULII, GURII, RMI, ALRM, CTRR, SHRP, - LLP, LLR, LLM, LLI, LLII, RLII, RLI, RLM, RLR, RLP, - CT_ESC, LW_E, SF_BSPC, AL_ENT, RS_SPC, TRAISE -), - -[_RAISE] = LAYOUT_dm_base_wrapper( - KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR, KC_BSLS,KC_7, KC_8, KC_9, KC_ASTR , - KC_HASH,CT_LEFT,AL_DOWN,KC_RGHT,KC_DLR, GU_EQL, KC_4, AL_FIVE,CT_SIX, SH_ZERO , - KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS , - _______,ADDDD ,_______, _______,RS_SPC, _______ -), -[_LOWER] = LAYOUT_dm_base_wrapper( - KC_ESC, KC_QUES,KC_UNDS,KC_F1, KC_F2, KC_F3, KC_F4, KC_MINS,KC_SLSH,KC_BSPC , - KC_LSFT,KC_PSCR,KC_PGUP,KC_F5, KC_F6, KC_F7, KC_F8, KC_HOME,KC_LALT,KC_ENT , - KC_CAPS,KC_SCRL,KC_PGDN,KC_F9, KC_F10, KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH , - _______,_______,_______, _______,ADDDD, _______ -), -[_ADJUST] = LAYOUT_dm_base_wrapper( - _______,EXPLR, KC_UP, PRVTAB, PRVWIN, NXTWIN, NXTTAB, _______,_______,LCKGUI, - TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB, DNTAB, KC_ENT, KC_LGUI,_______,CALDL, - _______,CLSGUI, _______,CONPST, QK_BOOT, _______,_______,_______,_______,_______, - _______,_______,_______, _______,_______,_______ -),}; -// clang-format on - diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 3860a696c886..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT( \ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ - XXX, XXX, XXX, XXX, \ - K32, K33, K36, K37, \ - K34, XXX, XXX, K35, \ - XXX, XXX, XXX, XXX \ -) diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/4x6/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index f50033a04632..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2022 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ - XXX, XXX, XXX, XXX, \ - K32, K33, K36, K37, \ - K34, XXX, XXX, K35, \ - XXX, XXX, XXX, XXX \ -) diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/README.md b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/README.md deleted file mode 100644 index b7f7cbf93800..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/README.md +++ /dev/null @@ -1,8 +0,0 @@ -#### compile with - -`make handwired/dactyl_manuform/4x6:scheikled` - - -#### flash with - -`qmk flash -kb handwired/dactyl_manuform/4x6 -km scheikled` diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/config.h b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/config.h deleted file mode 100644 index a68c21b21596..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/config.h +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2021 Paul Maria Scheikl (@ScheiklP) -// SPDX-License-Identifier: GPL-2.0-or-later - - -#pragma once - -#define USE_I2C - -#define SPLIT_HAND_PIN F6 - -// WS2812 RGB LED strip input and number of LEDs -#undef WS2812_DI_PIN -#undef RGBLED_NUM -#define WS2812_DI_PIN F4 -#define RGBLED_NUM 52 -#define RGBLED_SPLIT {26, 26} -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_SNAKE - -// Amoeba royale PCBs (https://github.com/mtl/keyboard-pcbs/tree/master/amoeba-royale) use row to column layout (current can flow from row pin to column pin). -#undef DIODE_DIRECTION -#define DIODE_DIRECTION ROW2COL - -#define DEBOUNCE 5 - -#define AUTO_SHIFT_TIMEOUT 100 -#define NO_AUTO_SHIFT_SPECIAL -#define NO_AUTO_SHIFT_NUMERIC - -// require two taps for a TT layer switch (default 5) -#define TAPPING_TOGGLE 2 - -// Mouse control -// constant mode (velocity) -#define MK_3_SPEED -// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2 - -// Cursor offset per movement (unmodified) -#define MK_C_OFFSET_UNMOD 16 -// Time between cursor movements (unmodified) -#define MK_C_INTERVAL_UNMOD 10 -/* #define MK_C_INTERVAL_UNMOD 16 */ - -// Cursor offset per movement (KC_ACL0) -#define MK_C_OFFSET_0 1 -// Time between cursor movements (KC_ACL0) -#define MK_C_INTERVAL_0 32 - -// Cursor offset per movement (KC_ACL1) -#define MK_C_OFFSET_1 4 -// Time between cursor movements (KC_ACL1) -#define MK_C_INTERVAL_1 16 - -// Cursor offset per movement (KC_ACL2) -#define MK_C_OFFSET_2 20 -/* #define MK_C_OFFSET_2 32 */ -// Time between cursor movements (KC_ACL2) -#define MK_C_INTERVAL_2 16 diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c deleted file mode 100644 index 24f6b35f57dc..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2021 Paul Maria Scheikl (@ScheiklP) -// SPDX-License-Identifier: GPL-2.0-or-later - -/* A K.O,Y layout for the Dactyl Manuform 4x6 Keyboard */ - -#include QMK_KEYBOARD_H -#include "koy_keys_on_quertz_de_latin1.h" - -enum custom_layers { - _1, - _3, - _4, - _7, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_1] = LAYOUT( - KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z , - MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F , - KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT , - KC_LCTL , KC_LGUI , KC_CAPS , TT(_7) , - KC_LALT , KC_SPC , MO(_3) , MO(_4) , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - ), - - [_3] = LAYOUT( - - KC_TAB , N_DOTS , N_USC , N_LSQBR , N_RSQBR , N_CIRC , N_EXKL , N_LT , N_GT , N_EQ , N_AMP , N_ACUT , - KC_TRNS , N_BSLS , N_SLSH , N_LCUBR , N_RCUBR , N_ASTR , N_QUES , N_LPARN , N_RPARN , N_MINS , N_COLN , N_AT , - KC_LSFT , N_HASH , N_DLR , N_PIPE , N_TILD , N_GRAVE , N_PLUS , N_PERC , N_QUOT , N_SING , N_SEMI , KC_RSFT , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , - KC_LALT , KC_SPC , KC_TRNS , KC_TRNS , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - - ), - - [_4] = LAYOUT( - - KC_TAB , KC_PGUP , KC_BSPC , KC_UP , KC_DEL , KC_PGDN , KC_KP_SLASH , KC_7 , KC_8 , KC_9 , KC_KP_MINUS , KC_TRNS , - KC_TRNS , KC_HOME , KC_LEFT , KC_DOWN , KC_RIGHT , KC_END , KC_KP_ASTERISK , KC_4 , KC_5 , KC_6 , KC_KP_PLUS , KC_TRNS , - KC_LSFT , KC_ESC , KC_TAB , KC_INS , KC_ENTER , N_UNDO , KC_KP_ENTER , KC_1 , KC_2 , KC_3 , KC_KP_DOT , KC_RSFT , - KC_TRNS , KC_TRNS , KC_0 , KC_TRNS , - KC_LALT , KC_0 , KC_TRNS , KC_TRNS , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - - ), - - [_7] = LAYOUT( - - KC_TAB , KC_MS_WH_UP , KC_MS_BTN2 , KC_MS_UP , KC_MS_BTN1 , KC_MS_WH_DOWN , KC_TRNS , KC_F7 , KC_F8 , KC_F9 , RGB_HUI , QK_BOOT , - KC_TRNS , KC_MS_ACCEL0 , KC_MS_LEFT , KC_MS_DOWN , KC_MS_RIGHT , KC_TRNS , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , RGB_SAI , RGB_TOG , - KC_LSFT , KC_MS_ACCEL1 , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , RGB_VAI , RGB_MODE_FORWARD , - KC_TRNS , KC_PSCR , KC_F10 , KC_TRNS , - KC_LALT , KC_F10 , KC_TRNS , KC_TRNS , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - - ), -}; diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/rules.mk b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/rules.mk deleted file mode 100644 index 53ce5a31906f..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/rules.mk +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright 2021 Paul Maria Scheikl (@ScheiklP) -# SPDX-License-Identifier: GPL-2.0-or-later - -BOOTLOADER = atmel-dfu -AUTO_SHIFT_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -NKRO_ENABLE = yes -RGBLIGHT_ENABLE = yes -DEBOUNCE_TYPE = asym_eager_defer_pk -USER_NAME := scheiklp diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/README.md b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/README.md deleted file mode 100644 index 18c4d8e78d20..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/README.md +++ /dev/null @@ -1,8 +0,0 @@ -#### compile with - -`make handwired/dactyl_manuform/4x6:scheiklp` - - -#### flash with - -`qmk flash -kb handwired/dactyl_manuform/4x6 -km scheiklp` diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/config.h b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/config.h deleted file mode 100644 index 2db9052799e4..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/config.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2021 Paul Maria Scheikl (@ScheiklP) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - - -#define USE_I2C -#define SPLIT_HAND_PIN F6 - -#undef WS2812_DI_PIN -#undef RGBLED_NUM - -#define DEBOUNCE 5 - -#define AUTO_SHIFT_TIMEOUT 100 -#define NO_AUTO_SHIFT_SPECIAL -#define NO_AUTO_SHIFT_NUMERIC - -// require two taps for a TT layer switch (default 5) -#define TAPPING_TOGGLE 2 - -// Mouse control -// constant mode (velocity) -#define MK_3_SPEED -// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2 - -// Cursor offset per movement (unmodified) -#define MK_C_OFFSET_UNMOD 16 -// Time between cursor movements (unmodified) -#define MK_C_INTERVAL_UNMOD 10 -/* #define MK_C_INTERVAL_UNMOD 16 */ - -// Cursor offset per movement (KC_ACL0) -#define MK_C_OFFSET_0 1 -// Time between cursor movements (KC_ACL0) -#define MK_C_INTERVAL_0 32 - -// Cursor offset per movement (KC_ACL1) -#define MK_C_OFFSET_1 4 -// Time between cursor movements (KC_ACL1) -#define MK_C_INTERVAL_1 16 - -// Cursor offset per movement (KC_ACL2) -#define MK_C_OFFSET_2 20 -/* #define MK_C_OFFSET_2 32 */ -// Time between cursor movements (KC_ACL2) -#define MK_C_INTERVAL_2 16 diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/keymap.c deleted file mode 100644 index 86a34c4f04f6..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/keymap.c +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2021 Paul Maria Scheikl (@ScheiklP) -// SPDX-License-Identifier: GPL-2.0-or-later - -/* A K.O,Y layout for the Dactyl Manuform 4x6 Keyboard */ - -#include QMK_KEYBOARD_H -#include "koy_keys_on_quertz_de_latin1.h" - -enum custom_layers { - _1, - _3, - _4, - _7, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_1] = LAYOUT( - KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z , - MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F , - KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT , - KC_LCTL , KC_LGUI , KC_CAPS , TT(_7) , - KC_LALT , KC_SPC , MO(_3) , MO(_4) , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - ), - - [_3] = LAYOUT( - - KC_TAB , N_DOTS , N_USC , N_LSQBR , N_RSQBR , N_CIRC , N_EXKL , N_LT , N_GT , N_EQ , N_AMP , N_ACUT , - KC_TRNS , N_BSLS , N_SLSH , N_LCUBR , N_RCUBR , N_ASTR , N_QUES , N_LPARN , N_RPARN , N_MINS , N_COLN , N_AT , - KC_LSFT , N_HASH , N_DLR , N_PIPE , N_TILD , N_GRAVE , N_PLUS , N_PERC , N_QUOT , N_SING , N_SEMI , KC_RSFT , - KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , - KC_LALT , KC_SPC , KC_TRNS , KC_TRNS , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - - ), - - [_4] = LAYOUT( - - KC_TAB , KC_PGUP , KC_BSPC , KC_UP , KC_DEL , KC_PGDN , KC_KP_SLASH , KC_7 , KC_8 , KC_9 , KC_KP_MINUS , KC_TRNS , - KC_TRNS , KC_HOME , KC_LEFT , KC_DOWN , KC_RIGHT , KC_END , KC_KP_ASTERISK , KC_4 , KC_5 , KC_6 , KC_KP_PLUS , KC_TRNS , - KC_LSFT , KC_ESC , KC_TAB , KC_INS , KC_ENTER , N_UNDO , KC_KP_ENTER , KC_1 , KC_2 , KC_3 , KC_KP_DOT , KC_RSFT , - KC_TRNS , KC_TRNS , KC_0 , KC_TRNS , - KC_LALT , KC_0 , KC_TRNS , KC_TRNS , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - - ), - - [_7] = LAYOUT( - - KC_TAB , KC_MS_WH_UP , KC_MS_BTN2 , KC_MS_UP , KC_MS_BTN1 , KC_MS_WH_DOWN , KC_TRNS , KC_F7 , KC_F8 , KC_F9 , KC_TRNS , KC_TRNS , - KC_TRNS , KC_MS_ACCEL0 , KC_MS_LEFT , KC_MS_DOWN , KC_MS_RIGHT , KC_TRNS , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , KC_TRNS , KC_TRNS , - KC_LSFT , KC_MS_ACCEL1 , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , KC_TRNS , KC_TRNS , - KC_TRNS , KC_PSCR , KC_F10 , KC_TRNS , - KC_LALT , KC_F10 , KC_TRNS , KC_TRNS , - N_COPY , N_CUT , KC_ESC , KC_ENTER , - N_PASTE , N_UNDO , KC_BSPC , KC_DEL - - ), - -}; diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk deleted file mode 100644 index db873a752254..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheiklp/rules.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2021 Paul Maria Scheikl (@ScheiklP) -# SPDX-License-Identifier: GPL-2.0-or-later - -BOOTLOADER = atmel-dfu -AUTO_SHIFT_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -NKRO_ENABLE = yes -DEBOUNCE_TYPE = asym_eager_defer_pk diff --git a/keyboards/handwired/dactyl_manuform/4x6_4_3/info.json b/keyboards/handwired/dactyl_manuform/4x6_4_3/info.json new file mode 100644 index 000000000000..60830dbf80af --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/4x6_4_3/info.json @@ -0,0 +1,111 @@ +{ + "keyboard_name": "Dactyl-Manuform (4x6 + 4 and 3 for thumbs)", + "manufacturer": "joshreve", + "url": "https://github.com/joshreve/dactyl-keyboard", + "maintainer": "rek", + "usb": { + "vid": "0x444D", + "pid": "0x3536", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false + }, + "ws2812": { + "pin": "D3" + }, + "matrix_pins": { + "cols": ["D4", "C6", "D7", "E6", "B4", "B5"], + "rows": ["F6", "F7", "B1", "B3", "B2", "B6"] + }, + "diode_direction": "COL2ROW", + "split": { + "enabled": true, + "soft_serial_pin": "D0" + }, + "development_board": "promicro", + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + {"matrix": [6, 4], "x": 15, "y": 0}, + {"matrix": [6, 5], "x": 16, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [7, 0], "x": 11, "y": 1}, + {"matrix": [7, 1], "x": 12, "y": 1}, + {"matrix": [7, 2], "x": 13, "y": 1}, + {"matrix": [7, 3], "x": 14, "y": 1}, + {"matrix": [7, 4], "x": 15, "y": 1}, + {"matrix": [7, 5], "x": 16, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [8, 0], "x": 11, "y": 2}, + {"matrix": [8, 1], "x": 12, "y": 2}, + {"matrix": [8, 2], "x": 13, "y": 2}, + {"matrix": [8, 3], "x": 14, "y": 2}, + {"matrix": [8, 4], "x": 15, "y": 2}, + {"matrix": [8, 5], "x": 16, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [9, 0], "x": 11, "y": 3}, + {"matrix": [9, 1], "x": 12, "y": 3}, + {"matrix": [9, 2], "x": 13, "y": 3}, + {"matrix": [9, 3], "x": 14, "y": 3}, + {"matrix": [9, 4], "x": 15, "y": 3}, + {"matrix": [9, 5], "x": 16, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + + {"matrix": [10, 2], "x": 11, "y": 4}, + {"matrix": [10, 3], "x": 12, "y": 4}, + {"matrix": [10, 4], "x": 13, "y": 4}, + {"matrix": [10, 5], "x": 14, "y": 4}, + + {"matrix": [5, 3], "x": 3, "y": 5}, + {"matrix": [5, 4], "x": 4, "y": 5}, + {"matrix": [5, 5], "x": 5, "y": 5}, + + {"matrix": [11, 0], "x": 14, "y": 5}, + {"matrix": [11, 1], "x": 15, "y": 5}, + {"matrix": [11, 2], "x": 16, "y": 5} + ] + } + } +} diff --git a/keyboards/handwired/dactyl_manuform/4x6_4_3/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/4x6_4_3/keymaps/default/config.h new file mode 100644 index 000000000000..4d83c191f3c1 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/4x6_4_3/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define MASTER_LEFT +//#define MASTER_RIGHT + +//#define EE_HANDS diff --git a/keyboards/handwired/dactyl_manuform/4x6_4_3/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x6_4_3/keymaps/default/keymap.c new file mode 100644 index 000000000000..d8fe94a59bfd --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/4x6_4_3/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +// Copyright 2023 Adam Tombleson (@rekarnar) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + +enum layer_names { + _BASE, + _RAISE, + _LOWER +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, + KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT, + KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_BSLS, + KC_LCTL , KC_TAB , KC_LSFT, KC_LALT, KC_COMMA,KC_DOT , KC_LBRC , KC_RBRC , + LOWER, KC_SPC , KC_BSPC, RAISE , KC_ENT , KC_DEL + ), + + [_LOWER] = LAYOUT( + _______ , KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_DEL, + QK_BOOT , _______, _______, _______, _______, _______, _______, _______ , _______ , _______ , KC_TILD , KC_PLUS, + _______ , KC_HOME, KC_PGUP, KC_PGDN, KC_END , _______, _______, KC_LEFT , KC_UP , KC_DOWN , KC_RGHT , KC_PIPE, + _______ , _______, _______, _______, _______, _______, _______, _______ , _______ , _______ , KC_EQL , KC_UNDS, + _______ , _______, _______, _______, KC_TILD, _______ , KC_LPRN , KC_RPRN , + _______, KC_LGUI, LALT(KC_PSCR), C(S(KC_LEFT)), KC_GRAVE, C(S(KC_RIGHT)) + + ), + + [_RAISE] = LAYOUT( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + _______ , _______,_______ , _______, _______, _______, _______, _______ , _______ , _______ , _______ , _______, + _______ , _______,_______ , _______, _______, _______, _______, KC_HOME , KC_PGUP , KC_PGDN , KC_END , _______, + _______ , _______,_______ , _______, _______, _______, _______, _______ , _______ , _______ , _______ , _______, + _______ , _______,_______ , _______, _______, _______ , _______ , LALT(KC_TAB), + KC_VOLD, KC_MUTE, KC_VOLU, _______, _______ , _______ + ) +}; diff --git a/keyboards/handwired/dactyl_manuform/4x6_4_3/readme.md b/keyboards/handwired/dactyl_manuform/4x6_4_3/readme.md new file mode 100644 index 000000000000..c3574c52bb8f --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/4x6_4_3/readme.md @@ -0,0 +1,9 @@ +# Dactyl-Manuform (4x6 + 4 and 3 for thumbs) + +This is a 4x6 manuform with a 4 key bottom row and 3 key thumb clusters. + +The result is a 62 key layout. + +## Description + +* Keyboard Maintainer: https://github.com/joshreve/dactyl-keyboard diff --git a/keyboards/handwired/dactyl_manuform/4x6_4_3/rules.mk b/keyboards/handwired/dactyl_manuform/4x6_4_3/rules.mk new file mode 100644 index 000000000000..3bbd2614291a --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/4x6_4_3/rules.mk @@ -0,0 +1 @@ +# File intentionally blank diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 9532d1f67c6b..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku -// generated -*- buffer-read-only: t -*- - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ -K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ -K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\ -K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\ -N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\ -)\ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ - XXX, XXX, XXX, XXX, \ - K32, K33, K34, K35, K36, K37, \ - XXX, XXX, XXX, XXX \ -) diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index 7c5717a0fee0..000000000000 --- a/keyboards/handwired/dactyl_manuform/4x6_5/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku -// generated -*- buffer-read-only: t -*- - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h deleted file mode 100644 index 9ee1c3e3cb66..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/config.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#pragma once - -#define EE_HANDS - -#undef TAPPING_TERM -#define TAPPING_TERM 200 diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c deleted file mode 100644 index 326eded64002..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include QMK_KEYBOARD_H -#include "333fred.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [BASE] = LAYOUT_5x6( - 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT), - KC_F4, KC_F5, TG(CODEFLOW), KC_EQL, - KC_LALT, KC_BSPC, KC_SPC, OSL(VIM), - TD(TD_COPY_PASTE), TD(TD_SYM_VIM), KC_ENT, KC_RGUI, - KC_LCTL, KC_DEL, KC_UP, KC_DOWN - ), - - [CODEFLOW] = LAYOUT_5x6( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_F7, KC_F8, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______ - ), - - [SYMB] = LAYOUT_5x6( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_7, KC_8, KC_9, _______, KC_F12, - _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, _______, KC_4, KC_5, KC_6, _______, _______, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, KC_1, KC_2, KC_3, _______, _______, - KC_F7, KC_F8, KC_0, KC_ENT, - _______, _______, KC_MPLY, KC_MNXT, - _______, _______, KC_MPRV, _______, - _______, _______, KC_VOLU, KC_VOLD - ), - - [VIM] = LAYOUT_5x6( - _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, - _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, - _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______ - ), -}; - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - tap_dance_process_keycode(keycode); - return !try_handle_macro(keycode, record); -} diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk deleted file mode 100644 index 5ad63b02b703..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -KEY_LOCK_ENABLE = yes -CONSOLE_ENABLE = no -LTO_ENABLE = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index a213d43d3940..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -#define LAYOUT_miryoku(\ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT_5x6( \ -XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \ - XXX, XXX, XXX, XXX, \ - K32, K33, K36, K37, \ - K34, XXX, XXX, K35, \ - XXX, XXX, XXX, XXX \ -) diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/config.h deleted file mode 100644 index 7eaeceb44ad3..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/config.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright 2012 Jun Wako - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - - -#pragma once - -#define USE_I2C -// #define MASTER_LEFT -// #define MASTER_RIGHT -#define EE_HANDS -// Rows are doubled-up -// #define DEBOUNCE 5 -#define TAPPING_TOGGLE 3 -#define ONESHOT_TAP_TOGGLE 3 -#define PERMISSIVE_HOLD -#define TAPPING_TERM 300 -#ifdef RGBLED_NUM -# undef RGBLED_NUM -#endif -#define RGBLED_NUM 54 -#define RGBLIGHT_LIMIT_VAL 200 -#define RGBLIGHT_EFFECT_BREATHING -#define RGBLIGHT_EFFECT_RAINBOW_MOOD -#define RGBLIGHT_EFFECT_RAINBOW_SWIRL -#define RGBLIGHT_EFFECT_SNAKE -#define RGBLIGHT_EFFECT_KNIGHT -#define RGBLIGHT_EFFECT_CHRISTMAS -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLIGHT_EFFECT_RGB_TEST -#define RGBLIGHT_EFFECT_ALTERNATING -#define RGBLIGHT_EFFECT_TWINKLE -// #define RGBLIGHT_LED_MAP { 11,10,9,8,7,6,5,4,3,2,1,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 } -#define RGBLIGHT_SPLIT 27 diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/keymap.c deleted file mode 100644 index 83b47f3ca919..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/keymap.c +++ /dev/null @@ -1,61 +0,0 @@ -/* A standard layout for the Dactyl Manuform 5x6 Keyboard */ - -#include QMK_KEYBOARD_H -#include "rishka.h" - -enum layers { - BASE, // default layer - WIN, // Switch keys that are needed in windows - SYMB, // symbols - MDIA // media keys -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [BASE] = LAYOUT_5x6_wrapper( - KC_EQL , ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, KC_MINS, - KC_ESC , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSLS, - KC_F1 , _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, KC_QUOT, - OS_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, OS_RSFT, - KC_LEFT,KC_RGHT, KC_UP, KC_DOWN, - KC_BSPC, KC_SPC, KC_TAB, KC_ENT, - KC_LGUI, MO(SYMB), MO(SYMB), TT(MDIA), - KC_DEL, KC_GRV, TT(WIN), KC_LALT - ), - [WIN] = LAYOUT_5x6_wrapper( - - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _________________QWERTY_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, _______, - KC_LCTL, _______, _______, _______, - _______, _______, _______, _______ - ), - - [SYMB] = LAYOUT_5x6_wrapper( - KC_F12 , ______________________F_L__________________, ______________________F_R__________________, KC_F11, - _______, _________________SYMBOL_L1_________________, _________________SYMBOL_R1_________________, KC_NUM, - _______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______, - _______, _________________SYMBOL_L3_________________, _________________SYMBOL_R3_________________, _______, - _______, _______, KC_P0 , KC_PDOT, - _______, _______, _______, _______, - QK_BOOT, _______, _______, _______, - RGB_TOG, _______, _______, _______ - ), - [MDIA] = LAYOUT_5x6_wrapper( - - RGB_MOD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_M_SN, RGB_HUD, _______, KC_MS_U, _______, KC_WH_U, _______, _______, KC_WH_U, _______, _______, _______, - RGB_VAI, RGB_SAI, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, MOUSE_L, KC_WH_D, MOUSE_R, _______, _______, - RGB_VAD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, - KC_BTN1, KC_BTN2, _______, _______, - KC_BTN3, KC_BTN4, _______, _______, - KC_BTN5, _______, _______, _______ - - ), -}; - - diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/rules.mk deleted file mode 100644 index 7084862d136c..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/rules.mk +++ /dev/null @@ -1,3 +0,0 @@ -BOOTLOADER=qmk-dfu -RGBLIGHT_ENABLE = yes - diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/README.md b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/README.md deleted file mode 100644 index 81a8004f7bd9..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/README.md +++ /dev/null @@ -1,8 +0,0 @@ -#### compile with - -`make handwired/dactyl_manuform/5x6:scheiklp` - - -#### flash with - -`qmk flash -kb handwired/dactyl_manuform/5x6 -km scheiklp` diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/config.h deleted file mode 100644 index 613d8ae47fb9..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/config.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2021 Paul Maria Scheikl (@ScheiklP) -// SPDX-License-Identifier: GPL-2.0-or-later - - -#pragma once - - -#define USE_I2C - -/* #define MASTER_LEFT */ - /* #define MASTER_RIGHT */ -#define EE_HANDS -// Rows are doubled-up - -#define AUTO_SHIFT_TIMEOUT 125 -#define NO_AUTO_SHIFT_SPECIAL -#define NO_AUTO_SHIFT_NUMERIC - -// require two taps for a TT layer switch (default 5) -#define TAPPING_TOGGLE 2 - -// Mouse control -// constant mode (velocity) -#define MK_3_SPEED -// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2 - -// Cursor offset per movement (unmodified) -#define MK_C_OFFSET_UNMOD 16 -// Time between cursor movements (unmodified) -#define MK_C_INTERVAL_UNMOD 10 -/* #define MK_C_INTERVAL_UNMOD 16 */ - -// Cursor offset per movement (KC_ACL0) -#define MK_C_OFFSET_0 1 -// Time between cursor movements (KC_ACL0) -#define MK_C_INTERVAL_0 32 - -// Cursor offset per movement (KC_ACL1) -#define MK_C_OFFSET_1 4 -// Time between cursor movements (KC_ACL1) -#define MK_C_INTERVAL_1 16 - -// Cursor offset per movement (KC_ACL2) -#define MK_C_OFFSET_2 20 -/* #define MK_C_OFFSET_2 32 */ -// Time between cursor movements (KC_ACL2) -#define MK_C_INTERVAL_2 16 diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c deleted file mode 100644 index 1f9102e82918..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2021 Paul Maria Scheikl (@ScheiklP) -// SPDX-License-Identifier: GPL-2.0-or-later - -/* A K.O,Y layout for the Dactyl Manuform 5x6 Keyboard */ - -#include QMK_KEYBOARD_H -#include "koy_keys_on_quertz_de_latin1.h" - - -enum custom_layers { - _1, - _3, - _4, - _7, -}; - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_1] = LAYOUT_5x6( - KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC , - KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z , - MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F , - KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT , - KC_LCTL , KC_LGUI , KC_CAPS , TT(_7), - KC_LALT, KC_SPC, MO(_3), MO(_4), - N_COPY, N_CUT, DM_RSTP, KC_ENTER, - N_PASTE, N_UNDO, DM_REC1, DM_PLY1 - ), - - [_3] = LAYOUT_5x6( - - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC, - KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, N_ACUT, - KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT, - KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_LALT,KC_SPC, KC_TRNS,KC_TRNS, - N_COPY, N_CUT, DM_RSTP, KC_ENTER, - N_PASTE, N_UNDO, DM_REC1, DM_PLY1 - - ), - - [_4] = LAYOUT_5x6( - - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC, - KC_TAB, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS, - KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS, - KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, - KC_LALT,KC_0, KC_TRNS,KC_TRNS, - N_COPY, N_CUT, DM_RSTP, KC_ENTER, - N_PASTE, N_UNDO, DM_REC1, DM_PLY1 - - ), - - [_7] = LAYOUT_5x6( - - KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, - KC_TAB, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_LSFT, KC_MS_ACCEL1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_PSCR, KC_TRNS, KC_TRNS, - KC_LALT,KC_0, KC_TRNS,KC_TRNS, - N_COPY, N_CUT, DM_RSTP, KC_ENTER, - N_PASTE, N_UNDO, DM_REC1, DM_PLY1 - - ), - -}; diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/rules.mk deleted file mode 100644 index a0b983c7aba0..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/rules.mk +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright 2021 Paul Maria Scheikl (@ScheiklP) -# SPDX-License-Identifier: GPL-2.0-or-later - -AUTO_SHIFT_ENABLE = yes -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -NKRO_ENABLE = yes -BOOTLOADER = atmel-dfu -DYNAMIC_MACRO_ENABLE = yes - diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/config.h deleted file mode 100644 index af5842e602e8..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/config.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2022 Ulrich Spörlein (@uqs) -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define RGBLED_NUM 12 -#define RGBLED_SPLIT {6,6} -#define RGBLIGHT_LIMIT_VAL 127 - -#define EE_HANDS diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/keymap.c deleted file mode 100644 index 620994fc379d..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/keymap.c +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2022 Ulrich Spörlein (@uqs) -// SPDX-License-Identifier: GPL-2.0-or-later -// vi:et sw=4 cc=5,15,25,35,45,55,65: - -#include "uqs.h" - -/* - * My custom layout macro that allows for easy diff(1) operations between - * various keyboards. It probably doesn't make sense to you. - */ -#define LAYOUT_uqs( \ - L00, L01, L02, L03, L04, L05, \ - L10, L11, L12, L13, L14, L15, \ - L20, L21, L22, L23, L24, L25, \ - L30, L31, L32, L33, L34, L35, \ - L42, L43, \ - L44, L45, L54, \ - L55, L52, L53, \ - R00, R01, R02, R03, R04, R05, \ - R10, R11, R12, R13, R14, R15, \ - R20, R21, R22, R23, R24, R25, \ - R30, R31, R32, R33, R34, R35, \ - R42, R43, \ - R51, R40, R41, \ - R50, R52, R53 \ -) \ -LAYOUT_5x6( \ - L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ - L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \ - L42, L43, R42, R43, \ - L44, L45, R40, R41, \ - L54, L55, R50, R51, \ - L52, L53, R52, R53 \ -) - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [L_QWER] = LAYOUT_uqs( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, - KC_LBRC, KC_RBRC, - /*thumb*/ LT_EXTD_ESC, KC_SPC, LT_MOUSE_ALT_SHIFT_INS, - /*aux*/ QK_LEAD, OSM_GUI, KC_LALT, - KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, - KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV), - KC_MINS, KC_EQL, - /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC, - /*aux*/ KC_RALT, KC_APP, QK_LEAD - ), - - [L_WASD] = LAYOUT_uqs( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, - KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R, - KC_G, KC_LSFT, KC_A, KC_S, KC_D, KC_F, - KC_B, KC_GRV, KC_Z, KC_X, KC_C, KC_V, - KC_LBRC, KC_RBRC, - /*thumb*/ KC_LCTL, KC_SPC, KC_R, - /*aux*/ A(KC_M), KC_LGUI, KC_LALT, - KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV), - KC_MINS, KC_EQL, - /*thumb*/ DF(L_COLM), KC_ENT, KC_BSPC, - /*aux*/ KC_F5, KC_RALT, KC_APP - ), - - [L_COLM] = LAYOUT_uqs( - KC_NO, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_NO, - KC_BTN2, KC_Q, KC_W, KC_F, KC_P, KC_B, - KC_BTN1, KC_G_A, KC_A_R, KC_S_S, KC_C_T, KC_G, - KC_BTN3, KC_Z, KC_X, KC_C, KC_D, KC_V, - MS_WHUP, MS_WHDN, - /*thumb*/ LT_EXTD_ESC, SFT_T(KC_SPC), LT(L_MOUSE, KC_TAB), - /*aux*/ QK_LEAD, OSM_GUI, KC_LALT, - KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_NO, KC_NO, - KC_J, KC_L, KC_U, KC_Y, KC_QUOT, KC_NO, - KC_M, KC_C_N, KC_S_E, KC_A_I, KC_G_O, KC_NO, - KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_NO, - KC_NO, KC_NO, - /*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC, - /*aux*/ QK_LEAD, KC_RALT, KC_APP - ), - - // Updated with inspiration from https://forum.colemak.com/topic/2014-extend-extra-extreme/ - // I like the AltGr trick from https://stevep99.github.io/seniply/ and should probably incorporate some stuff from it. - [L_EXTD] = LAYOUT_uqs( - _______, _______, _______, _______, _______, _______, - _______, KC_BTN1, KC_SCTAB, KC_PGUP, KC_CTAB, QK_LEAD, - _______, OSM_GUI, OSM_ALT, OSM_SFT, OSM_CTL, KC_RALT, - _______, ALT_TAB, MS_WHUP, MS_WHDN, KC_PGDN, INS_HARD, - _______, _______, - /*thumb*/ _______, _______, _______, - /*aux*/ _______, _______, _______, - /* ^^^^ can't be used */ - _______, _______, _______, _______, _______, _______, - KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_NO, - KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_NO, - WIN_LEFT, WIN_DN, WIN_UP, WIN_RGHT, KC_PSTE, KC_NO, // KC_PSTE works in XTerm to emulate middle-click - _______, _______, - /*thumb*/ _______, _______, KC_BSPC, - /*aux*/ _______, _______, _______ - /* ^^^^ use these */ - ), - - // TODO: maybe swap # with ;, that way I can roll :w or :wq which I need - // often ... probably better to add a combo? - [L_NUM] = LAYOUT_uqs( - _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, - _______, KC_SCLN, KC_COLN, KC_LCBR, KC_LPRN, KC_LBRC, - _______, KC_CIRC, KC_AMPR, KC_RCBR, KC_RPRN, KC_RBRC, - KC_GRV, KC_TILDE, - /*thumb*/ KC_ESC, KC_SPC, KC_0, - /*aux*/ _______, _______, _______, - /* ^^^^ use these */ - KC_NUM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_EQUAL, KC_7, KC_8, KC_9, KC_KP_PLUS,_______, - KC_KP_ASTERISK,KC_4,KC_5, KC_6, MINS_UNDSCR,_______, - KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH,KC_KP_ENTER, // Enter here, because thumb is occupied - KC_0, KC_KP_DOT, - /*thumb*/ _______, _______, _______, - /*aux*/ _______, _______, _______ - /* ^^^^ can't be used */ - ), - - [L_FUNC] = LAYOUT_uqs( - _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - _______, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, DF(L_WASD), - _______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, DF(L_QWER), - _______, KC_NO, KC_NO, KC_NO, KC_NO, DF(L_COLM), - KC_NO, KC_NO, - /*thumb*/ _______, _______, _______, - /*aux*/ _______, _______, _______, - /* ^^^^ use these */ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, - KC_SCRL, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO, - KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, KC_NO, - KC_NO, KC_NO, - /*thumb*/ _______, _______, _______, - /*aux*/ _______, _______, _______ - /* ^^^^ can't be used */ - ), - - [L_MOUSE] = LAYOUT_uqs( - _______, _______, _______, _______, _______, _______, - _______, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_VOLU, - _______, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_VOLD, - _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, - KC_NO, KC_NO, - /*thumb*/ _______, _______, _______, - /*aux*/ _______, _______, _______, - /* ^^^^ can't be used */ - _______, _______, _______, _______, _______, _______, - _______, _______, KC_MS_UP, MS_WHUP, _______, _______, - MS_WHLEFT,KC_MS_L, KC_MS_D, KC_MS_R, MS_WHRGHT,_______, - _______, MS_WHDN, KC_BTN3, KC_BTN4, KC_BTN5, _______, - KC_NO, KC_NO, - /*thumb*/ KC_NO, KC_BTN1, KC_BTN2, - /*aux*/ _______, _______, _______ - /* use these ^^^^ */ - ), -}; diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/rules.mk deleted file mode 100644 index 2cd3745fa1c2..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/uqs/rules.mk +++ /dev/null @@ -1 +0,0 @@ -#VIA_ENABLE = yes # doesn't fit with 7 layers :/ diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/config.h new file mode 100644 index 000000000000..eab719a5e286 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/config.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x8A, 0x86, 0x65, 0x9D, 0x13, 0xE1, 0xCB, 0x81} + +#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 1 } + +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/keymap.c new file mode 100644 index 000000000000..337f332c5d97 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/keymap.c @@ -0,0 +1,49 @@ +// Copyright 2023 QMK Community +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY, + _LOWER, + _RAISE, +}; + +#define RAISE MO(_RAISE) +#define LOWER MO(_LOWER) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT_5x6( + KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_BSPC, + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS, + KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, + KC_LCTL, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLS, + KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, + RAISE,KC_SPC, KC_ENT, LOWER, + KC_TAB,KC_HOME, KC_END, KC_DEL, + KC_BSPC, KC_GRV, KC_LGUI, KC_LALT + ), + + [_LOWER] = LAYOUT_5x6( + KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, + _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, + _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, + _______,KC_PSCR, _______, KC_P0, + _______,_______, _______,_______, + _______,_______, _______,_______, + _______,_______, _______,_______ + + ), + + [_RAISE] = LAYOUT_5x6( + KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , + _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, + _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, + _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, + _______,_______, KC_EQL ,_______, + _______,_______, _______,_______, + _______,_______, _______,_______, + _______,_______, _______,_______ + ) +}; diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/rules.mk b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/rules.mk new file mode 100644 index 000000000000..2b78ab26af33 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/rules.mk @@ -0,0 +1,7 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +LTO_ENABLE = yes + +COMBO_ENABLE = no +TAP_DANCE_ENABLE = no diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/vial.json b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/vial.json new file mode 100644 index 000000000000..49a3d1e63f72 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/vial/vial.json @@ -0,0 +1,30 @@ +{ + "lighting": "none", + "matrix": {"rows": 12, "cols": 6}, + "layouts": { + "keymap": [ + ["0,0","0,1","0,2","0,3","0,4","0,5"], + ["1,0","1,1","1,2","1,3","1,4","1,5"], + ["2,0","2,1","2,2","2,3","2,4","2,5"], + ["3,0","3,1","3,2","3,3","3,4","3,5"], + + [{"x": 12, "y": -4}, + "6,0","6,1","6,2","6,3","6,4","6,5"], + [{"x": 12}, "7,0","7,1","7,2","7,3","7,4","7,5"], + [{"x": 12}, "8,0","8,1","8,2","8,3","8,4","8,5"], + [{"x": 12}, "9,0","9,1","9,2","9,3","9,4","9,5"], + + + [{"x": 2 }, "4,2", "4,3"], + [{"x": 4 }, "4,4", "4,5"], + [{"x": 6 }, "5,4", "5,5"], + [{"x": 6 }, "5,2", "5,3"], + + [{"x": 14, "y": -4 }, + "10,2", "10,3"], + [{"x": 12 }, "10,0", "10,1"], + [{"x": 10 }, "11,0", "11,1"], + [{"x": 10 }, "11,2", "11,3"] + ] + } +} diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/config.h b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/config.h deleted file mode 100644 index 68ea3f1933d9..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/config.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#pragma once - -#define EE_HANDS - -#undef TAPPING_TERM -#define TAPPING_TERM 200 - -#define OLED_DISPLAY_128X64 - -#define ENCODERS_PAD_A { F4 } -#define ENCODERS_PAD_B { F5 } - -#undef SOFT_SERIAL_PIN -#define SOFT_SERIAL_PIN D2 - -#undef OLED_TIMEOUT -#define OLED_TIMEOUT 240000 diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c deleted file mode 100644 index 139cd1f5106c..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c +++ /dev/null @@ -1,581 +0,0 @@ -/* - Copyright (c) 2020 Fred Silberberg - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -#include QMK_KEYBOARD_H -#include "333fred.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [BASE] = LAYOUT_5x6_5( - 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT), - KC_F4, KC_LALT, KC_BSPC, TD(TD_SYM_VIM), KC_DEL, KC_UP, KC_ENT, KC_SPC, OSL(VIM), KC_EQL, - KC_LGUI, TD(TD_COPY_PASTE), KC_DOWN, OSM(MOD_RCTL) - ), - - [SYMB] = LAYOUT_5x6_5( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_7, KC_8, KC_9, _______, KC_F12, - _______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, _______, KC_4, KC_5, KC_6, _______, _______, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, KC_1, KC_2, KC_3, _______, _______, - KC_F7, _______, _______, _______, _______, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, KC_ENT, - _______, _______, KC_VOLD, _______ - ), - - [VIM] = LAYOUT_5x6_5( - _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, - _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, - _______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______,_______, _______, TG(GAME), _______, _______, _______, _______, - _______, _______, _______, _______ - ), - - [GAME] = LAYOUT_5x6_5( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_G, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_B, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - QK_LOCK, KC_LALT, KC_SPC, KC_ENT, KC_GRV, TG(GAME), _______, _______, _______, KC_EQL, - KC_BSPC, KC_F5, KC_F6, _______ - ), -}; - -uint32_t quote_timer; - -void keyboard_post_init_user(void) { quote_timer = 0; } - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - tap_dance_process_keycode(keycode); - return !try_handle_macro(keycode, record); -} - -static void render_logo(void) { - static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00}; - - oled_write_P(qmk_logo, false); -} - -void render_led_status(void) { - led_t led_state = host_keyboard_led_state(); - if (led_state.num_lock || led_state.caps_lock || led_state.scroll_lock) { - oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); - oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); - } -} - -void render_mods_status(void) { - uint8_t mods = get_mods() | get_oneshot_mods(); - bool ctrl = mods & MOD_MASK_CTRL; - bool shft = mods & MOD_MASK_SHIFT; - bool alt = mods & MOD_MASK_ALT; - bool gui = mods & MOD_MASK_GUI; - - oled_write_P(ctrl ? PSTR("CTRL ") : PSTR(" "), false); - oled_write_P(shft ? PSTR("SHIFT ") : PSTR(" "), false); - oled_write_P(alt ? PSTR("ALT ") : PSTR(" "), false); - oled_write_ln_P(gui ? PSTR("GUI ") : PSTR(" "), false); -} - -#define MAX_LINES 8 - -void write_quote(const char* data, const uint8_t num_lines) { - uint8_t current_line = 0; - for (; current_line < (MAX_LINES - num_lines) / 2; current_line++) { - oled_advance_page(true); - } - - oled_write_ln_P(data, false); - - for (current_line += num_lines; current_line < MAX_LINES; current_line++) - { - oled_advance_page(true); - } -} - -bool oled_task_user(void) { - if (is_keyboard_master()) { - render_logo(); - oled_advance_page(/* clearPageRemainder */ true); - oled_write_P(PSTR("Layer: "), false); - switch (get_highest_layer(layer_state)) { - case BASE: - oled_write_ln_P(PSTR("Base"), false); - break; - case SYMB: - oled_write_ln_P(PSTR("Symbols"), false); - break; - case VIM: - oled_write_ln_P(PSTR("Vim"), false); - break; - case GAME: - oled_write_ln_P(PSTR("Gaming"), false); - break; - } - - render_mods_status(); - render_led_status(); - } else { - if ((quote_timer != 0 && timer_elapsed32(quote_timer) < 300000 /* 5 minutes */) || !is_oled_on()) { - return; - } - - srand(timer_read32()); - int currentQuote = rand() % 63; - quote_timer = timer_read32(); - - // Max character count on my screen is 20 characters per line. - // Quotes are from various fantasy books, mostly either from - // The Stormlight Archive or from The Wheel of Time. - switch (currentQuote) { - case 0: - write_quote(PSTR(" Life before Death \n" - " Strength before \n" - " Weakness \n" - " Journey before \n" - " Destination"), - 5); - break; - case 1: - write_quote(PSTR(" Honor is dead, but \n" - "I'll see what I can \n" - " do."), - 3); - break; - case 2: - write_quote(PSTR(" You cannot have my \n" - " pain!"), - 2); - break; - case 3: - write_quote(PSTR(" Pride doesn't win \n" - " battles"), - 2); - break; - case 4: - write_quote(PSTR(" I have practice \n" - " following fools in \n" - " their reckless \n" - " pursuits."), - 4); - break; - case 5: - write_quote(PSTR(" What is the most \n" - " important step a \n" - " man can take?"), - 3); - break; - case 6: - write_quote(PSTR(" It's the next one. \n" - " Always the next \n" - " step, Dalinar."), - 3); - break; - case 7: - write_quote(PSTR(" NO MATING."), 1); - break; - case 8: - write_quote(PSTR(" Inappropriate? \n" - "Such as... dividing \n" - " by zero?"), - 3); - break; - case 9: - write_quote(PSTR(" I am a stick!"), 1); - break; - case 10: - write_quote(PSTR(" But you could be \n" - " fire!"), - 1); - break; - case 11: - write_quote(PSTR(" Sometimes a \n" - " hyprocrite is \n" - " nothing more than \n" - " than a man in the \n" - "process of changing"), - 5); - break; - case 12: - write_quote(PSTR(" You surrender when \n" - " you are dead. Many \n" - "a man has been given\n" - " less."), - 4); - break; - case 13: - write_quote(PSTR(" Kneel and swear to \n" - " the Lord Dragon,...\n" - " or you will be \n" - " knelt."), - 4); - break; - case 14: - write_quote(PSTR("I'm right, anyway. I\n" - "wish I wasn't, but I\n" - " am. I bloody am."), - 3); - break; - case 15: - write_quote(PSTR(" Death rides on my \n" - " shoulder,. Death \n" - " walks in my \n" - " footsteps. I am \n" - " death."), - 5); - break; - case 16: - write_quote(PSTR(" The Golden Crane \n" - " flies for Tarmon \n" - " Gai'don"), - 3); - break; - case 17: - write_quote(PSTR("You humans are very \n" - " excitable"), - 2); - break; - case 18: - write_quote(PSTR(" Phaw!"), 1); - break; - case 19: - write_quote(PSTR("I may be a fool, but\n" - " I intend to be a \n" - " live fool."), - 3); - break; - case 20: - write_quote(PSTR(" Anyone who claimed \n" - " that old age had \n" - " brought them \n" - "patience was either \n" - " lying or senile."), - 5); - break; - case 21: - write_quote(PSTR("Death is light as a \n" - "feather; duty, heavy\n" - " as a mountain"), - 3); - break; - case 22: - write_quote(PSTR("Dovie'andi se tovya \n" - " sagain."), - 2); - break; - case 23: - write_quote(PSTR(" Carai an Caldazar! \n" - "Carai an Ellisande! \n" - " Al Ellisande!"), - 3); - break; - case 24: - write_quote(PSTR(" Mia dovienya \n" - " nesodhin soende."), - 2); - break; - case 25: - write_quote(PSTR(" The Wheel of Time \n" - "turns, and Ages come\n" - " and pass, leaving \n" - "memories that become\n" - " legend."), - 5); - break; - case 26: - write_quote(PSTR(" Legend fades to \n" - "myth, and even myth \n" - " is long forgotten \n" - " when the Age that \n" - "gave it birth comes \n" - " again."), - 6); - break; - case 27: - write_quote(PSTR(" What is too absurd \n" - " to believe is \n" - "believed because it \n" - "is too absurd to be \n" - " a lie."), - 5); - break; - case 28: - write_quote(PSTR("And you gave me the \n" - " way out! Chew on \n" - "that bitterness for \n" - "lunch, you flaming, \n" - "burning, misbegotten\n" - " liars!"), - 6); - break; - case 29: - write_quote(PSTR(" He was going to \n" - "start having, 'I am \n" - "not a bloody Lord', \n" - " embroidered on his \n" - " coats."), - 5); - break; - case 30: - write_quote(PSTR("All was not lost, of\n" - " course. All was \n" - " never lost as long \n" - " as you were alive."), - 4); - break; - case 31: - write_quote(PSTR(" Everything is just \n" - " bloody fine!"), - 2); - break; - case 32: - write_quote(PSTR("The wheel weaves as \n" - " the wheel wills"), - 2); - break; - case 33: - write_quote(PSTR(" Time to toss the \n" - " dice"), - 2); - break; - case 34: - write_quote(PSTR("Always plan for the \n" - " worst, child, that \n" - " way all your \n" - " surprises are \n" - " pleasant ones."), - 5); - break; - case 35: - write_quote(PSTR("'Pessimism, she is a\n" - " fond friend of \n" - "yours, yes?' 'That's\n" - " uncalled for. I \n" - " barely know her. \n" - "Mere acquaintances, \n" - " at best.'"), - 7); - break; - case 36: - write_quote(PSTR(" Do not trouble \n" - "trouble till trouble\n" - " troubles you."), - 3); - break; - case 37: - write_quote(PSTR("If your enemy offers\n" - " you two targets, \n" - " strike at a third."), - 3); - break; - case 38: - write_quote(PSTR("The wind was not the\n" - "beginning. There are\n" - " neither beginnings \n" - " nor endings to the \n" - " turning of the \n" - " Wheel of Time. But \n" - " it was _a_ \n" - " beginning."), - 8); - break; - case 39: - write_quote(PSTR("Bloody flaming ashes"), 1); - break; - case 40: - write_quote(PSTR("Then follow Lord Mat\n" - " whenever he calls \n" - "To dance with Jak O'\n" - " the Shadows."), - 4); - break; - case 41: - write_quote(PSTR(" There are no \n" - " endings, and never \n" - "will be endings, to \n" - " the turning of the \n" - " Wheel of Time. But \n" - " it was an ending."), - 6); - break; - case 42: - write_quote(PSTR(" TAI'SHAR MALKIER!"), 1); - break; - case 43: - write_quote(PSTR("I would not mind you\n" - " in my head, if you \n" - "were not so clearly \n" - " mad."), - 4); - break; - case 44: - write_quote(PSTR(" ILYENA, MY LOVE, \n" - " FORGIVE ME!"), - 2); - break; - case 45: - write_quote(PSTR(" Oh, Light. That's \n" - "impossible! We can't\n" - " use it! Cast it \n" - "away! That is death \n" - " we hold, death and \n" - "betrayal. It is HIM."), - 6); - break; - case 46: - write_quote(PSTR("Nothing ever goes as\n" - " you expect. Expect \n" - " nothing, and you \n" - " will not be \n" - " surprised. Expect \n" - " nothing. Hope for \n" - " nothing. Nothing."), - 7); - break; - case 47: - write_quote(PSTR(" Distant Weeping"), 1); - break; - case 48: - write_quote(PSTR("Are you real? Am I?"), 1); - break; - case 49: - write_quote(PSTR(" I'm just an old \n" - "gleeman, who could I\n" - " possibly be \n" - " dangerous to?"), - 4); - break; - case 50: - write_quote(PSTR(" Mat bloody Cauthon \n" - " is no bloody hero!"), - 2); - break; - case 51: - write_quote(PSTR("You are a coward and\n" - " a tyrant. I'd name \n" - " you Darkfriend as \n" - "well, but I suspect \n" - " that the Dark One \n" - " would perhaps be \n" - " embarrassed to \n" - "associate with you."), - 8); - break; - case 52: - write_quote(PSTR(" I win again, Lews \n" - " Therin."), - 2); - break; - case 53: - write_quote(PSTR("May you always find \n" - " water and shade."), - 2); - break; - case 54: - write_quote(PSTR(" I will never serve \n" - "you, Father of Lies.\n" - "In a thousand lives,\n" - "I never have. I know\n" - " that. I'm sure of \n" - "it. Come. It is time\n" - " to die."), - 7); - break; - case 55: - write_quote(PSTR(" There may be more \n" - "than one way to skin\n" - " a cat, but the cat \n" - "isn't going to like \n" - " any of them."), - 5); - break; - case 56: - write_quote(PSTR("Please see that they\n" - " know, although the \n" - "word Black may brand\n" - "my name forever, my \n" - "soul is Brown. Tell \n" - " them..."), - 6); - break; - case 57: - write_quote(PSTR(" 'Your soul is of a \n" - "pure white, Verin,' \n" - "Egwene said softly. \n" - " 'Like the Light \n" - " itself.'"), - 5); - break; - case 58: - write_quote(PSTR(" Asha'man, Kill!"), 1); - break; - case 59: - write_quote(PSTR(" Let the lord of \n" - " chaos rule."), - 2); - break; - case 60: - write_quote(PSTR(" There's always \n" - " another secret."), - 2); - break; - case 61: - write_quote(PSTR(" You see the great \n" - "thing about madness \n" - "is that it's all in \n" - " your head."), - 4); - break; - case 62: - write_quote(PSTR(" In one Age, called \n" - " the Third Age by \n" - "some, an Age yet to \n" - " come, an Age long \n" - " past, a wind rose \n" - " above..."), - 6); - break; - } - } - return false; -} - -bool encoder_update_user(uint8_t index, bool clockwise) { - // On the left, control the volume. On the right, scroll the page - if (index == 0) { - if (clockwise) { - tap_code(KC_WH_U); - } else { - tap_code(KC_WH_D); - } - } else { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - return true; -} diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk deleted file mode 100644 index c83f96e10280..000000000000 --- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -KEY_LOCK_ENABLE = yes -CONSOLE_ENABLE = no -OLED_ENABLE = yes -ENCODER_ENABLE = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/config.h b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/config.h new file mode 100644 index 000000000000..384a098335c6 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/config.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#pragma once + +#define VIAL_KEYBOARD_UID {0x40, 0xFB, 0x4C, 0x76, 0x76, 0x13, 0x7F, 0xB2} + +// Vial unlock +#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 1 } + +// Vial features +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 +#define VIAL_KEY_OVERRIDE_ENTRIES 8 +#define VIAL_TAP_DANCE_ENTRIES 8 +#define VIAL_COMBO_ENTRIES 8 diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/keymap.c new file mode 100644 index 000000000000..20feaec51bf0 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/keymap.c @@ -0,0 +1,24 @@ +#include QMK_KEYBOARD_H + +#define __ _______ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_5x6_5( + KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, + 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE, + 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_LSFT , KC_LCTL , KC_LGUI, KC_DEL , KC_ENT, KC_SPC, __ , __ , + KC_LALT , MO(1) , KC_BSPC, KC_ESC ), + + [1] = LAYOUT_5x6_5( + __, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, __, + __, __, KC_7, KC_8, KC_9, KC_PSCR, KC_HOME, KC_PGUP, KC_UP, KC_PGDN, KC_END, __, + __, KC_0, KC_4, KC_5, KC_6, KC_DEL, KC_BSPC, KC_LEFT, KC_ENTER, KC_RGHT, __, __, + __, KC_0, KC_1, KC_2, KC_3, __, __, KC_TAB, KC_DOWN, __, __, __, + + QK_BOOT, __ , __ , __ , __ , __ , __ , __, KC_F11, KC_F12, + __ , __ , __ , __ ), + }; diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/rules.mk new file mode 100644 index 000000000000..c8469507465c --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/rules.mk @@ -0,0 +1,13 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes + +LTO_ENABLE = yes + +QMK_SETTINGS = no # Vial tab +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control + +DYNAMIC_MACRO_ENABLE = no +KEY_OVERRIDE_ENABLE = no +TAP_DANCE_ENABLE = no +COMBO_ENABLE = yes diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/vial.json b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/vial.json new file mode 100644 index 000000000000..7c248a76ba48 --- /dev/null +++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/vial/vial.json @@ -0,0 +1,98 @@ +{ + "lighting": "none", + "matrix": {"rows": 12, "cols": 6}, + "layouts": { + "keymap": [ + [{"x": 3.5}, "0,3", {"x": 7.5}, "6,2"], + [ + {"y": -0.875, "x": 2.5}, + "0,2", + {"x": 1}, + "0,4", + {"x": 5.5}, + "6,1", + {"x": 1}, + "6,3" + ], + [{"y": -0.875, "x": 5.5}, "0,5", {"x": 3.5}, "6,0"], + [ + {"y": -0.875, "w": 1.5}, + "0,0", + "0,1", + {"x": 11.5}, + "6,4", + {"w": 1.5}, + "6,5" + ], + [{"y": -0.375, "x": 3.5}, "1,3", {"x": 7.5}, "7,2"], + [ + {"y": -0.875, "x": 2.5}, + "1,2", + {"x": 1}, + "1,4", + {"x": 5.5}, + "7,1", + {"x": 1}, + "7,3" + ], + [{"y": -0.875, "x": 5.5}, "1,5", {"x": 3.5}, "7,0"], + [ + {"y": -0.875, "w": 1.5}, + "1,0", + "1,1", + {"x": 11.5}, + "7,4", + {"w": 1.5}, + "7,5" + ], + [{"y": -0.375, "x": 3.5}, "2,3", {"x": 7.5}, "8,2"], + [ + {"y": -0.875, "x": 2.5}, + "2,2", + {"x": 1}, + "2,4", + {"x": 5.5}, + "8,1", + {"x": 1}, + "8,3" + ], + [{"y": -0.875, "x": 5.5}, "2,5", {"x": 3.5}, "8,0"], + [ + {"y": -0.875, "w": 1.5}, + "2,0", + "2,1", + {"x": 11.5}, + "8,4", + {"w": 1.5}, + "8,5" + ], + [{"y": -0.375, "x": 3.5}, "3,3", {"x": 7.5}, "9,2"], + [ + {"y": -0.875, "x": 2.5}, + "3,2", + {"x": 1}, + "3,4", + {"x": 5.5}, + "9,1", + {"x": 1}, + "9,3" + ], + [{"y": -0.875, "x": 5.5}, "3,5", {"x": 3.5}, "9,0"], + [ + {"y": -0.875, "w": 1.5}, + "3,0", + "3,1", + {"x": 11.5}, + "9,4", + {"w": 1.5}, + "9,5" + ], + [{"y": -0.375, "x": 3.5}, "4,3", {"x": 7.5}, "10,2"], + [{"y": -0.875, "x": 2.5}, "4,2", {"x": 9.5}, "10,3"], + [{"r": 30, "rx": 5, "ry": 4.5}, "4,4", "5,5", "5,3"], + [{"x": 1}, "5,4", "5,2"], + [{"r": -30, "rx": 11.5, "x": -3}, "11,2", "11,0", "10,1"], + [{"x": -3}, "11,3", "11,1"] + ] + } +} diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h b/keyboards/handwired/dactyl_manuform/dmote/62key/config.h deleted file mode 100644 index e8bbf91d0800..000000000000 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -// WS2812 RGB LED, normally used to indicate keyboard state: -#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 -#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1 diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json deleted file mode 100644 index 8e27a68f16e2..000000000000 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "keyboard_name": "DMOTE (62-key)", - "manufacturer": "tshort", - "url": "", - "maintainer": "veikman", - "processor": "atmega32u4", - "bootloader": "atmel-dfu", - "usb": { - "vid": "0x444D", - "pid": "0x3632", - "device_version": "0.0.1" - }, - "rgblight": { - "led_count": 6, - "split_count": [3, 3], - "animations": { - "knight": true, - "christmas": true - } - }, - "ws2812": { - "pin": "D1" - }, - "matrix_pins": { - "cols": ["D4", "C6", "D7", "E6", "B4", "B5"], - "rows": ["F6", "F7", "B1", "B3", "B2", "B6"] - }, - "diode_direction": "COL2ROW", - "split": { - "enabled": true, - "soft_serial_pin": "D0" - }, - "layouts": { - "LAYOUT_62key": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1}, - {"matrix": [1, 1], "x": 1, "y": 1}, - {"matrix": [1, 2], "x": 2, "y": 1}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [1, 5], "x": 5, "y": 1}, - - {"matrix": [2, 0], "x": 0, "y": 2}, - {"matrix": [2, 1], "x": 1, "y": 2}, - {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [2, 5], "x": 5, "y": 2}, - - {"matrix": [3, 0], "x": 0, "y": 3}, - {"matrix": [3, 1], "x": 1, "y": 3}, - {"matrix": [3, 2], "x": 2, "y": 3}, - {"matrix": [3, 3], "x": 3, "y": 3}, - {"matrix": [3, 4], "x": 4, "y": 3}, - - {"matrix": [4, 3], "x": 3, "y": 4}, - - {"matrix": [4, 2], "x": 4.5, "y": 4.5}, - {"matrix": [3, 5], "x": 5.5, "y": 4.5}, - - {"matrix": [5, 2], "x": 4, "y": 5.5}, - {"matrix": [4, 4], "x": 5, "y": 5.5}, - {"matrix": [4, 5], "x": 6, "y": 5.5}, - - {"matrix": [5, 4], "x": 4.5, "y": 6.5}, - {"matrix": [5, 5], "x": 5.5, "y": 6.5}, - - {"matrix": [6, 5], "x": 9, "y": 0}, - {"matrix": [6, 4], "x": 10, "y": 0}, - {"matrix": [6, 3], "x": 11, "y": 0}, - {"matrix": [6, 2], "x": 12, "y": 0}, - {"matrix": [6, 1], "x": 13, "y": 0}, - {"matrix": [6, 0], "x": 14, "y": 0}, - - {"matrix": [7, 5], "x": 9, "y": 1}, - {"matrix": [7, 4], "x": 10, "y": 1}, - {"matrix": [7, 3], "x": 11, "y": 1}, - {"matrix": [7, 2], "x": 12, "y": 1}, - {"matrix": [7, 1], "x": 13, "y": 1}, - {"matrix": [7, 0], "x": 14, "y": 1}, - - {"matrix": [8, 5], "x": 9, "y": 2}, - {"matrix": [8, 4], "x": 10, "y": 2}, - {"matrix": [8, 3], "x": 11, "y": 2}, - {"matrix": [8, 2], "x": 12, "y": 2}, - {"matrix": [8, 1], "x": 13, "y": 2}, - {"matrix": [8, 0], "x": 14, "y": 2}, - - {"matrix": [9, 4], "x": 10, "y": 3}, - {"matrix": [9, 3], "x": 11, "y": 3}, - {"matrix": [9, 2], "x": 12, "y": 3}, - {"matrix": [9, 1], "x": 13, "y": 3}, - {"matrix": [9, 0], "x": 14, "y": 3}, - - {"matrix": [9, 5], "x": 8.5, "y": 4.5}, - {"matrix": [10, 2], "x": 9.5, "y": 4.5}, - - {"matrix": [10, 3], "x": 11, "y": 4}, - - {"matrix": [10, 5], "x": 8, "y": 5.5}, - {"matrix": [10, 4], "x": 9, "y": 5.5}, - {"matrix": [11, 2], "x": 10, "y": 5.5}, - - {"matrix": [11, 5], "x": 8.5, "y": 6.5}, - {"matrix": [11, 4], "x": 9.5, "y": 6.5} - ] - } - } -} diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/config.h b/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/config.h deleted file mode 100644 index 180926204492..000000000000 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/config.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#define EE_HANDS diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/keymap.c deleted file mode 100644 index ce2c8a370258..000000000000 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/keymaps/default/keymap.c +++ /dev/null @@ -1,141 +0,0 @@ -#include QMK_KEYBOARD_H - -#include "keymap_colemak.h" -#include "sendstring_colemak.h" - -// Automatic Layer ID: -enum layer_names { - _QWERTY, // OS-side Colemak. Default. - _COLEMAK, // Keyboard-side Colemak. Portability, emergency. - _NUMERIC -}; - -// Shorthand: -#define LAYER_N MO(_NUMERIC) -#define LAYER_C TG(_COLEMAK) -#define PASTE LSFT(KC_INS) // Terminal-compatible paste. -#define SLQ RALT(KC_9) // Single left-side quotation mark (in Colemak). -#define SRQ RALT(KC_0) -#define EMDASH RALT(LSFT(KC_MINUS)) // Em dash character (in Colemak). -#define BK_LCTL CTL_T(KC_LEFT_BRACKET) -#define BK_RCTL RCTL_T(KC_RIGHT_BRACKET) -// TODO: Mod-tap ALT with a curvilinear brace. -// https://github.com/qmk/qmk_firmware/pull/2055 - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_62key( - KC_VOLD, KC_VOLU, CM_W, CM_F, CM_P, CM_G, - KC_TAB, CM_Q, CM_R, CM_S, CM_T, CM_D, - KC_BSPC, CM_A, CM_X, CM_C, CM_V, CM_B, - SLQ, CM_Z, KC_HOME, KC_PGUP, KC_END, - KC_PGDN, KC_ENT, KC_SPC, - SC_LSPO, KC_LGUI, KC_MINS, - BK_LCTL, KC_LALT, - - CM_J, CM_L, CM_U, CM_Y, KC_MPLY, KC_MUTE, - CM_H, CM_N, CM_E, CM_I, CM_SCLN, KC_BSLS, - CM_K, CM_M, KC_COMM, KC_DOT, CM_O, KC_QUOT, - KC_LEFT, KC_UP, KC_RGHT, KC_SLSH, SRQ, - KC_DEL, KC_ESC, KC_DOWN, - KC_EQL, LAYER_N, SC_RSPC, - KC_RALT, BK_RCTL - ), - - [_COLEMAK] = LAYOUT_62key( - _______, _______, KC_W, KC_F, KC_P, KC_G, - _______, KC_Q, KC_R, KC_S, KC_T, KC_D, - _______, KC_A, KC_X, KC_C, KC_V, KC_B, - _______, KC_Z, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, - - KC_J, KC_L, KC_U, KC_Y, _______, _______, - KC_H, KC_N, KC_E, KC_I, KC_SCLN, _______, - KC_K, KC_M, _______, _______, KC_O, _______, - _______, _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______ - ), - - [_NUMERIC] = LAYOUT_62key( - LAYER_C, KC_INS, KC_F2, KC_F3, KC_F4, KC_F5, - KC_F12, KC_F1, KC_2, KC_3, KC_4, KC_5, - _______, KC_1, KC_AT, KC_HASH, KC_DLR, KC_PERC, - KC_GRV, KC_EXLM, KC_BTN1, KC_WH_U, KC_BTN2, - KC_WH_D, RGB_MOD, _______, - _______, _______, EMDASH, - _______, _______, - - KC_F6, KC_F7, KC_F8, KC_F9, QK_BOOT, KC_WAKE, // * - KC_6, KC_7, KC_8, KC_9, KC_F10, KC_F11, - KC_CIRC, KC_AMPR, KC_ASTR, KC_APP, KC_0, PASTE, - KC_MS_L, KC_MS_U, KC_MS_R, KC_PSCR, RGB_TOG, - KC_ACL1, KC_ACL2, KC_MS_D, - KC_ACL0, _______, _______, - _______, _______ - ) -}; - -// *KC_WAKE: Used in place of KC_SLEP because X11 with i3 on prerelease -// Debian 10 was seeing duplicate keypress and release events for sleep -// (regardless of i3 binding), which ruined the function. - - -/* -The rest is all about lighting control. -The logic here represents a pretty poor compromise solution between the -following concerns: - -- Feedback on active modifiers. -- Flexibility: Both sides of the keyboard are interchangeable. -- Regular QMK RBG lighting modes. Specifically, Knight and Xmas. - -Currently, the last item suffers, because the first two seem to require -calling a function that implements the RGBLIGHT_SPLIT_SET_CHANGE_HSVS macro, -which most of the rgblight.c functions do not. In particular, functions that -target an individual LED do not do so correctly across the wire, so instead -we let HSV vary without ever targeting LEDs. -*/ - -// How long to wait between animation steps for "Knight" animation: -const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {255, 200, 100}; - -bool _initialized = false; -bool _leds_dirty = false; - -void modal_leds(void) { - uint8_t mods = get_mods(); - uint16_t hue = 355; // Rough match to printed case. - uint8_t saturation = 255; - uint8_t value = 0; - if (layer_state_is(_COLEMAK)) { hue -= 50; saturation -= 20; value += 20; } - if (layer_state_is(_NUMERIC)) { value += 30; } - if (mods & MOD_MASK_SHIFT) { saturation -= 20; value += 30; } - if (mods & MOD_MASK_ALT) { hue -= 100; saturation -= 20; value += 30; } - if (mods & MOD_MASK_CTRL) { hue -= 200; saturation -= 20; value += 30; } - // rgblight_sethsv_eeprom_helper is not a great API function but it does - // affect both halves of a split keyboard. - rgblight_sethsv_eeprom_helper(hue, saturation, value, false); - _leds_dirty = false; -} - -void matrix_scan_user(void) { - if (_leds_dirty) { modal_leds(); } -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - if (!_initialized) { - // Static lighting is amenable to customization. - rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); - _initialized = true; - } - if (keycode == KC_WAKE) { - // Turn the lights off before going to sleep. - rgblight_sethsv_eeprom_helper(0, 0, 0, false); - } else { - _leds_dirty = true; - } - return true; -} diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/rules.mk b/keyboards/handwired/dactyl_manuform/dmote/62key/rules.mk deleted file mode 100644 index a6a97a5c8e36..000000000000 --- a/keyboards/handwired/dactyl_manuform/dmote/62key/rules.mk +++ /dev/null @@ -1,5 +0,0 @@ -# Build-process overrides for the DMOTE. -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -RGBLIGHT_ENABLE = yes # Needed for the C linker with lighting control. -COMMAND_ENABLE = no # Not a good combo with Space Cadet shift. diff --git a/keyboards/handwired/dactyl_manuform/dmote/readme.md b/keyboards/handwired/dactyl_manuform/dmote/readme.md deleted file mode 100644 index 7aff2df52441..000000000000 --- a/keyboards/handwired/dactyl_manuform/dmote/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -DMOTE -====== - -The “Dactyl-ManuForm: Opposable Thumb Edition” is made from a Clojure -application maintained [here](https://github.com/veikman/dactyl-keyboard). -The application supports varied physical layouts and therefore matrices. -This physical variability is its main feature; its QMK firmware is ordinary. - -Consult the general [Dactyl-ManuForm readme](../readme.md). - -## The `62key` layout - -This folder represents the default build target of the Clojure application -as of its version 0.4.0. The default keymap for this layout has a QWERTY base -layer but is intended for running Colemak on the OS side with the i3 tiling -window manager. It’s also got a layer that forces Colemak from the QMK side. diff --git a/keyboards/handwired/dactyl_minidox/info.json b/keyboards/handwired/dactyl_minidox/info.json index a0bb416ce48b..a94f517b52c7 100644 --- a/keyboards/handwired/dactyl_minidox/info.json +++ b/keyboards/handwired/dactyl_minidox/info.json @@ -8,6 +8,14 @@ "pid": "0x3536", "device_version": "0.0.3" }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, "ws2812": { "pin": "D3" }, diff --git a/keyboards/handwired/dactyl_minidox/rules.mk b/keyboards/handwired/dactyl_minidox/rules.mk index e22ac7f3ffcf..6e7633bfe015 100644 --- a/keyboards/handwired/dactyl_minidox/rules.mk +++ b/keyboards/handwired/dactyl_minidox/rules.mk @@ -1,12 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -# AUDIO_ENABLE = yes # Audio output +# This file intentionally left blank diff --git a/keyboards/handwired/dactyl_tracer/info.json b/keyboards/handwired/dactyl_tracer/info.json new file mode 100644 index 000000000000..29e599066687 --- /dev/null +++ b/keyboards/handwired/dactyl_tracer/info.json @@ -0,0 +1,92 @@ +{ + "keyboard_name": "Dactyl Tracer", + "manufacturer": "mjohns", + "url": "https://github.com/mjohns/tracer", + "maintainer": "mjohns", + "usb": { + "vid": "0x444E", + "pid": "0x1307", + "device_version": "1.0.0" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "mousekey": true, + "extrakey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["C6", "D7", "E6", "B4", "B5"], + "rows": ["F7", "B1", "B3", "B2", "B6"] + }, + "diode_direction": "COL2ROW", + "development_board": "promicro", + "split": { + "enabled": true, + "soft_serial_pin": "D0" + }, + "layouts": { + "LAYOUT" : { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + + {"matrix": [5, 0], "x": 9, "y": 0}, + {"matrix": [5, 1], "x": 10, "y": 0}, + {"matrix": [5, 2], "x": 11, "y": 0}, + {"matrix": [5, 3], "x": 12, "y": 0}, + {"matrix": [5, 4], "x": 13, "y": 0.25}, + + {"matrix": [1, 0], "x": 0, "y": 1.5}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + + {"matrix": [6, 0], "x": 9, "y": 1}, + {"matrix": [6, 1], "x": 10, "y": 1}, + {"matrix": [6, 2], "x": 11, "y": 1}, + {"matrix": [6, 3], "x": 12, "y": 1}, + {"matrix": [6, 4], "x": 13, "y": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 2.5}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + + {"matrix": [7, 0], "x": 9, "y": 2}, + {"matrix": [7, 1], "x": 10, "y": 2}, + {"matrix": [7, 2], "x": 11, "y": 2}, + {"matrix": [7, 3], "x": 12, "y": 2}, + {"matrix": [7, 4], "x": 13, "y": 2.5}, + + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + + {"matrix": [3, 4], "x": 5, "y": 3.25}, + + {"matrix": [8, 0], "x": 8, "y": 3.25}, + + {"matrix": [8, 2], "x": 11, "y": 3}, + {"matrix": [8, 3], "x": 12, "y": 3}, + + {"matrix": [4, 2], "x": 3, "y": 4 }, + {"matrix": [3, 3], "x": 4, "y": 4 }, + {"matrix": [4, 4], "x": 5, "y": 4.25}, + + {"matrix": [9, 0], "x": 8, "y": 4.25}, + {"matrix": [8, 1], "x": 9, "y": 4}, + {"matrix": [9, 2], "x": 10, "y": 4}, + + {"matrix": [4, 3], "x": 4.5, "y": 5.25}, + + {"matrix": [9, 1], "x": 8.5, "y": 5.25} + ] + } + } +} diff --git a/keyboards/handwired/dactyl_tracer/keymaps/default/config.h b/keyboards/handwired/dactyl_tracer/keymaps/default/config.h new file mode 100644 index 000000000000..0cb73d6a454f --- /dev/null +++ b/keyboards/handwired/dactyl_tracer/keymaps/default/config.h @@ -0,0 +1,23 @@ +// Copyright 2022 mjohns +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* Enables This makes it easier for fast typists to use dual-function keys */ +#define PERMISSIVE_HOLD + +/* mouse config */ +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_TIME_TO_MAX 60 +#define MOUSEKEY_MAX_SPEED 7 +#define MOUSEKEY_WHEEL_DELAY 0 + +#define TAPPING_TERM 200 + +#define MASTER_RIGHT diff --git a/keyboards/handwired/dactyl_tracer/keymaps/default/keymap.c b/keyboards/handwired/dactyl_tracer/keymaps/default/keymap.c new file mode 100644 index 000000000000..0fa218b9307a --- /dev/null +++ b/keyboards/handwired/dactyl_tracer/keymaps/default/keymap.c @@ -0,0 +1,60 @@ +// Copyright 2022 mjohns +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum custom_layers { + _BASE, + _RAISE, + _LOWER, + _SYS, +}; + +#define MG_A LGUI_T(KC_A) +#define MA_S LALT_T(KC_S) +#define MC_D LCTL_T(KC_D) +#define MS_F LSFT_T(KC_F) +#define MS_J RSFT_T(KC_J) +#define MC_K RCTL_T(KC_K) +#define MA_L LALT_T(KC_L) +#define MG_SCLN RGUI_T(KC_SCLN) +#define APP_N A(KC_TAB) +#define APP_P LSA(KC_TAB) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + MG_A, MA_S, MC_D, MS_F, KC_G, KC_H, MS_J, MC_K, MA_L, MG_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, + KC_LEFT, KC_RGHT, KC_HOME, KC_END, KC_UP, KC_DOWN, + KC_TAB, KC_SPC, KC_DEL, KC_BSPC, KC_ENT, KC_ESC, + MO(1), MO(2) + ), + + [_RAISE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_LBRC, KC_RBRC, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, + KC_PIPE, KC_GRV, KC_BSLS, KC_LPRN, KC_LCBR, KC_RCBR, KC_RPRN, KC_SLSH, KC_QUES, KC_TILD, + KC_MINS, KC_PLUS, KC_NO, KC_LALT, KC_EQL, KC_UNDS, + KC_NO, KC_NO, KC_NO, KC_RCTL, KC_RSFT, KC_RGUI, + _______, MO(3) + ), + + [_LOWER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_INS, KC_PAUS, KC_PGUP, KC_PSCR, KC_MUTE, KC_VOLU, KC_MNXT, KC_MPRV, KC_F12, + KC_SCRL, KC_NO, KC_NO, KC_PGDN, KC_NO, KC_NO, KC_VOLD, KC_MPLY, KC_MSTP, KC_NO, + KC_BRID, KC_BRIU, KC_LALT, KC_NO, APP_N, APP_P, + KC_LGUI, KC_LSFT, KC_LCTL, KC_NO, KC_NO, KC_NO, + MO(3), _______ + ), + + [_SYS] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP, 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, + _______, _______ + ), +}; diff --git a/keyboards/handwired/dactyl_tracer/keymaps/via/config.h b/keyboards/handwired/dactyl_tracer/keymaps/via/config.h new file mode 100644 index 000000000000..ab8832c96e4d --- /dev/null +++ b/keyboards/handwired/dactyl_tracer/keymaps/via/config.h @@ -0,0 +1,15 @@ +// Copyright 2022 mjohns +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* mouse config */ +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_TIME_TO_MAX 60 +#define MOUSEKEY_MAX_SPEED 7 +#define MOUSEKEY_WHEEL_DELAY 0 + +#define TAPPING_TERM 200 + +#define MASTER_RIGHT diff --git a/keyboards/handwired/dactyl_tracer/keymaps/via/keymap.c b/keyboards/handwired/dactyl_tracer/keymaps/via/keymap.c new file mode 100644 index 000000000000..0fa218b9307a --- /dev/null +++ b/keyboards/handwired/dactyl_tracer/keymaps/via/keymap.c @@ -0,0 +1,60 @@ +// Copyright 2022 mjohns +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum custom_layers { + _BASE, + _RAISE, + _LOWER, + _SYS, +}; + +#define MG_A LGUI_T(KC_A) +#define MA_S LALT_T(KC_S) +#define MC_D LCTL_T(KC_D) +#define MS_F LSFT_T(KC_F) +#define MS_J RSFT_T(KC_J) +#define MC_K RCTL_T(KC_K) +#define MA_L LALT_T(KC_L) +#define MG_SCLN RGUI_T(KC_SCLN) +#define APP_N A(KC_TAB) +#define APP_P LSA(KC_TAB) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + MG_A, MA_S, MC_D, MS_F, KC_G, KC_H, MS_J, MC_K, MA_L, MG_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_QUOT, + KC_LEFT, KC_RGHT, KC_HOME, KC_END, KC_UP, KC_DOWN, + KC_TAB, KC_SPC, KC_DEL, KC_BSPC, KC_ENT, KC_ESC, + MO(1), MO(2) + ), + + [_RAISE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_LBRC, KC_RBRC, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, + KC_PIPE, KC_GRV, KC_BSLS, KC_LPRN, KC_LCBR, KC_RCBR, KC_RPRN, KC_SLSH, KC_QUES, KC_TILD, + KC_MINS, KC_PLUS, KC_NO, KC_LALT, KC_EQL, KC_UNDS, + KC_NO, KC_NO, KC_NO, KC_RCTL, KC_RSFT, KC_RGUI, + _______, MO(3) + ), + + [_LOWER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_INS, KC_PAUS, KC_PGUP, KC_PSCR, KC_MUTE, KC_VOLU, KC_MNXT, KC_MPRV, KC_F12, + KC_SCRL, KC_NO, KC_NO, KC_PGDN, KC_NO, KC_NO, KC_VOLD, KC_MPLY, KC_MSTP, KC_NO, + KC_BRID, KC_BRIU, KC_LALT, KC_NO, APP_N, APP_P, + KC_LGUI, KC_LSFT, KC_LCTL, KC_NO, KC_NO, KC_NO, + MO(3), _______ + ), + + [_SYS] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP, 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, + _______, _______ + ), +}; diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/via/rules.mk b/keyboards/handwired/dactyl_tracer/keymaps/via/rules.mk similarity index 100% rename from keyboards/kprepublic/bm40hsrgb/keymaps/via/rules.mk rename to keyboards/handwired/dactyl_tracer/keymaps/via/rules.mk diff --git a/keyboards/handwired/dactyl_tracer/readme.md b/keyboards/handwired/dactyl_tracer/readme.md new file mode 100644 index 000000000000..c6e1d80892d8 --- /dev/null +++ b/keyboards/handwired/dactyl_tracer/readme.md @@ -0,0 +1,27 @@ +# Dactyl Tracer + +![DactylTracer](https://i.imgur.com/ReCBppEh.jpeg) + +The Dactyl Tracer is a handwired, split bodied, concave key-well, columnar keyboard. Case design is similar to the [Dactyl CC](/keyboards/handwired/dactyl_cc) though overall design is closer to the [Dactyl ManuForm](/keyboards/handwired/dactyl_manuform/). The `Q` and `P` keys are vertically offset, from `A` and `;` keys respectively, to allow for easier actuation by third/ring finger. + +* Keyboard Maintainer: [Michael Johns](https://github.com/mjohns) +* Hardware Supported: Pro Micro controller, or clone of +* Hardware Availability: [Case Files](https://github.com/mjohns/tracer) + +Make example for this keyboard (after setting up your build environment): + + make handwired/dactyl_tracer:default + +Flashing example for this keyboard: + + make handwired/dactyl_tracer:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/dactyl_tracer/rules.mk b/keyboards/handwired/dactyl_tracer/rules.mk new file mode 100644 index 000000000000..3bbd2614291a --- /dev/null +++ b/keyboards/handwired/dactyl_tracer/rules.mk @@ -0,0 +1 @@ +# File intentionally blank diff --git a/keyboards/handwired/dmote/config.h b/keyboards/handwired/dmote/config.h new file mode 100644 index 000000000000..4a2d46abe546 --- /dev/null +++ b/keyboards/handwired/dmote/config.h @@ -0,0 +1,23 @@ +/* +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 + +// WS2812 RGB LED, normally used to indicate keyboard state: +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 +#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1 diff --git a/keyboards/handwired/dmote/info.json b/keyboards/handwired/dmote/info.json new file mode 100644 index 000000000000..fc52fee11e91 --- /dev/null +++ b/keyboards/handwired/dmote/info.json @@ -0,0 +1,124 @@ +{ + "keyboard_name": "DMOTE", + "manufacturer": "veikman", + "url": "https://github.com/veikman/dactyl-keyboard", + "maintainer": "veikman", + "development_board": "promicro", + "usb": { + "vid": "0x444D", + "pid": "0x3632", + "device_version": "1.0.0" + }, + "features": { + "bootmagic": true, + "console": false, + "command": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 6, + "split_count": [3, 3], + "animations": { + "christmas": true, + "knight": true + } + }, + "ws2812": { + "pin": "D1" + }, + "matrix_pins": { + "cols": ["D4", "C6", "D7", "E6", "B4", "B5"], + "rows": ["F6", "F7", "B1", "B3", "B2", "B6"] + }, + "diode_direction": "COL2ROW", + "split": { + "enabled": true, + "soft_serial_pin": "D0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [6, 5], "x": 9, "y": 0}, + {"matrix": [6, 4], "x": 10, "y": 0}, + {"matrix": [6, 3], "x": 11, "y": 0}, + {"matrix": [6, 2], "x": 12, "y": 0}, + {"matrix": [6, 1], "x": 13, "y": 0}, + {"matrix": [6, 0], "x": 14, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [7, 5], "x": 9, "y": 1}, + {"matrix": [7, 4], "x": 10, "y": 1}, + {"matrix": [7, 3], "x": 11, "y": 1}, + {"matrix": [7, 2], "x": 12, "y": 1}, + {"matrix": [7, 1], "x": 13, "y": 1}, + {"matrix": [7, 0], "x": 14, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [8, 5], "x": 9, "y": 2}, + {"matrix": [8, 4], "x": 10, "y": 2}, + {"matrix": [8, 3], "x": 11, "y": 2}, + {"matrix": [8, 2], "x": 12, "y": 2}, + {"matrix": [8, 1], "x": 13, "y": 2}, + {"matrix": [8, 0], "x": 14, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + + {"matrix": [9, 4], "x": 10, "y": 3}, + {"matrix": [9, 3], "x": 11, "y": 3}, + {"matrix": [9, 2], "x": 12, "y": 3}, + {"matrix": [9, 1], "x": 13, "y": 3}, + {"matrix": [9, 0], "x": 14, "y": 3}, + + {"matrix": [4, 3], "x": 3, "y": 4}, + + {"matrix": [4, 2], "x": 4.5, "y": 4.5}, + {"matrix": [3, 5], "x": 5.5, "y": 4.5}, + + {"matrix": [9, 5], "x": 8.5, "y": 4.5}, + {"matrix": [10, 2], "x": 9.5, "y": 4.5}, + + {"matrix": [10, 3], "x": 11, "y": 4}, + + {"matrix": [5, 2], "x": 4, "y": 5.5}, + {"matrix": [4, 4], "x": 5, "y": 5.5}, + {"matrix": [4, 5], "x": 6, "y": 5.5}, + + {"matrix": [10, 5], "x": 8, "y": 5.5}, + {"matrix": [10, 4], "x": 9, "y": 5.5}, + {"matrix": [11, 2], "x": 10, "y": 5.5}, + + {"matrix": [5, 4], "x": 4.5, "y": 6.5}, + {"matrix": [5, 5], "x": 5.5, "y": 6.5}, + + {"matrix": [11, 5], "x": 8.5, "y": 6.5}, + {"matrix": [11, 4], "x": 9.5, "y": 6.5} + ] + } + } +} diff --git a/keyboards/handwired/dmote/keymaps/default/keymap.c b/keyboards/handwired/dmote/keymaps/default/keymap.c new file mode 100644 index 000000000000..59a5b51f1ba9 --- /dev/null +++ b/keyboards/handwired/dmote/keymaps/default/keymap.c @@ -0,0 +1,134 @@ +/* +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 . +*/ + +#include QMK_KEYBOARD_H + +#include "keymap_colemak.h" +#include "sendstring_colemak.h" + +// Automatic Layer ID: +enum layer_names { + _QWERTY, // OS-side Colemak. Default. + _COLEMAK, // Keyboard-side Colemak. Portability, emergency. + _NUMERIC, +}; + +// Shorthand: +#define LAYER_N MO(_NUMERIC) +#define LAYER_C TG(_COLEMAK) +#define PASTE LSFT(KC_INS) // Terminal-compatible paste. +#define SLQ RALT(KC_9) // Single left-side quotation mark (in Colemak). +#define SRQ RALT(KC_0) +#define EMDASH RALT(LSFT(KC_MINUS)) // Em dash character (in Colemak). +#define BK_LCTL CTL_T(KC_LEFT_BRACKET) +#define BK_RCTL RCTL_T(KC_RIGHT_BRACKET) +// TODO: Mod-tap ALT with a curvilinear brace. +// https://github.com/qmk/qmk_firmware/pull/2055 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + KC_VOLD, KC_VOLU, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, KC_MPLY, KC_MUTE, + KC_TAB, CM_Q, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_SCLN, KC_BSLS, + KC_BSPC, CM_A, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, KC_COMM, KC_DOT, CM_O, KC_QUOT, + SLQ, CM_Z, KC_HOME, KC_PGUP, KC_END, KC_LEFT, KC_UP, KC_RGHT, KC_SLSH, SRQ, + KC_PGDN, KC_ENT, KC_SPC, KC_DEL, KC_ESC, KC_DOWN, + SC_LSPO, KC_LGUI, KC_MINS, KC_EQL, LAYER_N, SC_RSPC, + BK_LCTL, KC_LALT, KC_RALT, BK_RCTL + ), + + [_COLEMAK] = LAYOUT( + _______, _______, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, _______, _______, + _______, KC_Q, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_SCLN, _______, + _______, KC_A, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, _______, _______, KC_O, _______, + _______, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______ + ), + + [_NUMERIC] = LAYOUT( + LAYER_C, KC_INS, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, QK_BOOT, KC_WAKE, // * + KC_F12, KC_F1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_F10, KC_F11, + _______, KC_1, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_APP, KC_0, PASTE, + KC_GRV, KC_EXLM, KC_BTN1, KC_WH_U, KC_BTN2, KC_MS_L, KC_MS_U, KC_MS_R, KC_PSCR, RGB_TOG, + KC_WH_D, RGB_MOD, _______, KC_ACL1, KC_ACL2, KC_MS_D, + _______, _______, EMDASH, KC_ACL0, _______, _______, + _______, _______, _______, _______ + ) +}; + +// *KC_WAKE: Used in place of KC_SLEP because X11 with i3 on prerelease +// Debian 10 was seeing duplicate keypress and release events for sleep +// (regardless of i3 binding), which ruined the function. + +/* +The rest is all about lighting control. +The logic here represents a pretty poor compromise solution between the +following concerns: + +- Feedback on active modifiers. +- Flexibility: Both sides of the keyboard are interchangeable. +- Regular QMK RBG lighting modes. Specifically, Knight and Xmas. + +Currently, the last item suffers, because the first two seem to require +calling a function that implements the RGBLIGHT_SPLIT_SET_CHANGE_HSVS macro, +which most of the rgblight.c functions do not. In particular, functions that +target an individual LED do not do so correctly across the wire, so instead +we let HSV vary without ever targeting LEDs. +*/ + +// How long to wait between animation steps for "Knight" animation: +const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {255, 200, 100}; + +bool _initialized = false; +bool _leds_dirty = false; + +void modal_leds(void) { + uint8_t mods = get_mods(); + uint16_t hue = 355; // Rough match to printed case. + uint8_t saturation = 255; + uint8_t value = 0; + if (layer_state_is(_COLEMAK)) { hue -= 50; saturation -= 20; value += 20; } + if (layer_state_is(_NUMERIC)) { value += 30; } + if (mods & MOD_MASK_SHIFT) { saturation -= 20; value += 30; } + if (mods & MOD_MASK_ALT) { hue -= 100; saturation -= 20; value += 30; } + if (mods & MOD_MASK_CTRL) { hue -= 200; saturation -= 20; value += 30; } + // rgblight_sethsv_eeprom_helper is not a great API function but it does + // affect both halves of a split keyboard. + rgblight_sethsv_eeprom_helper(hue, saturation, value, false); + _leds_dirty = false; +} + +void matrix_scan_user(void) { + if (_leds_dirty) { modal_leds(); } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!_initialized) { + // Static lighting is amenable to customization. + rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT); + _initialized = true; + } + if (keycode == KC_WAKE) { + // Turn the lights off before going to sleep. + rgblight_sethsv_eeprom_helper(0, 0, 0, false); + } else { + _leds_dirty = true; + } + return true; +} diff --git a/keyboards/handwired/dmote/readme.md b/keyboards/handwired/dmote/readme.md new file mode 100644 index 000000000000..9b6ff3a9f439 --- /dev/null +++ b/keyboards/handwired/dmote/readme.md @@ -0,0 +1,29 @@ +# DMOTE + +![DMOTE](https://i.imgur.com/JYkB6LBh.jpg) + +The “**D**actyl-**M**anuForm: **O**pposable **T**humb **E**dition” is made from a Clojure +application maintained [here](https://github.com/veikman/dactyl-keyboard). +The application supports varied physical layouts and therefore matrices. +This physical variability is its main feature; its QMK firmware is ordinary. + +* Keyboard Maintainer: [Viktor Eikman](https://github.com/veikman/) +* Hardware Supported: Pro Micro and clones + +Make example for this keyboard (after setting up your build environment): + + make handwired/dmote:default + +Flashing example for this keyboard: + + make handwired/dmote:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/dmote/rules.mk b/keyboards/handwired/dmote/rules.mk new file mode 100644 index 000000000000..876618b9d13a --- /dev/null +++ b/keyboards/handwired/dmote/rules.mk @@ -0,0 +1 @@ +# File is intentionally blank diff --git a/keyboards/handwired/dqz11n1g/rules.mk b/keyboards/handwired/dqz11n1g/rules.mk index 23f6b89cc2a5..220e353ab771 100644 --- a/keyboards/handwired/dqz11n1g/rules.mk +++ b/keyboards/handwired/dqz11n1g/rules.mk @@ -1,7 +1,7 @@ # Keyboard matrix uses shift-registers read via SPI CUSTOM_MATRIX = lite SRC += matrix.c -QUANTUM_LIB_SRC += spi_master.c +SPI_DRIVER_REQUIRED = yes # Build Options # change yes to no to disable diff --git a/keyboards/handwired/dygma/raise/rules.mk b/keyboards/handwired/dygma/raise/rules.mk index 761e07550016..ecf156629aa3 100644 --- a/keyboards/handwired/dygma/raise/rules.mk +++ b/keyboards/handwired/dygma/raise/rules.mk @@ -19,7 +19,7 @@ CUSTOM_MATRIX = lite # alternate usb endpoints. RAW_ENABLE = yes -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes SRC += matrix.c DEFAULT_FOLDER = handwired/dygma/raise/ansi diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk index c310966f1dc3..e226d0b5172c 100644 --- a/keyboards/handwired/frenchdev/rules.mk +++ b/keyboards/handwired/frenchdev/rules.mk @@ -13,5 +13,5 @@ AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # project specific files -SRC = i2c_master.c \ - matrix.c +SRC = matrix.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/handwired/iso85k/info.json b/keyboards/handwired/iso85k/info.json new file mode 100644 index 000000000000..625a356e307b --- /dev/null +++ b/keyboards/handwired/iso85k/info.json @@ -0,0 +1,123 @@ +{ + "manufacturer": "Fredrik A. Kristiansen", + "keyboard_name": "iso85k", + "maintainer": "FredrikAleksander", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true + }, + "matrix_pins": { + "cols": ["A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "C10", "C11", "C12", "B3", "B4", "B5", "B8", "B9"], + "rows": ["C7", "C6", "B15", "B14", "B13", "B12"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0xCAFE", + "vid": "0xD666" + }, + "community_layouts": ["75_iso"], + "layouts": { + "LAYOUT_75_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 14, "y": 0}, + {"matrix": [0, 15], "x": 15, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [1, 12], "x": 12, "y": 1}, + {"matrix": [1, 14], "x": 13, "y": 1, "w": 2}, + {"matrix": [1, 15], "x": 15, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + {"matrix": [2, 12], "x": 12.5, "y": 2}, + {"matrix": [2, 15], "x": 15, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3}, + {"matrix": [3, 2], "x": 2.75, "y": 3}, + {"matrix": [3, 3], "x": 3.75, "y": 3}, + {"matrix": [3, 4], "x": 4.75, "y": 3}, + {"matrix": [3, 5], "x": 5.75, "y": 3}, + {"matrix": [3, 6], "x": 6.75, "y": 3}, + {"matrix": [3, 7], "x": 7.75, "y": 3}, + {"matrix": [3, 8], "x": 8.75, "y": 3}, + {"matrix": [3, 9], "x": 9.75, "y": 3}, + {"matrix": [3, 10], "x": 10.75, "y": 3}, + {"matrix": [3, 11], "x": 11.75, "y": 3}, + {"matrix": [3, 12], "x": 12.75, "y": 3}, + {"matrix": [2, 14], "x": 13.75, "y": 2, "w": 1.25, "h": 2}, + {"matrix": [3, 15], "x": 15, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4}, + {"matrix": [4, 2], "x": 2.25, "y": 4}, + {"matrix": [4, 3], "x": 3.25, "y": 4}, + {"matrix": [4, 4], "x": 4.25, "y": 4}, + {"matrix": [4, 5], "x": 5.25, "y": 4}, + {"matrix": [4, 6], "x": 6.25, "y": 4}, + {"matrix": [4, 7], "x": 7.25, "y": 4}, + {"matrix": [4, 8], "x": 8.25, "y": 4}, + {"matrix": [4, 9], "x": 9.25, "y": 4}, + {"matrix": [4, 10], "x": 10.25, "y": 4}, + {"matrix": [4, 11], "x": 11.25, "y": 4}, + {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75}, + {"matrix": [4, 14], "x": 14, "y": 4}, + {"matrix": [4, 15], "x": 15, "y": 4}, + + {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25}, + {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25}, + {"matrix": [5, 10], "x": 10, "y": 5}, + {"matrix": [5, 11], "x": 11, "y": 5}, + {"matrix": [5, 12], "x": 12, "y": 5}, + {"matrix": [5, 13], "x": 13, "y": 5}, + {"matrix": [5, 14], "x": 14, "y": 5}, + {"matrix": [5, 15], "x": 15, "y": 5} + ] + } + } +} diff --git a/keyboards/handwired/iso85k/keymaps/default/keymap.c b/keyboards/handwired/iso85k/keymaps/default/keymap.c new file mode 100644 index 000000000000..aaba9c1ea1e2 --- /dev/null +++ b/keyboards/handwired/iso85k/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +// Copyright 2023 Fredrik A. Kristiansen (fredrikaxk@gmail.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _BL, + _FL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BL] = LAYOUT_75_iso( + 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_PAUS, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + 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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FL] = LAYOUT_75_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NUM, KC_SCRL, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/iso85k/keymaps/via/keymap.c b/keyboards/handwired/iso85k/keymaps/via/keymap.c new file mode 100644 index 000000000000..3d64364cc698 --- /dev/null +++ b/keyboards/handwired/iso85k/keymaps/via/keymap.c @@ -0,0 +1,28 @@ +// Copyright 2023 Fredrik A. Kristiansen (fredrikaxk@gmail.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layers { + _BL, + _FL +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BL] = LAYOUT_75_iso( + 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_PAUS, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + 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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [_FL] = LAYOUT_75_iso( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NUM, KC_SCRL, KC_INS, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/iso85k/keymaps/via/rules.mk b/keyboards/handwired/iso85k/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/iso85k/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/iso85k/readme.md b/keyboards/handwired/iso85k/readme.md new file mode 100644 index 000000000000..89e3d60d2ae8 --- /dev/null +++ b/keyboards/handwired/iso85k/readme.md @@ -0,0 +1,25 @@ +# iso85k + +*A 85-key ISO keyboard* + +* Keyboard Maintainer: [Fredrik A. Kristiansen](https://github.com/FredrikAleksander) +* Hardware Supported: Custom PCB using STM32F072 +* Hardware Availability: PCB gerbers available upon request (fredrikaxk@gmail.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/iso85k:via + +Flashing example for this keyboard: + + make handwired/iso85k:via:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB, while shorting the pins marked BOOT0 +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/iso85k/rules.mk b/keyboards/handwired/iso85k/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/iso85k/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/jankrp2040dactyl/config.h b/keyboards/handwired/jankrp2040dactyl/config.h new file mode 100644 index 000000000000..0cabd353361b --- /dev/null +++ b/keyboards/handwired/jankrp2040dactyl/config.h @@ -0,0 +1,5 @@ +// Copyright 2023 Ethan Perry (@wheres-perry) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define GRAVE_ESC_SHIFT_OVERRIDE \ No newline at end of file diff --git a/keyboards/handwired/jankrp2040dactyl/info.json b/keyboards/handwired/jankrp2040dactyl/info.json new file mode 100644 index 000000000000..c4543b5d12a0 --- /dev/null +++ b/keyboards/handwired/jankrp2040dactyl/info.json @@ -0,0 +1,103 @@ +{ + "manufacturer": "Ethan Perry", + "keyboard_name": "rp2040dactyl", + "maintainer": "wheres-perry", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "split": { + "enabled": true, + "soft_serial_pin": "GP0" + }, + + "features": { + "extrakey": true, + "mousekey": true, + "nkro": true, + "bootmagic": true + }, + + "matrix_pins": { + "cols": ["GP14", "GP15", "GP16", "GP17", "GP21", "GP22"], + "rows": ["GP8", "GP9", "GP10", "GP11", "GP12"] + }, + + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + + "layouts": { + "LAYOUT": { + "layout": + [{"matrix": [0, 0],"label":"Esc", "x":0, "y":0}, + {"matrix": [0, 1], "label":"1!", "x":1, "y":0}, + {"matrix": [0, 2], "label":"2@", "x":2, "y":0}, + {"matrix": [0, 3], "label":"3#", "x":3, "y":0}, + {"matrix": [0, 4], "label":"4$", "x":4, "y":0}, + {"matrix": [0, 5], "label":"5%", "x":5, "y":0}, + {"matrix": [5, 0], "label":"6^", "x":7, "y":0}, + {"matrix": [5, 1], "label":"7&", "x":8, "y":0}, + {"matrix": [5, 2], "label":"8*", "x":9, "y":0}, + {"matrix": [5, 3], "label":"9(", "x":10, "y":0}, + {"matrix": [5, 4], "label":"0)", "x":11, "y":0}, + {"matrix": [5, 5], "label":"+", "x":12, "y":0}, + + {"matrix": [1, 0], "label":"|", "x":0, "y":1}, + {"matrix": [1, 1], "label":"B", "x":1, "y":1}, + {"matrix": [1, 2], "label":"Y", "x":2, "y":1}, + {"matrix": [1, 3], "label":"O", "x":3, "y":1}, + {"matrix": [1, 4], "label":"U", "x":4, "y":1}, + {"matrix": [1, 5], "label":"\"", "x":5, "y":1}, + {"matrix": [6, 0], "label":":", "x":7, "y":1}, + {"matrix": [6, 1], "label":"L", "x":8, "y":1}, + {"matrix": [6, 2], "label":"D", "x":9, "y":1}, + {"matrix": [6, 3], "label":"W", "x":10, "y":1}, + {"matrix": [6, 4], "label":"V", "x":11, "y":1}, + {"matrix": [6, 5], "label":"Z", "x":12, "y":1}, + + {"matrix": [2, 0], "label":"Arrows", "x":0, "y":2}, + {"matrix": [2, 1], "label":"C", "x":1, "y":2}, + {"matrix": [2, 2], "label":"I", "x":2, "y":2}, + {"matrix": [2, 3], "label":"E", "x":3, "y":2}, + {"matrix": [2, 4], "label":"A", "x":4, "y":2}, + {"matrix": [2, 5], "label":"<", "x":5, "y":2}, + {"matrix": [7, 0], "label":">", "x":7, "y":2}, + {"matrix": [7, 1], "label":"H", "x":8, "y":2}, + {"matrix": [7, 2], "label":"T", "x":9, "y":2}, + {"matrix": [7, 3], "label":"S", "x":10, "y":2}, + {"matrix": [7, 4], "label":"N", "x":11, "y":2}, + {"matrix": [7, 5], "label":"Q", "x":12, "y":2}, + + {"matrix": [3, 0], "label":"Shift", "x":0, "y":3}, + {"matrix": [3, 1], "label":"G", "x":1, "y":3}, + {"matrix": [3, 2], "label":"X", "x":2, "y":3}, + {"matrix": [3, 3], "label":"J", "x":3, "y":3}, + {"matrix": [3, 4], "label":"K", "x":4, "y":3}, + {"matrix": [3, 5], "label":"_", "x":5, "y":3}, + {"matrix": [8, 0], "label":"?", "x":7, "y":3}, + {"matrix": [8, 1], "label":"R", "x":8, "y":3}, + {"matrix": [8, 2], "label":"M", "x":9, "y":3}, + {"matrix": [8, 3], "label":"F", "x":10, "y":3}, + {"matrix": [8, 4], "label":"P", "x":11, "y":3}, + {"matrix": [8, 5], "label":"FN", "x":12, "y":3}, + + {"matrix": [4, 3], "label":"Del", "x":3, "y":5}, + {"matrix": [4, 4], "label":"Space", "x":4, "y":5}, + {"matrix": [4, 5], "label":"Backspace", "x":5, "y":5}, + + {"matrix": [9, 0], "label":"Enter", "x":7, "y":5}, + {"matrix": [9, 3], "label":"Symbol", "x":8, "y":5}, + {"matrix": [9, 2], "label":"Tab", "x":9, "y":5}, + + {"matrix": [4, 1], "label":"Windows", "x":4, "y":6}, + {"matrix": [4, 2], "label":"Alt", "x":5, "y":6}, + + {"matrix": [9, 1], "label":"Ctrl", "x":7, "y":6}, + {"matrix": [9, 4], "label":"Blank", "x":8, "y":6} + ] + } + } +} diff --git a/keyboards/handwired/jankrp2040dactyl/keymaps/default/keymap.c b/keyboards/handwired/jankrp2040dactyl/keymaps/default/keymap.c new file mode 100644 index 000000000000..a9bc7b04f9a1 --- /dev/null +++ b/keyboards/handwired/jankrp2040dactyl/keymaps/default/keymap.c @@ -0,0 +1,70 @@ +/* Copyright 2023 Ethan Perry (@wheres-perry) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 { + _BASELAYER, + _FUNCTIONLAYER, + _ARROWLAYER, + _SYMBOLLAYER +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASELAYER] = LAYOUT( + QK_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL, + KC_BSLS,KC_B, KC_Y, KC_O, KC_U, KC_QUOT, KC_SCLN,KC_L, KC_D, KC_W, KC_V, KC_Z, + MO(_FUNCTIONLAYER), KC_C, KC_I, KC_E, KC_A, KC_COMM, KC_DOT, KC_H, KC_T, KC_S, KC_N, KC_Q, + KC_LSFT,KC_G, KC_X, KC_J, KC_K, KC_MINS, KC_SLSH,KC_R, KC_M, KC_F, KC_P, MO(_ARROWLAYER), + + KC_DEL, KC_SPC,KC_BSPC, KC_ENT, MO(_SYMBOLLAYER), KC_TAB, + KC_LGUI,KC_LALT, KC_RCTL,KC_NO + + + ), + [_ARROWLAYER] = LAYOUT( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_UP, KC_TRNS,KC_TRNS,KC_TRNS, + MO(_FUNCTIONLAYER), KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, + + KC_DEL, KC_SPC,KC_BSPC, KC_ENT, MO(_SYMBOLLAYER), KC_TAB, + KC_LGUI,KC_LALT, KC_RCTL,KC_NO + + + ), + [_FUNCTIONLAYER] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + + KC_DEL, KC_SPC,KC_BSPC, KC_ENT, MO(_SYMBOLLAYER), KC_TAB, + KC_LGUI,KC_LALT, KC_RCTL, KC_NO + + + ), + [_SYMBOLLAYER] = LAYOUT( + KC_TILD,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, + KC_NO, KC_PIPE,KC_BSLS,KC_EQL, KC_LT, KC_GT, KC_LCBR,KC_RCBR,KC_UNDS,KC_ASTR,KC_PLUS, KC_NO, + KC_TRNS, KC_QUES,KC_QUOT,KC_DQUO,KC_COLN,KC_SCLN, KC_LPRN,KC_RPRN,KC_COMM,KC_DOT, KC_MINS,KC_NO, + KC_LSFT,KC_CIRC,KC_PERC,KC_AMPR,KC_HASH,KC_SLSH, KC_LBRC,KC_RBRC,KC_DLR, KC_AT, KC_EXLM,KC_TRNS, + KC_DEL, KC_SPC,KC_BSPC, KC_ENT, KC_TRNS, KC_TAB, + KC_LGUI,KC_LALT, KC_RCTL,KC_NO + + + ) +}; diff --git a/keyboards/handwired/jankrp2040dactyl/readme.md b/keyboards/handwired/jankrp2040dactyl/readme.md new file mode 100644 index 000000000000..0453816b1806 --- /dev/null +++ b/keyboards/handwired/jankrp2040dactyl/readme.md @@ -0,0 +1,26 @@ +# handwired/jankrp2040dactyl + + +A budget Dactyl-Manuform build using Raspberry Pi Pico. + +* Keyboard Maintainer: [Ethan Perry](https://github.com/wheres-perry) +* Hardware Supported: RP2040 Community Edition +* Hardware Availability: https://www.digikey.com/en/product-highlight/r/raspberry-pi/raspberry-pi-picoboard + +Make example for this keyboard (after setting up your build environment): + + make handwired/jankrp2040dactyl:default + +Flashing example for this keyboard: + + make handwired/jankrp2040dactyl:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/jankrp2040dactyl/rules.mk b/keyboards/handwired/jankrp2040dactyl/rules.mk new file mode 100644 index 000000000000..743228e94b64 --- /dev/null +++ b/keyboards/handwired/jankrp2040dactyl/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor \ No newline at end of file diff --git a/keyboards/handwired/lagrange/rules.mk b/keyboards/handwired/lagrange/rules.mk index 61bfdfa4d31a..f4af87851c73 100644 --- a/keyboards/handwired/lagrange/rules.mk +++ b/keyboards/handwired/lagrange/rules.mk @@ -14,4 +14,5 @@ UNICODE_ENABLE = yes SPLIT_KEYBOARD = yes SPLIT_TRANSPORT = custom -SRC += transport.c spi_master.c +SRC += transport.c +SPI_DRIVER_REQUIRED = yes diff --git a/keyboards/handwired/lovelive9/keymaps/default/keymap.c b/keyboards/handwired/lovelive9/keymaps/default/keymap.c index 605f722f444e..6d863449fe5b 100644 --- a/keyboards/handwired/lovelive9/keymaps/default/keymap.c +++ b/keyboards/handwired/lovelive9/keymaps/default/keymap.c @@ -154,15 +154,15 @@ int aqours_color_v[] = {255, 255, 255, 255, 255, 255, 200, 255, 255}; void LED_default_set(void) { - sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (LED_TYPE *)&led[0]); - sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (LED_TYPE *)&led[1]); - sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (LED_TYPE *)&led[2]); - sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (LED_TYPE *)&led[3]); - sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (LED_TYPE *)&led[4]); - sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (LED_TYPE *)&led[5]); - sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (LED_TYPE *)&led[6]); - sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (LED_TYPE *)&led[7]); - sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (LED_TYPE *)&led[8]); + sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (rgb_led_t *)&led[0]); + sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (rgb_led_t *)&led[1]); + sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (rgb_led_t *)&led[2]); + sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (rgb_led_t *)&led[3]); + sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (rgb_led_t *)&led[4]); + sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (rgb_led_t *)&led[5]); + sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (rgb_led_t *)&led[6]); + sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (rgb_led_t *)&led[7]); + sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (rgb_led_t *)&led[8]); rgblight_set(); @@ -171,7 +171,7 @@ void LED_default_set(void) { void LED_layer_set(int aqours_index) { for (int c = 0; c < 9; c++) { - sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (LED_TYPE *)&led[c]); + sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (rgb_led_t *)&led[c]); } rgblight_set(); } diff --git a/keyboards/handwired/marek128b/ergosplit44/config.h b/keyboards/handwired/marek128b/ergosplit44/config.h new file mode 100644 index 000000000000..648bbd7ccb43 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/config.h @@ -0,0 +1,32 @@ +// Copyright 2023 Marek128b (@Marek128b) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* + * 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 rgb for ws2812b - 2020 leds +//#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB + +//vial | get the uid: python3 util/vial_generate_keyboard_uid.py +#define VIAL_KEYBOARD_UID {0x5F, 0x97, 0x91, 0x98, 0xCB, 0x9F, 0x51, 0xCD} +#define VIAL_UNLOCK_COMBO_ROWS {0, 0} +#define VIAL_UNLOCK_COMBO_COLS {0, 1} + +//layer count +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 \ No newline at end of file diff --git a/keyboards/handwired/marek128b/ergosplit44/info.json b/keyboards/handwired/marek128b/ergosplit44/info.json new file mode 100644 index 000000000000..8e0c71fc06f4 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/info.json @@ -0,0 +1,164 @@ +{ + "manufacturer": "Marek128b", + "keyboard_name": "ergosplit44", + "maintainer": "Marek128b", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 5 + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP17", "GP18"], + "rows": ["GP2", "GP3", "GP4", "GP5"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x4D41" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP26" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 25, + "animations": { + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "raindrops": true, + "typing_heatmap": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "multisplash": true + }, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "y": 2}, + + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3} + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"tab", "matrix": [0, 0],"x":0, "y":1.25}, + {"label":"Q", "matrix": [0, 1],"x":1, "y":1.25}, + {"label":"W", "matrix": [0, 2],"x":2, "y":0.75}, + {"label":"E", "matrix": [0, 3],"x":3, "y":0.5}, + {"label":"R", "matrix": [0, 4],"x":4, "y":0.75}, + {"label":"T", "matrix": [0, 5],"x":5, "y":1}, + + {"label":"Y", "matrix": [0, 6],"x":9.75, "y":1}, + {"label":"U", "matrix": [0, 7],"x":10.75, "y":0.75}, + {"label":"I", "matrix": [0, 8],"x":11.75, "y":0.5}, + {"label":"O", "matrix": [0, 9],"x":12.75, "y":0.75}, + {"label":"P", "matrix": [0, 10],"x":13.75, "y":1.25}, + {"label":"\u00dc", "matrix": [0, 11],"x":14.75, "y":1.25}, + + {"label":"back-space", "matrix": [1, 0],"x":0, "y":2.25}, + {"label":"A", "matrix": [1, 1],"x":1, "y":2.25}, + {"label":"S", "matrix": [1, 2],"x":2, "y":1.75}, + {"label":"D", "matrix": [1, 3],"x":3, "y":1.5}, + {"label":"F", "matrix": [1, 4],"x":4, "y":1.75}, + {"label":"G", "matrix": [1, 5],"x":5, "y":2}, + + {"label":"H", "matrix": [1, 6],"x":9.75, "y":2}, + {"label":"J", "matrix": [1, 7],"x":10.75, "y":1.75}, + {"label":"K", "matrix": [1, 8],"x":11.75, "y":1.5}, + {"label":"L", "matrix": [1, 9],"x":12.75, "y":1.75}, + {"label":"\u00d6", "matrix": [1, 10],"x":13.75, "y":2.25}, + {"label":"\u00c4", "matrix": [1, 11],"x":14.75, "y":2.25}, + + {"label":"shift", "matrix": [2, 0],"x":0, "y":3.25}, + {"label":"Z", "matrix": [2, 1],"x":1, "y":3.25}, + {"label":"X", "matrix": [2, 2],"x":2, "y":2.75}, + {"label":"C", "matrix": [2, 3],"x":3, "y":2.5}, + {"label":"V", "matrix": [2, 4],"x":4, "y":2.75}, + {"label":"B", "matrix": [2, 5],"x":5, "y":3}, + + {"label":"N", "matrix": [2, 6],"x":9.75, "y":3}, + {"label":"M", "matrix": [2, 7],"x":10.75, "y":2.75}, + {"label":"<", "matrix": [2, 8],"x":11.75, "y":2.5}, + {"label":":", "matrix": [2, 9],"x":12.75, "y":2.75}, + {"label":"_", "matrix": [2, 10],"x":13.75, "y":3.25}, + {"label":"Shift", "matrix": [2, 11],"x":14.75, "y":3.25}, + + {"label":"L2", "matrix": [3, 2],"x":-3.5, "y":4.5}, + {"label":"Alt", "matrix": [3, 3],"x":-2.25, "y":7.25}, + {"label":"Strg", "matrix": [3, 4],"x":-1.0, "y":7.25}, + {"label":"Space", "matrix": [3, 5],"x":0, "y":7}, + + {"label":"Space", "matrix": [3, 6],"x":-1.0, "y":8.5}, + {"label":"Strg", "matrix": [3, 7],"x":0, "y":8.75}, + {"label":"AltGr", "matrix": [3, 8],"x":1.25, "y":8.75}, + {"label":"L1", "matrix": [3, 9],"x":2.5, "y":5.75} + ] + } + } +} diff --git a/keyboards/handwired/marek128b/ergosplit44/keymaps/default/keymap.c b/keyboards/handwired/marek128b/ergosplit44/keymaps/default/keymap.c new file mode 100644 index 000000000000..a08d6d96847b --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/keymaps/default/keymap.c @@ -0,0 +1,51 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum layer_names { + _QWERTY, + _COLEMAK, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_QWERTY] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_ENT, + KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_MINS, KC_RSFT, + TG(_COLEMAK),KC_LCTL, KC_SPC, KC_LSFT, KC_RSFT, KC_SPC, KC_NO, KC_RALT + ), + [_COLEMAK] = LAYOUT( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_CAPS, KC_A, KC_R, KC_R, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_TRNS, KC_LCTL, KC_SPC, KC_NO, KC_LALT, KC_SPC, KC_NO, KC_RALT + ) +}; + +bool rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(0, RGB_RED); + } + + if (host_keyboard_led_state().num_lock) { + rgb_matrix_set_color(1, RGB_RED); + } + + if (host_keyboard_led_state().scroll_lock) { + rgb_matrix_set_color(2, RGB_RED); + } + + switch (get_highest_layer(layer_state)) { + case 1: + rgb_matrix_set_color(3, RGB_CYAN); + break; + case 2: + rgb_matrix_set_color(3, RGB_MAGENTA); + break; + case 3: + rgb_matrix_set_color(3, RGB_YELLOW); + break; + } + return true; +} diff --git a/keyboards/handwired/marek128b/ergosplit44/keymaps/default/rgb.c b/keyboards/handwired/marek128b/ergosplit44/keymaps/default/rgb.c new file mode 100644 index 000000000000..b6c5dbfb5051 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/keymaps/default/rgb.c @@ -0,0 +1,33 @@ +#include "quantum.h" + +bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) +{ + if (host_keyboard_led_state().caps_lock) + { + rgb_matrix_set_color(0, RGB_RED); + } + + if (host_keyboard_led_state().num_lock) + { + rgb_matrix_set_color(1, RGB_RED); + } + + if (host_keyboard_led_state().scroll_lock) + { + rgb_matrix_set_color(2, RGB_RED); + } + + if (get_highest_layer(layer_state) == 1) + { + rgb_matrix_set_color(3, RGB_CYAN); + } + else if (get_highest_layer(layer_state) == 2) + { + rgb_matrix_set_color(3, RGB_MAGENTA); + } + else if (get_highest_layer(layer_state) == 3) + { + rgb_matrix_set_color(3, RGB_YELLOW); + } + return false; +} diff --git a/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/keymap.c b/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/keymap.c new file mode 100644 index 000000000000..4a08af35e557 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/keymap.c @@ -0,0 +1,4 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "../default/keymap.c" diff --git a/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/rules.mk b/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/rules.mk new file mode 100644 index 000000000000..6bc7063adc21 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +VIAL_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/vial.json b/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/vial.json new file mode 100644 index 000000000000..22fa1fcd3da3 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/keymaps/vial/vial.json @@ -0,0 +1,33 @@ +{ + "name": "MarekSplit44", + "vendorId": "0x4D41", + "productId": "0x0001", + "matrix": { + "rows": 4, + "cols": 12 + }, + "layouts": { + "keymap": [ + [{"y":0.5,"x":3},"0,3",{"x":7.75},"0,8"], + [{"y":-0.75,"x":2},"0,2",{"x":1},"0,4",{"x":5.75},"0,7",{"x":1},"0,9"], + [{"y":-0.75,"x":5},"0,5",{"x":3.75},"0,6"], + [{"y":-0.75},"0,0","0,1",{"x":11.75},"0,10","0,11"], + [{"y":-0.75,"x":3},"1,3",{"x":7.75},"1,8"], + [{"y":-0.75,"x":2},"1,2",{"x":1},"1,4",{"x":5.75},"1,7",{"x":1},"1,9"], + [{"y":-0.75,"x":5},"1,5",{"x":3.75},"1,6"], + [{"y":-0.75},"1,0","1,1",{"x":11.75},"1,10","1,11"], + [{"y":-0.75,"x":3},"2,3",{"x":7.75},"2,8"], + [{"y":-0.75,"x":2},"2,2",{"x":1},"2,4",{"x":5.75},"2,7",{"x":1},"2,9"], + [{"y":-0.75,"x":5},"2,5",{"x":3.75},"2,6"], + [{"y":-0.75},"2,0","2,1",{"x":11.75},"2,10","2,11"], + [{"rx":6.25,"ry":4,"y":0.25,"x":-3.5},"3,2"], + [{"rx":9.5,"y":0.25,"x":2.5},"3,9"], + [{"r":10,"rx":6.25,"y":0.5,"x":-2.25},"3,3"], + [{"r":15,"y":-1.25},"3,5"], + [{"y":-0.75,"x":-1},"3,4"], + [{"r":-15,"rx":9.5,"y":0.25,"x":-1},"3,6"], + [{"y":-0.75},"3,7"], + [{"r":-10,"y":-1,"x":1.25},"3,8"] + ] + } +} diff --git a/keyboards/handwired/marek128b/ergosplit44/readme.md b/keyboards/handwired/marek128b/ergosplit44/readme.md new file mode 100644 index 000000000000..a9077732f9e6 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/readme.md @@ -0,0 +1,27 @@ +# ergosplit44 + +![ergosplit44](https://i.imgur.com/RhRIe2ah.png) + +This is a handdwired split 44 key keyboard. the two sides are connectd via a custom 2x8P pin header cable. + +* Keyboard Maintainer: [Marek128b](https://github.com/Marek128b) +* Hardware Supported: WaveShare RP2040-Zero +* Hardware Availability: [Open Source](https://github.com/Marek128b/Split40) + +Make example for this keyboard (after setting up your build environment): + + make handwired/marek128b/ergosplit44:default + +Flashing example for this keyboard: + + make handwired/marek128b/ergosplit44:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. +* **Physical reset button**: Hold down the `BOOT` button on the RP2040-Zero, then press the `RESET` button. +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create. diff --git a/keyboards/handwired/marek128b/ergosplit44/rules.mk b/keyboards/handwired/marek128b/ergosplit44/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/marek128b/ergosplit44/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/config.h b/keyboards/handwired/minorca/keymaps/ridingqwerty/config.h deleted file mode 100644 index c54aac31899b..000000000000 --- a/keyboards/handwired/minorca/keymaps/ridingqwerty/config.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#undef MATRIX_COL_PINS -#define MATRIX_COL_PINS { B3, B7, D0, D1, D2, D3, C6, C7, B5, B6, F7, F6 } - -#undef MATRIX_ROW_PINS -#define MATRIX_ROW_PINS { F0, F1, F4, F5 } diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c b/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c deleted file mode 100644 index 26e6fc630ceb..000000000000 --- a/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c +++ /dev/null @@ -1,123 +0,0 @@ -/* Copyright 2019 George Koenig - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "ridingqwerty.h" - -/* MinOrca - ┏━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┓ - ┃ ⎋ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ❦ ⌫ ┃ - ┠────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────┨ - ┃ ¶ ⇥ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ 🔢 ↵ ┃ - ┠──────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬───────────┨ - ┃ " ⇧ │ Z │ X │ C │ V │ B │ N │ M │ , │ 𝔽 . │ ⇧ / ┃ - ┠──────────┬───┴──────┬─┴────────┼────────┴────────┴──┬─────┴────────┴─────┬──┴───────┬┴───────┬┴───────────┨ - ┃ { ⎈ │ [ ⌘ │ ( ⌥ │ 🔢 ␣ │ ★ ␣ │ ) ⌥ │ ] ⌘ │ } ⎈ ┃ - ┗━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━┷━━━━━━━━━━━━┛ -*/ - -#define LAYOUT_minorca( \ - KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10, KA11, \ - KB00, KB01, KB02, KB03, KB04, KB05, KB06, KB07, KB08, KB09, KB11, \ - KC00, KC02, KC03, KC04, KC05, KC06, KC07, KC08, KC09, KC10, KC11, \ - KD00, KD02, KD03, KD04, KD07, KD09, KD10, KD11 \ -) { \ - { KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10, KA11 }, \ - { KB00, KB01, KB02, KB03, KB04, KB05, KB06, KB07, KB08, KB09, KC_NO, KB11 }, \ - { KC00, KC_NO, KC02, KC03, KC04, KC05, KC06, KC07, KC08, KC09, KC10, KC11 }, \ - { KD00, KC_NO, KD02, KD03, KD04, KC_NO, KC_NO, KD07, KC_NO, KD09, KD10, KD11 } \ -} - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = { - {QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SC(BSPC) }, - {ED(TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, XXXXXXX, NM(SCLN) }, - {LS(QUOT), XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, FK(DOT), RS(SLSH) }, - {LC(ESC), XXXXXXX, LG(LBRC), LA(RBRC), NM(BSPC), XXXXXXX, XXXXXXX, SM(SPC), XXXXXXX, RA(MINS), RG(EQL), RC(ENT) } -/* - //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤ - //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤ - //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤ - //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘ -*/ - - - }, -#ifdef UNICODE_H - [_RUNE] = { - {KC_ESC, UM(INGWZ), UM(WUNJO), UM(EHWAZ), UM(RAIDO), UM(TIWAZ), UM(IWAZ), UM(UR), UM(ISAZ), UM(ETHEL), UM(PERTH), SC(BSPC) }, - {ED(TAB), UM(ANSUZ), UM(SOWIL), UM(DAGAZ), UM(FE), UM(GEBO), UM(HAGLZ), UM(JERAN), UM(KAUNA), UM(LAUKZ), XXXXXXX, NM(SCLN) }, - {MT_QUOT, XXXXXXX, UM(ALGIZ), UM(THURS), UM(KAUNA), UM(WUNJO), UM(BEORC), UM(NAUDZ), UM(MANNZ), KC_COMM, FK(DOT), RS(SLSH) }, - {LC(ESC), XXXXXXX, LG(LBRC), LA(RBRC), NM(BSPC), XXXXXXX, XXXXXXX, SM(SPC), XXXXXXX, RA(MINS), RG(EQL), RC(ENT) } - }, -#endif - [_EDITOR] = { - //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - {KC_GRV, _______, _______, KC_END, _______, KC_F5, _______, _______, KC_INS, _______, KC_PGUP, KC_DEL }, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤ - {_______, KC_HOME, _______, KC_DEL, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_SCLN }, - //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤ - {_______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PGDN, _______, KC_SCLN, KC_QUOT, KC_BSLS }, - //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤ - {_______, XXXXXXX, _______, _______, KC_EQL, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, KC_COLN, KC_DQUO, KC_PIPE } - //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘ - }, - [_NUMBER] = { - //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - {KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC }, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤ - {_______, KC_4, KC_5, KC_6, KC_PAST, _______, KC_PPLS, KC_4, KC_5, KC_6, XXXXXXX, _______ }, - //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤ - {_______, KC_7, KC_8, KC_9, KC_SLSH, _______, _______, KC_MINS, KC_1, KC_2, KC_3, _______ }, - //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤ - {_______, XXXXXXX, KC_0, _______, _______, XXXXXXX, XXXXXXX, KC_0, XXXXXXX, KC_DOT, _______, _______ } - //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘ - }, - [_SYMBOL] = { - //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - {KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL }, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤ - {_______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, XXXXXXX, _______ }, - //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤ - {_______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_BSLS }, - //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤ - {_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_COLN, KC_DQUO, KC_PIPE } - //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘ - }, - [_SECRET] = { - //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - {QK_BOOT, _______, _______, _______, SECRET0, SECRET1, _______, _______, _______, _______, VERSION, _______ }, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤ - {_______, SECRET4, SECRET8, DB_TOGG, _______, _______, _______, _______, _______, SECRET7, XXXXXXX, MAKE }, - //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤ - {_______, XXXXXXX, SECRET6, _______, SECRET2, SECRET5, _______, _______, SECRET3, _______, _______, _______ }, - //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤ - {_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______ } - //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘ - }, - [_F_KEYS] = { - //┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ - {KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, - //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤ - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______ }, - //├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤ - {_______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - //├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤ - {_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______ } - //└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘ - }, -}; diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/readme.md b/keyboards/handwired/minorca/keymaps/ridingqwerty/readme.md deleted file mode 100644 index 4f0b3564b951..000000000000 --- a/keyboards/handwired/minorca/keymaps/ridingqwerty/readme.md +++ /dev/null @@ -1 +0,0 @@ -# Handwire of Minorca using teensy 2.0 diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk b/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk deleted file mode 100644 index 10f2309f014b..000000000000 --- a/keyboards/handwired/minorca/keymaps/ridingqwerty/rules.mk +++ /dev/null @@ -1,6 +0,0 @@ -# Build Options -# 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 = yes # Enable Bootmagic Lite -UNICODEMAP_ENABLE = yes # Unicode Map diff --git a/keyboards/handwired/onekey/kb2040/rules.mk b/keyboards/handwired/onekey/kb2040/rules.mk index 0e5631b02b3f..dd68e9d3b090 100644 --- a/keyboards/handwired/onekey/kb2040/rules.mk +++ b/keyboards/handwired/onekey/kb2040/rules.mk @@ -1,3 +1 @@ OLED_ENABLE = yes - -OPT_DEFS += -DHAL_USE_I2C=TRUE diff --git a/keyboards/handwired/onekey/keymaps/adc/rules.mk b/keyboards/handwired/onekey/keymaps/adc/rules.mk index a691d5488f16..8b36baccb0ff 100644 --- a/keyboards/handwired/onekey/keymaps/adc/rules.mk +++ b/keyboards/handwired/onekey/keymaps/adc/rules.mk @@ -1,3 +1,3 @@ -SRC += analog.c - CONSOLE_ENABLE = yes + +ANALOG_DRIVER_REQUIRED = yes diff --git a/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk b/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk index 04498a883124..3dec5cef2949 100644 --- a/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk +++ b/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk @@ -1,3 +1,3 @@ CONSOLE_ENABLE = yes -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/handwired/onekey/nucleo_f446re/rules.mk b/keyboards/handwired/onekey/nucleo_f446re/rules.mk index 8515c3fae029..e69de29bb2d1 100644 --- a/keyboards/handwired/onekey/nucleo_f446re/rules.mk +++ b/keyboards/handwired/onekey/nucleo_f446re/rules.mk @@ -1 +0,0 @@ -SRC += analog.c diff --git a/keyboards/handwired/orbweaver/config.h b/keyboards/handwired/orbweaver/config.h index ab7cb9d9d5e9..6a6670a6f6c4 100644 --- a/keyboards/handwired/orbweaver/config.h +++ b/keyboards/handwired/orbweaver/config.h @@ -17,8 +17,7 @@ #pragma once -#define DRIVER_COUNT 1 -#define DRIVER_ADDR_1 0b1110100 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND #define RGB_MATRIX_LED_COUNT 20 #define I2C1_CLOCK_SPEED 100000 #define RGB_MATRIX_CENTER { 40, 30 } diff --git a/keyboards/handwired/orbweaver/orbweaver.c b/keyboards/handwired/orbweaver/orbweaver.c index f6485b6adfa0..63778ea52be2 100644 --- a/keyboards/handwired/orbweaver/orbweaver.c +++ b/keyboards/handwired/orbweaver/orbweaver.c @@ -22,7 +22,7 @@ #include "rgb_matrix.h" -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c index ef975a215d07..d7253971998e 100644 --- a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c +++ b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c @@ -163,20 +163,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef AUDIO_ENABLE -float tone_startup[][2] = { - {NOTE_B5, 20}, - {NOTE_B6, 8}, - {NOTE_DS6, 20}, - {NOTE_B6, 8} -}; +// float tone_startup[][2] = { +// {NOTE_B5, 20}, +// {NOTE_B6, 8}, +// {NOTE_DS6, 20}, +// {NOTE_B6, 8} +// }; float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); - -float tone_goodbye[][2] = SONG(GOODBYE_SOUND); - -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif void persistent_default_layer_set(uint16_t default_layer) { @@ -247,36 +243,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; }; - -void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick - PLAY_SONG(tone_startup); -} - -void shutdown_user(void) -{ - PLAY_SONG(tone_goodbye); - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif diff --git a/keyboards/handwired/phantagom/baragon/info.json b/keyboards/handwired/phantagom/baragon/info.json index f86dfcf436bc..390f114dd9f6 100644 --- a/keyboards/handwired/phantagom/baragon/info.json +++ b/keyboards/handwired/phantagom/baragon/info.json @@ -15,6 +15,7 @@ "encoder": true }, "ws2812": { + "driver": "vendor", "pin": "GP15" }, "rgblight": { diff --git a/keyboards/handwired/phantagom/baragon/rules.mk b/keyboards/handwired/phantagom/baragon/rules.mk index bffd02535de1..6e7633bfe015 100644 --- a/keyboards/handwired/phantagom/baragon/rules.mk +++ b/keyboards/handwired/phantagom/baragon/rules.mk @@ -1,2 +1 @@ -# Needed for RP2040 -WS2812_DRIVER = vendor \ No newline at end of file +# This file intentionally left blank diff --git a/keyboards/handwired/phantagom/varan/info.json b/keyboards/handwired/phantagom/varan/info.json index 636c2d00e6ba..a767d45de03b 100644 --- a/keyboards/handwired/phantagom/varan/info.json +++ b/keyboards/handwired/phantagom/varan/info.json @@ -14,6 +14,7 @@ "rgblight": true }, "ws2812": { + "driver": "vendor", "pin": "GP28" }, "rgblight": { diff --git a/keyboards/handwired/phantagom/varan/rules.mk b/keyboards/handwired/phantagom/varan/rules.mk index bffd02535de1..6e7633bfe015 100644 --- a/keyboards/handwired/phantagom/varan/rules.mk +++ b/keyboards/handwired/phantagom/varan/rules.mk @@ -1,2 +1 @@ -# Needed for RP2040 -WS2812_DRIVER = vendor \ No newline at end of file +# This file intentionally left blank diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c index f439876911ef..957726e775b1 100644 --- a/keyboards/handwired/promethium/rgbsps.c +++ b/keyboards/handwired/promethium/rgbsps.c @@ -1,7 +1,7 @@ #include "ws2812.h" #include "rgbsps.h" -cRGB led[RGBSPS_NUM]; +rgb_led_t led[RGBSPS_NUM]; void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { led[index].r = r; diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index 609c4d0e7e57..d6b97ed81002 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -18,10 +18,11 @@ PS2_ENABLE = yes PS2_DRIVER = interrupt CUSTOM_MATRIX = yes BLUETOOTH_ENABLE = yes + WS2812_DRIVER_REQUIRED = yes +ANALOG_DRIVER_REQUIRED = yes SRC += rgbsps.c -SRC += analog.c SRC += matrix.c LTO_ENABLE = yes diff --git a/keyboards/handwired/pterodactyl/rules.mk b/keyboards/handwired/pterodactyl/rules.mk index 9f0cabc750f4..108e1498a835 100644 --- a/keyboards/handwired/pterodactyl/rules.mk +++ b/keyboards/handwired/pterodactyl/rules.mk @@ -18,4 +18,4 @@ CUSTOM_MATRIX = yes BLUETOOTH_ENABLE = yes SRC += matrix.c -QUANTUM_LIB_SRC += i2c_master.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/handwired/rabijl/rotary_numpad/info.json b/keyboards/handwired/rabijl/rotary_numpad/info.json new file mode 100644 index 000000000000..dafeec0fc01d --- /dev/null +++ b/keyboards/handwired/rabijl/rotary_numpad/info.json @@ -0,0 +1,66 @@ +{ + "manufacturer": "rabijl", + "keyboard_name": "rotary_numpad", + "maintainer": "rabijl", + "url": "https://github.com/RABijl/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["F5", "F4", "B5", "B4"], + "rows": ["F6", "F7", "B1", "B3", "B2", "B6"] + }, + "encoder": { + "rotary": [ + {"pin_a": "D1", "pin_b": "D0", "resolution": 3}, + {"pin_a": "D4", "pin_b": "C6", "resolution": 3}, + {"pin_a": "D7", "pin_b": "E6", "resolution": 3} + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [5, 0],"x":0, "y":0.4}, + {"matrix": [0, 0], "x":2, "y":0}, + {"matrix": [0, 1], "x":3, "y":0}, + {"matrix": [0, 2], "x":4, "y":0}, + {"matrix": [0, 3], "x":5, "y":0}, + {"matrix": [1, 0], "x":2, "y":1.25}, + {"matrix": [1, 1], "x":3, "y":1.25}, + {"matrix": [1, 2], "x":4, "y":1.25}, + {"matrix": [1, 3], "x":5, "y":1.25}, + {"matrix": [2, 0], "x":2, "y":2.25}, + {"matrix": [2, 1], "x":3, "y":2.25}, + {"matrix": [2, 2], "x":4, "y":2.25}, + {"matrix": [2, 3], "x":5, "y":2.25, "h":2}, + + {"matrix": [3, 3], "x":0, "y":2.75}, + {"matrix": [3, 0], "x":2, "y":3.25}, + {"matrix": [3, 1], "x":3, "y":3.25}, + {"matrix": [3, 2], "x":4, "y":3.25}, + + {"matrix": [4, 0], "x":2, "y":4.25}, + {"matrix": [4, 1], "x":3, "y":4.25}, + {"matrix": [4, 2], "x":4, "y":4.25}, + {"matrix": [4, 3], "x":5, "y":4.25, "h":2}, + + {"matrix": [5, 3], "x":0, "y":5.05}, + {"matrix": [5, 1], "x":2, "y":5.25, "w":2}, + {"matrix": [5, 2], "x":4, "y":5.25} + ] + } + } +} diff --git a/keyboards/handwired/rabijl/rotary_numpad/keymaps/default/keymap.c b/keyboards/handwired/rabijl/rotary_numpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..d4462243b0b3 --- /dev/null +++ b/keyboards/handwired/rabijl/rotary_numpad/keymaps/default/keymap.c @@ -0,0 +1,62 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +// + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┐┌───┬───┬───┬───┐ + * │Ply││Esc│Tab│MO1│Bsp│ + * └───┘├───┼───┼───┼───┤ + * │Num│ / │ * │ - │ + * ├───┼───┼───┼───┤ + * │ 7 │ 8 │ 9 │ │ + * ┌───┐├───┼───┼───┤ + │ + * │Esc││ 4 │ 5 │ 6 │ │ + * └───┘├───┼───┼───┼───┤ + * │ 1 │ 2 │ 3 │ │ + * ┌───┐├───┴───┼───┤Ent│ + * │ENT││ 0 │ . │ │ + * └───┘└───────┴───┴───┘ + */ + [0] = LAYOUT( + KC_MPLY, KC_ESC, KC_TAB, MO(1), KC_BSPC, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_ESC, KC_P4, KC_P5, KC_P6, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_ENT, KC_P0, KC_PDOT + ), + /* + * ┌───┐┌───┬───┬───┬───┐ + * │Ply││Rst│Tab│MO1│Bsp│ + * └───┘├───┼───┼───┼───┤ + * │Num│ / │ * │ - │ + * ├───┼───┼───┼───┤ + * │Hom│ ↑ │PgU│ │ + * ┌───┐├───┼───┼───┤ + │ + * │Esc││ ← │ │ → │ │ + * └───┘├───┼───┼───┼───┤ + * │End│ ↓ │PgD│ │ + * ┌───┐├───┴───┼───┤Ent│ + * │ENT││Insert │Del│ │ + * └───┘└───────┴───┘───┘ + */ + [1] = LAYOUT( + _______, QK_BOOT, _______, _______, _______, + _______, _______, _______, _______, + KC_HOME, KC_UP, KC_PGUP, _______, + _______, KC_LEFT, KC_NO, KC_RGHT, + KC_END, KC_DOWN, KC_PGDN, _______, + _______, KC_INS, KC_DEL + ) +}; + +#if defined(ENCODER_MAP_ENABLE) + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_DOWN, KC_UP), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) }, + [1] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(_______, _______) }, +}; +#endif diff --git a/keyboards/handwired/rabijl/rotary_numpad/keymaps/default/rules.mk b/keyboards/handwired/rabijl/rotary_numpad/keymaps/default/rules.mk new file mode 100644 index 000000000000..34789bf1728c --- /dev/null +++ b/keyboards/handwired/rabijl/rotary_numpad/keymaps/default/rules.mk @@ -0,0 +1,2 @@ + +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/handwired/rabijl/rotary_numpad/readme.md b/keyboards/handwired/rabijl/rotary_numpad/readme.md new file mode 100644 index 000000000000..6eb2e1480f56 --- /dev/null +++ b/keyboards/handwired/rabijl/rotary_numpad/readme.md @@ -0,0 +1,67 @@ +# Rotary Numpad + + +![rotary_numpad](https://i.imgur.com/GwEH4WOh.jpeg) + +This is a personal project of mine where I wanted a number pad that I can put on the left side of keyboard that doesn't have a numberpad. I fell in love with the feel of rotary encoders on my 3d printer, so added three to be able to play around with. + +* Keyboard Maintainer: [rabijl](https://github.com/rabijl) +* Hardware Supported: Sparkfun Pro Micro 5V (atmega32u4) +* Hardware Availability: https://www.sparkfun.com/products/12640 + +## How to build from scratch + +I handsoldered gateron blue switches to a 3D printed case. The design is modified from the [Ultipad](https://www.thingiverse.com/thing:4248565). \ +I used a sparkfun Pro Micro as my microcontroller and the pinout can be found in the `info.json`. I found this [site](https://golem.hu/article/pro-micro-pinout/) \ +to be very useful to identify different pins. You can find useful information on rotary encoders from the qmk docs [here](https://docs.qmk.fm/#/reference_info_json?id=encoders) and [here](https://docs.qmk.fm/#/feature_encoders). + +### matrix + +Due to the three rotary encoders, I had to use most of the available pins. Fortunately, all the buttons still fit in a 6x4 matrix. Looking at the diagram below, the three buttons in the first column correspond to each encoder button. + +``` + ┌──┐┌──┐┌──┐┌──┐ + │0A││0B││0C││0D│ +┌──┐ └──┘└──┘└──┘└──┘ +│5A│ +└──┘ ┌──┐┌──┐┌──┐┌──┐ + │1A││1B││1C││1D│ + └──┘└──┘└──┘└──┘ + ┌──┐┌──┐┌──┐┌──┐ + │2A││2B││2C││2D│ +┌──┐ └──┘└──┘└──┘│ │ +│3D│ ┌──┐┌──┐┌──┐│ │ +└──┘ │3A││3B││3C││ │ + └──┘└──┘└──┘└──┘ + ┌──┐┌──┐┌──┐┌──┐ + │4A││4B││4C││4D│ + └──┘└──┘└──┘│ │ +┌──┐ ┌──────┐┌──┐│ │ +│5D│ │5B ││5C││ │ +└──┘ └──────┘└──┘└──┘ + +``` + +## Flashing + +Make example for this keyboard (after setting up your build environment): + + qmk compile -kb handwired/rabijl/rotary_numpad -km default + +Flashing example for this keyboard: + + qmk flash -kb handwired/rabijl/rotary_numpad -km default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Short reset leads**: tap the reset lead to ground twice quickly after qmk is in flash mode +* **Keycode in layout**: double tap the key mapped to `QK_BOOT`. On the default keymap this can be found by holding in key (0,C) and tapping key (0,A), see the matrix section for the positions of these keys. +* **Bootmagic reset**: Hold down the key at (0,A) in the matrix (see matrix section) and plug in the keyboard + +**Note:** if the keyboard doesn't show up after putting the keyboard in reset mode, check that +your user is added to the `tty` and/or `uucp` groups. \ +You may need to logout after adding these groups to your user, for the changes to take affect. diff --git a/keyboards/handwired/rabijl/rotary_numpad/rules.mk b/keyboards/handwired/rabijl/rotary_numpad/rules.mk new file mode 100644 index 000000000000..1287472e49e4 --- /dev/null +++ b/keyboards/handwired/rabijl/rotary_numpad/rules.mk @@ -0,0 +1 @@ +# file intentionally left blank diff --git a/keyboards/handwired/reclined/keymaps/pdl/config.h b/keyboards/handwired/reclined/keymaps/pdl/config.h deleted file mode 100644 index 3a89a0a4d2d4..000000000000 --- a/keyboards/handwired/reclined/keymaps/pdl/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -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 - -#define TAPPING_TERM 200 diff --git a/keyboards/handwired/reclined/keymaps/pdl/keymap.c b/keyboards/handwired/reclined/keymaps/pdl/keymap.c deleted file mode 100644 index bb6976de9bb8..000000000000 --- a/keyboards/handwired/reclined/keymaps/pdl/keymap.c +++ /dev/null @@ -1,69 +0,0 @@ -/* -This is the keymap for the reclined keyboard - -Copyright 2012 Jun Wako -Copyright 2015 Jack Humbert -Copyright 2017 Art Ortenburger -Copyright 2018 Daniel Perrett - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "pdl.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_wrapper( - KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC, - MY_SESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, MY_SQUO, - MY_CBSL, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, MY_SQUO, - KC_LCTL, KC_LGUI, KC_LALT, NUMBRS, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN, MY_AMNU, FUNCTN, MY_CENT - ), - [_PROXIM] = LAYOUT_wrapper( - MY_FESC, _________________PROXIM_L1_________________, _________________PROXIM_R1_________________, KC_BSPC, - KC_TAB, _________________PROXIM_L2_________________, _________________PROXIM_R2_________________, MY_ASCL, - MY_SBSL, _________________PROXIM_L3_________________, _________________PROXIM_R3_________________, MY_SENT, - KC_LCTL, KC_LGUI, KC_LALT, NUMBRS, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN, MY_AMNU, FUNCTN, MY_CENT - ), - [_NAVIGN] = LAYOUT_wrapper( - _______, _________________NAVIGN_L1_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NAVIGN_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NAVIGN_L3_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_PUNCTN] = LAYOUT_wrapper( - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R1_________________, _______, - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R2_________________, _______, - _______, _______, _______, _______, _______, _______, _________________PUNCTN_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_NUMBRS] = LAYOUT_wrapper( - _______, _________________NUMBRS_L1_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NUMBRS_L2_________________, _______, _______, _______, _______, _______, _______, - _______, _________________NUMBRS_L3_________________, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_CODING] = LAYOUT_wrapper( - _______, _______, _______, _______, _______, _______, _________________CODING_R1_________________, _______, - _______, _______, _______, _______, _______, _______, _________________CODING_R2_________________, _______, - _______, _______, _______, _______, _______, _______, _________________CODING_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ), - [_FUNCTN] = LAYOUT_wrapper( - _______, _________________FUNCTN_L1_________________, _________________FUNCTN_R1_________________, MY_CAD, - _______, _________________FUNCTN_L2_________________, _________________FUNCTN_R2_________________, KC_PSCR, - _______, _________________FUNCTN_L3_________________, _________________FUNCTN_R3_________________, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ - ) -}; diff --git a/keyboards/handwired/riblee_split/config.h b/keyboards/handwired/riblee_split/config.h new file mode 100644 index 000000000000..c3b0720ba5df --- /dev/null +++ b/keyboards/handwired/riblee_split/config.h @@ -0,0 +1,11 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// If the pin is high, then the controller assumes it is the left hand, and if it’s low, it’s assumed to be the right side. +#define SPLIT_HAND_PIN C15 + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN B6 +#define SERIAL_USART_RX_PIN B7 diff --git a/keyboards/handwired/riblee_split/halconf.h b/keyboards/handwired/riblee_split/halconf.h new file mode 100644 index 000000000000..1d5c3fd700ff --- /dev/null +++ b/keyboards/handwired/riblee_split/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#include_next diff --git a/keyboards/handwired/riblee_split/info.json b/keyboards/handwired/riblee_split/info.json new file mode 100644 index 000000000000..49b5ca3a54f2 --- /dev/null +++ b/keyboards/handwired/riblee_split/info.json @@ -0,0 +1,108 @@ +{ + "manufacturer": "Riblee", + "keyboard_name": "Split", + "maintainer": "riblee", + "bootloader": "stm32-dfu", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B10", "B1", "B0", "A7", "A6", "A5"], + "rows": ["A4", "A3", "A2", "A1", "A0"] + }, + "development_board": "blackpill_f411", + "url": "", + "usb": { + "device_version": "1.0.0", + "vid": "0xFEED", + "pid": "0x2B2B" + }, + "split": { + "enabled": true, + "transport": { + "sync_matrix_state": true + } + }, + "community_layouts": ["ortho_5x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [5, 0], "x": 7, "y": 0}, + {"matrix": [5, 1], "x": 8, "y": 0}, + {"matrix": [5, 2], "x": 9, "y": 0}, + {"matrix": [5, 3], "x": 10, "y": 0}, + {"matrix": [5, 4], "x": 11, "y": 0}, + {"matrix": [5, 5], "x": 12, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [6, 0], "x": 7, "y": 1}, + {"matrix": [6, 1], "x": 8, "y": 1}, + {"matrix": [6, 2], "x": 9, "y": 1}, + {"matrix": [6, 3], "x": 10, "y": 1}, + {"matrix": [6, 4], "x": 11, "y": 1}, + {"matrix": [6, 5], "x": 12, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [7, 0], "x": 7, "y": 2}, + {"matrix": [7, 1], "x": 8, "y": 2}, + {"matrix": [7, 2], "x": 9, "y": 2}, + {"matrix": [7, 3], "x": 10, "y": 2}, + {"matrix": [7, 4], "x": 11, "y": 2}, + {"matrix": [7, 5], "x": 12, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [8, 0], "x": 7, "y": 3}, + {"matrix": [8, 1], "x": 8, "y": 3}, + {"matrix": [8, 2], "x": 9, "y": 3}, + {"matrix": [8, 3], "x": 10, "y": 3}, + {"matrix": [8, 4], "x": 11, "y": 3}, + {"matrix": [8, 5], "x": 12, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + + {"matrix": [9, 0], "x": 7, "y": 4}, + {"matrix": [9, 1], "x": 8, "y": 4}, + {"matrix": [9, 2], "x": 9, "y": 4}, + {"matrix": [9, 3], "x": 10, "y": 4}, + {"matrix": [9, 4], "x": 11, "y": 4}, + {"matrix": [9, 5], "x": 12, "y": 4} + ] + } + } +} diff --git a/keyboards/handwired/riblee_split/keymaps/default/keymap.c b/keyboards/handwired/riblee_split/keymaps/default/keymap.c new file mode 100644 index 000000000000..f954599c90ee --- /dev/null +++ b/keyboards/handwired/riblee_split/keymaps/default/keymap.c @@ -0,0 +1,155 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layer_names { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _ADJUST +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_QWERTY] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_COLEMAK] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_DVORAK] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_ortho_5x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + BL_STEP, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME,KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn| | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_ortho_5x12( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + _______, QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; diff --git a/keyboards/handwired/riblee_split/mcuconf.h b/keyboards/handwired/riblee_split/mcuconf.h new file mode 100644 index 000000000000..4ea061c7bf36 --- /dev/null +++ b/keyboards/handwired/riblee_split/mcuconf.h @@ -0,0 +1,7 @@ +// Copyright 2023 Daniel Reibl (@riblee) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include_next + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/handwired/riblee_split/readme.md b/keyboards/handwired/riblee_split/readme.md new file mode 100644 index 000000000000..b0acf5b3ba6f --- /dev/null +++ b/keyboards/handwired/riblee_split/readme.md @@ -0,0 +1,24 @@ +# Handwired Split + +This is a compact (12x5) ortholinear split keyboard. + +* Keyboard Maintainer: [Daniel Reibl](https://github.com/riblee) +* Hardware Supported: STM32F411 BlackPill + +Make example for this keyboard (after setting up your build environment): + + make handwired/riblee_split:default + +Flashing example for this keyboard: + + make handwired/riblee_split:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/riblee_split/rules.mk b/keyboards/handwired/riblee_split/rules.mk new file mode 100644 index 000000000000..c6e298832137 --- /dev/null +++ b/keyboards/handwired/riblee_split/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = usart diff --git a/keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/keymap.c deleted file mode 100644 index f65f6aa17af9..000000000000 --- a/keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/keymap.c +++ /dev/null @@ -1,196 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Tap dance declarations -enum { - TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI, - TD_ESC_LCTL_LALT_WINDOWS_EMOJI -}; - -// Custom tapping term for multi function keys -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI) : - case TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Begin quad TD -typedef enum { - TD_NONE, - TD_UNKNOWN, - TD_SINGLE_HOLD, - TD_DOUBLE_HOLD, - TD_TRIPLE_HOLD, - TD_SINGLE_TAP, - TD_DOUBLE_TAP, - TD_TRIPLE_TAP -} td_state_t; - -typedef struct { - bool is_press_action; - td_state_t state; -} td_tap_t; - -// Create an instance of 'td_tap_t' for the 'x' tap dance. -static td_tap_t xtap_state = { - .is_press_action = true, - .state = TD_NONE -}; - -td_state_t cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) { - return TD_SINGLE_TAP; - } else { - return TD_SINGLE_HOLD; - } - } else if (state->count == 2) { - if (state->interrupted || !state->pressed) { - return TD_DOUBLE_TAP; - } else { - return TD_DOUBLE_HOLD; - } - } else if (state->count == 3) { - if (state->interrupted || !state->pressed) { - return TD_TRIPLE_TAP; - } else { - return TD_TRIPLE_HOLD; - } - } - - return TD_UNKNOWN; -} - -void td_esc_lalt_lctl_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) { - xtap_state.state = cur_dance(state); - switch (xtap_state.state) { - case TD_SINGLE_TAP: tap_code(KC_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LALT); break; - case TD_DOUBLE_HOLD: register_code(KC_LCTL); break; - case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break; - case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break; - default: break; - } -} - -void td_esc_lalt_lctl_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; - case TD_DOUBLE_HOLD: unregister_code(KC_LCTL); break; - default: break; - } - xtap_state.state = TD_NONE; -} - -void td_esc_lctl_lalt_windows_emoji_finished(tap_dance_state_t *state, void *user_data) { - xtap_state.state = cur_dance(state); - switch (xtap_state.state) { - case TD_SINGLE_TAP: tap_code16(KC_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LCTL); break; - case TD_DOUBLE_HOLD: register_code(KC_LALT); break; - case TD_DOUBLE_TAP: tap_code(KC_LGUI); break; - case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break; - default: break; - } -} - -void td_esc_lctl_lalt_windows_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; - case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break; - default: break; - } - xtap_state.state = TD_NONE; -} - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lalt_lctl_spotlight_emoji_finished, td_esc_lalt_lctl_spotlight_emoji_reset), - [TD_ESC_LCTL_LALT_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lctl_lalt_windows_emoji_finished, td_esc_lctl_lalt_windows_emoji_reset) -}; -// For the x tap dance. Put it here so it can be used in any keymap -void x_finished(tap_dance_state_t *state, void *user_data); -void x_reset(tap_dance_state_t *state, void *user_data); - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_3x5_2( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI), LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) - ), - [1] = LAYOUT_split_3x5_2( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [2] = LAYOUT_split_3x5_2( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [3] = LAYOUT_split_3x5_2( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), TO(5), TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [4] = LAYOUT_split_3x5_2( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI), KC_SPC, LT(6, KC_TAB), LT(7, KC_ENT) - ), - [5] = LAYOUT_split_3x5_2( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, KC_SLSH, - KC_LCTL, KC_SPC, LT(6, KC_TAB), LT(7, KC_ENT) - ), - [6] = LAYOUT_split_3x5_2( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [7] = LAYOUT_split_3x5_2( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(8), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [8] = LAYOUT_split_3x5_2( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), TO(5), TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), -}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/rules.mk deleted file mode 100644 index e5ddcae8d927..000000000000 --- a/keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/keymap.c deleted file mode 100644 index 293082af6630..000000000000 --- a/keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/keymap.c +++ /dev/null @@ -1,281 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 -char wpm_str[10]; - -// Tap Dance declarations -enum { - TD_ESC_SPOTLIGHT_EMOJI, - TD_ESC_WINDOWS_EMOJI -}; - -void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code16(G(KC_SPC)); - } else if (state->count == 3) { - tap_code16(C(G(KC_SPC))); - } -} - -void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code(KC_LGUI); - } else if (state->count == 3) { - tap_code16(G(KC_DOT)); - } -}; - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji), - [TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji) -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Layer Names -enum layer_names { - _MAC_DEFAULT, - _MAC_CODE, - _MAC_NUM, - _MAC_FUNC, - _WIN_DEFAULT, - _WIN_CODE, - _WIN_NUM, - _WIN_FUNC -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [1] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [2] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [3] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [4] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI) - ), - [5] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE,KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) - ), - [6] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) - ), - [7] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) - ) -}; - -// OLED -#ifdef OLED_ENABLE -// WPM responsiveness -#define IDLE_FRAMES 5 -#define IDLE_SPEED 20 // Speed at which animation goes into idle -#define TAP_FRAMES 2 -#define TAP_SPEED 40 // WPM to trigger Bongo -#define ANIM_FRAME_DURATION 200 // Frame MS -#define ANIM_SIZE 636 // Number of bytes in array, max 1024 - -uint32_t anim_timer = 0; -uint32_t anim_sleep = 0; -uint8_t current_idle_frame = 0; -uint8_t current_tap_frame = 0; - -static void render_animation(void) { - static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; - static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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}}; - static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - }; - - void animation_phase(void) { - if (get_current_wpm() <= IDLE_SPEED) { - current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; - oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); - } - - if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { - oled_write_raw_P(prep[0], ANIM_SIZE); - } - - if (get_current_wpm() >= TAP_SPEED) { - current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; - oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); - } - } - if (get_current_wpm() != 000) { - oled_on(); // Enables OLED on any alpha keypress - - if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - - anim_sleep = timer_read32(); - } else { - if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { - oled_off(); - } else { - if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - } - } -} - -// Draw to OLED -bool oled_task_user(void) { - // Render Bongo Cat - render_animation(); - - // WPM text - oled_set_cursor(0, 0); - sprintf(wpm_str, "%03d", get_current_wpm()); // %03d defines digits to display - oled_write(wpm_str, false); - - // Layer text - oled_set_cursor(0, 1); - switch (get_highest_layer(layer_state)) { - case _MAC_DEFAULT : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("MAIN"), false); - break; - case _MAC_CODE : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("CODE"), false); - break; - case _MAC_NUM : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("NUM"), false); - break; - case _MAC_FUNC : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("FUNC"), false); - break; - case _WIN_DEFAULT : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("MAIN"), false); - break; - case _WIN_CODE : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("CODE"), false); - break; - case _WIN_NUM : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("NUM"), false); - break; - case _WIN_FUNC : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 2); - oled_write_P(PSTR("FUNC"), false); - break; - } - - // Caps lock text - led_t led_state = host_keyboard_led_state(); - oled_set_cursor(0, 3); - oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(""), false); - - return false; -} -#endif - diff --git a/keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/rules.mk deleted file mode 100644 index 6e339da6c697..000000000000 --- a/keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -OLED_ENABLE = yes -WPM_ENABLE = yes -LTO_ENABLE = yes -TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/keymap.c deleted file mode 100644 index ba5f7bc7a8ca..000000000000 --- a/keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/keymap.c +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Tap Dance declarations -enum { - TD_ESC_SPOTLIGHT_EMOJI, - TD_ESC_WINDOWS_EMOJI -}; - -void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code16(G(KC_SPC)); - } else if (state->count == 3) { - tap_code16(C(G(KC_SPC))); - } -} - -void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code(KC_LGUI); - } else if (state->count == 3) { - tap_code16(G(KC_DOT)); - } -}; - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji), - [TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji) -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ortho_3x10_7( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [1] = LAYOUT_ortho_3x10_7( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [2] = LAYOUT_ortho_3x10_7( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [3] = LAYOUT_ortho_3x10_7( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [4] = LAYOUT_ortho_3x10_7( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI) - ), - [5] = LAYOUT_ortho_3x10_7( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI) - ), - [6] = LAYOUT_ortho_3x10_7( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI) - ), - [7] = LAYOUT_ortho_3x10_7( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI) - ) -}; diff --git a/keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/rules.mk deleted file mode 100644 index e5ddcae8d927..000000000000 --- a/keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scotto61/info.json b/keyboards/handwired/scottokeebs/scotto61/info.json new file mode 100644 index 000000000000..fe08843b978b --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto61/info.json @@ -0,0 +1,94 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "Scotto61", + "maintainer": "joe-scotto", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": false + }, + "matrix_pins": { + "cols": ["GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP22", "GP20", "GP19", "GP18", "GP17", "GP16"], + "rows": ["GP1", "GP2", "GP3", "GP4", "GP5"] + }, + "processor": "RP2040", + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x1021", + "vid": "0x534B" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 4}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [1, 12], "x": 12, "y": 1}, + {"matrix": [1, 13], "x": 13, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "y": 2}, + {"matrix": [2, 13], "x": 13, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + {"matrix": [3, 6], "x": 6, "y": 3}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 12], "x": 12, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 6], "x": 6, "y": 4}, + {"matrix": [4, 10], "x": 10, "y": 4}, + {"matrix": [4, 11], "x": 11, "y": 4}, + {"matrix": [4, 12], "x": 12, "y": 4}, + {"matrix": [4, 13], "x": 13, "y": 4} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scotto61/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scotto61/keymaps/default/keymap.c new file mode 100644 index 000000000000..e12bf9b64447 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto61/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* +Copyright 2023 Joe Scotto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scotto61/readme.md b/keyboards/handwired/scottokeebs/scotto61/readme.md new file mode 100644 index 000000000000..608bbfd33d87 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto61/readme.md @@ -0,0 +1,29 @@ +# Scotto61 + +![Scotto61](https://i.imgur.com/zGH0GPXh.jpg) + +A 61-key ortholinear keyboard with a 7u spacebar. + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: Raspberry Pi Pico +* Hardware Availability: [ScottoKeebs](https://scottokeebs.com), [Amazon](https://amazon.com), [AliExpress](https://aliexpress.com) + +# Compiling + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scotto61:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scotto61:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/scottokeebs/scotto61/rules.mk b/keyboards/handwired/scottokeebs/scotto61/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto61/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/scottokeebs/scottoalp/info.json b/keyboards/handwired/scottokeebs/scottoalp/info.json index d6262e11e64b..7a4210bb403a 100644 --- a/keyboards/handwired/scottokeebs/scottoalp/info.json +++ b/keyboards/handwired/scottokeebs/scottoalp/info.json @@ -65,11 +65,11 @@ { "matrix": [2, 9], "x": 9, "y": 2 }, // Row 4 - { "matrix": [3, 1], "x": 1, "y": 3 }, - { "matrix": [3, 2], "x": 2, "y": 3 }, - { "matrix": [3, 4], "x": 4, "y": 3 }, - { "matrix": [3, 6], "x": 6, "y": 3 }, - { "matrix": [3, 7], "x": 7, "y": 3 } + { "matrix": [3, 1], "x": 1.5, "y": 3 }, + { "matrix": [3, 2], "x": 2.5, "y": 3 }, + { "matrix": [3, 4], "x": 3.5, "y": 3, "w": 3 }, + { "matrix": [3, 6], "x": 6.5, "y": 3 }, + { "matrix": [3, 7], "x": 7.5, "y": 3 } ] } } diff --git a/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/config.h deleted file mode 100644 index 1a6512052c1d..000000000000 --- a/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 options -#define TAPPING_TERM 135 -#define PERMISSIVE_HOLD -#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/keymap.c deleted file mode 100644 index dfe688267e3f..000000000000 --- a/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/keymap.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Tap dance declarations -enum { - TD_LCTL_ESC_SPOTLIGHT_EMOJI, - TD_LALT_ESC_WINDOWS_EMOJI -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_LALT_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Begin quad TD -typedef enum { - TD_NONE, - TD_UNKNOWN, - TD_SINGLE_HOLD, - TD_SINGLE_TAP, - TD_DOUBLE_TAP, - TD_TRIPLE_TAP -} td_state_t; - -typedef struct { - bool is_press_action; - td_state_t state; -} td_tap_t; - -// Create an instance of 'td_tap_t' for the 'x' tap dance. -static td_tap_t xtap_state = { - .is_press_action = true, - .state = TD_NONE -}; - -td_state_t cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) { - return TD_SINGLE_TAP; - } else { - return TD_SINGLE_HOLD; - } - } else if (state->count == 2) { - return TD_DOUBLE_TAP; - } else if (state->count == 3) { - return TD_TRIPLE_TAP; - } - - return TD_UNKNOWN; -} - -void td_lctl_esc_spotlight_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LCTL); break; - case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break; - case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break; - default: break; - } -} - -void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; - default: break; - } - xtap_state.state = TD_NONE; -} - -void td_lalt_esc_windowr_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LALT); break; - case TD_DOUBLE_TAP: tap_code(KC_LGUI); break; - case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break; - default: break; - } -} - -void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; - default: break; - } - xtap_state.state = TD_NONE; -} - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset), - [TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset), -}; -// For the x tap dance. Put it here so it can be used in any keymap -void x_finished(tap_dance_state_t *state, void *user_data); -void x_reset(tap_dance_state_t *state, void *user_data); - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ortho_3x10_5( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) - ), - [1] = LAYOUT_ortho_3x10_5( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS - ), - [2] = LAYOUT_ortho_3x10_5( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS - ), - [3] = LAYOUT_ortho_3x10_5( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS - ), - [4] = LAYOUT_ortho_3x10_5( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT) - ), - [5] = LAYOUT_ortho_3x10_5( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT) - ), - [6] = LAYOUT_ortho_3x10_5( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT) - ), - [7] = LAYOUT_ortho_3x10_5( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT) - ) -}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/rules.mk deleted file mode 100644 index e5ddcae8d927..000000000000 --- a/keyboards/handwired/scottokeebs/scottoalp/keymaps/scotto/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottocmd/info.json b/keyboards/handwired/scottokeebs/scottocmd/info.json index d945b70ce9cc..a26b95c1db4a 100644 --- a/keyboards/handwired/scottokeebs/scottocmd/info.json +++ b/keyboards/handwired/scottokeebs/scottocmd/info.json @@ -35,54 +35,54 @@ "LAYOUT_ortho_4_3x10_4": { "layout": [ // Row 1 (Macros) - {"matrix": [0, 7], "x": 7, "y": 0}, - {"matrix": [0, 8], "x": 8, "y": 0}, - {"matrix": [0, 9], "x": 9, "y": 0}, - {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + {"matrix": [0, 10], "x": 10.5, "y": 0}, // Row 2 - {"matrix": [1, 0], "x": 0, "y": 1}, - {"matrix": [1, 1], "x": 1, "y": 1}, - {"matrix": [1, 2], "x": 2, "y": 1}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [1, 6], "x": 6, "y": 1}, - {"matrix": [1, 7], "x": 7, "y": 1}, - {"matrix": [1, 8], "x": 8, "y": 1}, - {"matrix": [1, 9], "x": 9, "y": 1}, - {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, // Row 3 - {"matrix": [2, 0], "x": 0, "y": 2}, - {"matrix": [2, 1], "x": 1, "y": 2}, - {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [2, 6], "x": 6, "y": 2}, - {"matrix": [2, 7], "x": 7, "y": 2}, - {"matrix": [2, 8], "x": 8, "y": 2}, - {"matrix": [2, 9], "x": 9, "y": 2}, - {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2}, + {"matrix": [2, 2], "x": 2.5, "y": 2}, + {"matrix": [2, 3], "x": 3.5, "y": 2}, + {"matrix": [2, 4], "x": 4.5, "y": 2}, + {"matrix": [2, 5], "x": 5.5, "y": 2}, + {"matrix": [2, 6], "x": 6.5, "y": 2}, + {"matrix": [2, 7], "x": 7.5, "y": 2}, + {"matrix": [2, 8], "x": 8.5, "y": 2}, + {"matrix": [2, 9], "x": 9.5, "y": 2}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, // Row 4 - {"matrix": [3, 1], "x": 1, "y": 3}, - {"matrix": [3, 2], "x": 2, "y": 3}, - {"matrix": [3, 3], "x": 3, "y": 3}, - {"matrix": [3, 4], "x": 4, "y": 3}, - {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [3, 6], "x": 6, "y": 3}, - {"matrix": [3, 7], "x": 7, "y": 3}, - {"matrix": [3, 8], "x": 8, "y": 3}, - {"matrix": [3, 9], "x": 9, "y": 3}, - {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 1], "x": 1.5, "y": 3}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 3], "x": 3.5, "y": 3}, + {"matrix": [3, 4], "x": 4.5, "y": 3}, + {"matrix": [3, 5], "x": 5.5, "y": 3}, + {"matrix": [3, 6], "x": 6.5, "y": 3}, + {"matrix": [3, 7], "x": 7.5, "y": 3}, + {"matrix": [3, 8], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 10], "x": 10.5, "y": 3}, // Row 5 - {"matrix": [4, 1], "x": 1, "y": 4}, - {"matrix": [4, 5], "x": 5, "y": 4}, - {"matrix": [4, 9], "x": 9, "y": 4}, - {"matrix": [4, 10], "x": 10, "y": 4} + {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.75}, + {"matrix": [4, 5], "x": 3.25, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 9.5, "y": 4}, + {"matrix": [4, 10], "x": 10.5, "y": 4} ] } } diff --git a/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/config.h deleted file mode 100644 index 1a6512052c1d..000000000000 --- a/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 options -#define TAPPING_TERM 135 -#define PERMISSIVE_HOLD -#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/keymap.c deleted file mode 100644 index c196c3b1e908..000000000000 --- a/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/keymap.c +++ /dev/null @@ -1,511 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 -char wpm_str[10]; - -// Tap Dance declarations -enum { - TD_ESC_SPOTLIGHT_EMOJI, - TD_ESC_WINDOWS_EMOJI -}; - -void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code16(G(KC_SPC)); - } else if (state->count == 3) { - tap_code16(C(G(KC_SPC))); - } -} - -void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code(KC_LGUI); - } else if (state->count == 3) { - tap_code16(G(KC_DOT)); - } -}; - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji), - [TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji) -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Layer Names -enum layer_names { - _MAC_DEFAULT, - _MAC_CODE, - _MAC_NUM, - _MAC_FUNC, - _WIN_DEFAULT, - _WIN_CODE, - _WIN_NUM, - _WIN_FUNC -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ortho_4_3x10_4( - KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_ENT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) - ), - [1] = LAYOUT_ortho_4_3x10_4( - KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_TAB, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_ENT, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS - ), - [2] = LAYOUT_ortho_4_3x10_4( - KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_ENT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS - ), - [3] = LAYOUT_ortho_4_3x10_4( - KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_ENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS - ), - [4] = LAYOUT_ortho_4_3x10_4( - KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI), - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_ENT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT) - ), - [5] = LAYOUT_ortho_4_3x10_4( - KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI), - KC_TAB, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_ENT, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS - ), - [6] = LAYOUT_ortho_4_3x10_4( - KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI), - KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_ENT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS - ), - [7] = LAYOUT_ortho_4_3x10_4( - KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI), - KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_ENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS - ) -}; - -// OLED -#ifdef OLED_ENABLE -// WPM responsiveness -#define IDLE_FRAMES 5 // How many idle frames in animation -#define IDLE_SPEED 20 // Speed at which animation idles -#define TAP_FRAMES 2 // How many tapping frames -#define TAP_SPEED 40 // WPM to trigger Bongo -#define ANIMATION_FRAME_DURATION 200 // MS duration of each frame -#define ANIMATION_SIZE 256 // Number of bytes per animation frame - -uint32_t anim_timer = 0; -uint32_t anim_sleep = 0; -uint8_t current_idle_frame = 0; -uint8_t current_tap_frame = 0; - -static void render_animation(void) { - static const char PROGMEM idle[IDLE_FRAMES][ANIMATION_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, - 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, - 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, - 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, - 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, - 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, - 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, - 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, - 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, - 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, - 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, - 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, - 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, - 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, - 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - }; - static const char PROGMEM prep[][ANIMATION_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, - 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, - 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, - 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, - 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, - 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, - 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, - 0x02, 0x02, 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 - } - }; - static const char PROGMEM tap[TAP_FRAMES][ANIMATION_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, - 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, - 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, - 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, - 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, - 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, - 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, - 0x1c, 0x1e, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, - 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, - 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, - 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, - 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, - 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, - 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, - 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00 - } - }; - - void animation_phase(void) { - // Set cursor to draw from the bottom up - oled_set_cursor(128, 0); - - if (get_current_wpm() <= IDLE_SPEED) { - current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; - oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIMATION_SIZE); - } - - // Start prep image - if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { - oled_write_raw_P(prep[0], ANIMATION_SIZE); - } - - // Start tap animation - if (get_current_wpm() >= TAP_SPEED) { - current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; - oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIMATION_SIZE); - } - } - if (get_current_wpm() != 000) { - oled_on(); // Enables OLED on any alpha keypress - - if (timer_elapsed32(anim_timer) > ANIMATION_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - - anim_sleep = timer_read32(); - } else { - if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { - oled_off(); - } else { - if (timer_elapsed32(anim_timer) > ANIMATION_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - } - } -} - -// Draw to OLED -bool oled_task_user(void) { - // Caps lock text - led_t led_state = host_keyboard_led_state(); - oled_set_cursor(0,1); - oled_write_P(led_state.caps_lock ? PSTR(" Caps Lock "): PSTR(" ScottoCMD "), false); - - //WPM text - oled_set_cursor(0, 9); - oled_write(get_u8_str(get_current_wpm(), '0'), false); - oled_write_P(PSTR(" WPM"), false); - - static const char PROGMEM logos[][256] = { - // Apple - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x78, 0x7c, 0x3e, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, - 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3e, 0x0e, 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, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, - 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - }, - - // Windows - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, - 0xf8, 0xf8, 0x00, 0x80, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb8, 0x9f, 0x9f, 0x9f, 0x9f, 0x8f, 0x9f, 0x9f, 0x9f, 0x1f, 0x3f, 0x3f, - 0x07, 0xc0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x03, 0xe0, - 0xfc, 0xfc, 0xf9, 0xf9, 0xf9, 0xf3, 0xf3, 0xf3, 0xfb, 0xfb, 0xf9, 0x19, 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, - 0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x01, 0x00, 0x1e, 0x1f, - 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - }, - - // Code - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, - 0xf8, 0xfc, 0x3f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x03, 0x07, 0x0f, 0x3e, 0x3c, 0x38, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xfc, 0x7e, 0x1f, 0x07, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x3e, 0x0f, 0x07, 0x03, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - - // Number - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1e, - 0x1e, 0x1e, 0xbe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x78, - 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0xff, 0xff, 0xff, 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 - - }, - - // Function - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, - 0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0x9f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x8f, 0x3f, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf8, 0xfc, 0xfe, 0x7f, 0x3f, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3e, - 0x1e, 0x0c, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 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, - 0x78, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - - // Caps Lock - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0xe0, 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, 0x01, - 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - }; - - // Layer images - oled_set_cursor(32, 0); - switch (get_highest_layer(layer_state)) { - case _MAC_DEFAULT : - oled_write_raw_P(logos[0], sizeof(logos[0])); - break; - case _WIN_DEFAULT : - oled_write_raw_P(logos[1], sizeof(logos[1])); - break; - case _MAC_CODE : - case _WIN_CODE : - oled_write_raw_P(logos[2], sizeof(logos[2])); - break; - case _MAC_NUM : - case _WIN_NUM : - oled_write_raw_P(logos[3], sizeof(logos[3])); - break; - case _MAC_FUNC : - case _WIN_FUNC : - oled_write_raw_P(logos[4], sizeof(logos[4])); - break; - } - - // Render Bongo Cat - render_animation(); - - return false; -} -#endif diff --git a/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/rules.mk deleted file mode 100644 index bcee933e75eb..000000000000 --- a/keyboards/handwired/scottokeebs/scottocmd/keymaps/scotto/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -WPM_ENABLE = yes -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottoergo/info.json b/keyboards/handwired/scottokeebs/scottoergo/info.json index cc4fb126b6e3..4f6d955271a8 100644 --- a/keyboards/handwired/scottokeebs/scottoergo/info.json +++ b/keyboards/handwired/scottokeebs/scottoergo/info.json @@ -28,48 +28,48 @@ "LAYOUT_split_3x5_3": { "layout": [ // Row 1 - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 0], "x": 0, "y": 0.5 }, + { "matrix": [0, 1], "x": 1, "y": 0.25 }, { "matrix": [0, 2], "x": 2, "y": 0 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 5], "x": 5, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, - { "matrix": [0, 7], "x": 7, "y": 0 }, - { "matrix": [0, 8], "x": 8, "y": 0 }, - { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0.25 }, + { "matrix": [0, 4], "x": 4, "y": 0.5 }, + { "matrix": [0, 5], "x": 7, "y": 0.5 }, + { "matrix": [0, 6], "x": 8, "y": 0.25 }, + { "matrix": [0, 7], "x": 9, "y": 0 }, + { "matrix": [0, 8], "x": 10, "y": 0.25 }, + { "matrix": [0, 9], "x": 11, "y": 0.5 }, // Row 2 - { "matrix": [1, 0], "x": 0, "y": 1 }, - { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, { "matrix": [1, 2], "x": 2, "y": 1 }, - { "matrix": [1, 3], "x": 3, "y": 1 }, - { "matrix": [1, 4], "x": 4, "y": 1 }, - { "matrix": [1, 5], "x": 5, "y": 1 }, - { "matrix": [1, 6], "x": 6, "y": 1 }, - { "matrix": [1, 7], "x": 7, "y": 1 }, - { "matrix": [1, 8], "x": 8, "y": 1 }, - { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 7, "y": 1.5 }, + { "matrix": [1, 6], "x": 8, "y": 1.25 }, + { "matrix": [1, 7], "x": 9, "y": 1 }, + { "matrix": [1, 8], "x": 10, "y": 1.25 }, + { "matrix": [1, 9], "x": 11, "y": 1.5 }, // Row 3 - { "matrix": [2, 0], "x": 0, "y": 2 }, - { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 0], "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, { "matrix": [2, 2], "x": 2, "y": 2 }, - { "matrix": [2, 3], "x": 3, "y": 2 }, - { "matrix": [2, 4], "x": 4, "y": 2 }, - { "matrix": [2, 5], "x": 5, "y": 2 }, - { "matrix": [2, 6], "x": 6, "y": 2 }, - { "matrix": [2, 7], "x": 7, "y": 2 }, - { "matrix": [2, 8], "x": 8, "y": 2 }, - { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2.25 }, + { "matrix": [2, 4], "x": 4, "y": 2.5 }, + { "matrix": [2, 5], "x": 7, "y": 2.5 }, + { "matrix": [2, 6], "x": 8, "y": 2.25 }, + { "matrix": [2, 7], "x": 9, "y": 2 }, + { "matrix": [2, 8], "x": 10, "y": 2.25 }, + { "matrix": [2, 9], "x": 11, "y": 2.5 }, // Row 4 - { "matrix": [3, 2], "x": 2, "y": 3 }, - { "matrix": [3, 3], "x": 3, "y": 3 }, - { "matrix": [3, 4], "x": 4, "y": 3 }, - { "matrix": [3, 5], "x": 5, "y": 3 }, - { "matrix": [3, 6], "x": 6, "y": 3 }, - { "matrix": [3, 7], "x": 7, "y": 3 } + { "matrix": [3, 2], "x": 2.5, "y": 3.25 }, + { "matrix": [3, 3], "x": 3.5, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.5, "y": 3.75 }, + { "matrix": [3, 5], "x": 6.5, "y": 3.75 }, + { "matrix": [3, 6], "x": 7.5, "y": 3.5 }, + { "matrix": [3, 7], "x": 8.5, "y": 3.25 } ] } } diff --git a/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/config.h deleted file mode 100644 index 1a6512052c1d..000000000000 --- a/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 options -#define TAPPING_TERM 135 -#define PERMISSIVE_HOLD -#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/keymap.c deleted file mode 100644 index f4d0a0c7bba3..000000000000 --- a/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/keymap.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Tap dance declarations -enum { - TD_LCTL_ESC_SPOTLIGHT_EMOJI, - TD_LALT_ESC_WINDOWS_EMOJI -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_LALT_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Begin quad TD -typedef enum { - TD_NONE, - TD_UNKNOWN, - TD_SINGLE_HOLD, - TD_SINGLE_TAP, - TD_DOUBLE_TAP, - TD_TRIPLE_TAP -} td_state_t; - -typedef struct { - bool is_press_action; - td_state_t state; -} td_tap_t; - -// Create an instance of 'td_tap_t' for the 'x' tap dance. -static td_tap_t xtap_state = { - .is_press_action = true, - .state = TD_NONE -}; - -td_state_t cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) { - return TD_SINGLE_TAP; - } else { - return TD_SINGLE_HOLD; - } - } else if (state->count == 2) { - return TD_DOUBLE_TAP; - } else if (state->count == 3) { - return TD_TRIPLE_TAP; - } - - return TD_UNKNOWN; -} - -void td_lctl_esc_spotlight_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LCTL); break; - case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break; - case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break; - default: break; - } -} - -void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; - default: break; - } - xtap_state.state = TD_NONE; -} - -void td_lalt_esc_windowr_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LALT); break; - case TD_DOUBLE_TAP: tap_code(KC_LGUI); break; - case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break; - default: break; - } -} - -void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; - default: break; - } - xtap_state.state = TD_NONE; -} - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset), - [TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset), -}; -// For the x tap dance. Put it here so it can be used in any keymap -void x_finished(tap_dance_state_t *state, void *user_data); -void x_reset(tap_dance_state_t *state, void *user_data); - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [1] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [2] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [3] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [4] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [5] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [6] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [7] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ) -}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/rules.mk deleted file mode 100644 index e5ddcae8d927..000000000000 --- a/keyboards/handwired/scottokeebs/scottoergo/keymaps/scotto/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottofly/info.json b/keyboards/handwired/scottokeebs/scottofly/info.json new file mode 100644 index 000000000000..5255a5baf49f --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofly/info.json @@ -0,0 +1,78 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoFly", + "maintainer": "joe-scotto", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + // 3, 4, 5, 6, 7, 8, 9, A3, A2, A1 + "cols": ["D0", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5", "F6"], + + // 15, 14, 16, 10 + "rows": ["B1", "B3", "B2", "B6"] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0009", + "vid": "0xFEED" + }, + "community_layouts": ["split_3x5_3"], + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + // Row 1 + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + + // Row 2 + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + + // Row 3 + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + + // Row 4 + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottofly/keymaps/default/config.h similarity index 100% rename from keyboards/handwired/scottokeebs/scotto34/keymaps/scotto/config.h rename to keyboards/handwired/scottokeebs/scottofly/keymaps/default/config.h diff --git a/keyboards/handwired/scottokeebs/scottofly/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottofly/keymaps/default/keymap.c new file mode 100644 index 000000000000..2633845d509e --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofly/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2022 Joe Scotto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LGUI, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), KC_ESC + ), + [1] = LAYOUT_split_3x5_3( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x5_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottofly/readme.md b/keyboards/handwired/scottokeebs/scottofly/readme.md new file mode 100644 index 000000000000..ae51e0ef75bb --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofly/readme.md @@ -0,0 +1,27 @@ +# ScottoFly + +![ScottoFly](https://i.imgur.com/TXuNxt7h.jpg) + +A 36-key split monoblock ergonomic column-staggered ortholinear keyboard with 20° of angle on each half. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: ATmega32U4 +* Hardware Availability: [Amazon](https://amazon.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottofly:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottofly:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottofly/rules.mk b/keyboards/handwired/scottokeebs/scottofly/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofly/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/scottokeebs/scottofrog/info.json b/keyboards/handwired/scottokeebs/scottofrog/info.json index 202626b70fff..147f2d8aa77d 100644 --- a/keyboards/handwired/scottokeebs/scottofrog/info.json +++ b/keyboards/handwired/scottokeebs/scottofrog/info.json @@ -43,11 +43,11 @@ { "matrix": [2, 3], "x": 3, "y": 2 }, { "matrix": [2, 4], "x": 4, "y": 2 }, { "matrix": [2, 5], "x": 5, "y": 2 }, - { "matrix": [3, 0], "x": 0, "y": 3 }, - { "matrix": [3, 1], "x": 1, "y": 3 }, - { "matrix": [3, 3], "x": 3, "y": 3 }, - { "matrix": [3, 5], "x": 5, "y": 3 }, - { "matrix": [3, 6], "x": 6, "y": 3 } + { "matrix": [3, 0], "x": 0, "y": 2, "h": 2 }, + { "matrix": [3, 1], "x": 1, "y": 3, "w": 1.5 }, + { "matrix": [3, 3], "x": 2.5, "y": 3, "w": 2 }, + { "matrix": [3, 5], "x": 4.5, "y": 3, "w": 1.5 }, + { "matrix": [3, 6], "x": 6, "y": 2, "h": 2 } ] } } diff --git a/keyboards/handwired/scottokeebs/scottogame/info.json b/keyboards/handwired/scottokeebs/scottogame/info.json index 5c300b866e44..912cfdfaaa2c 100644 --- a/keyboards/handwired/scottokeebs/scottogame/info.json +++ b/keyboards/handwired/scottokeebs/scottogame/info.json @@ -38,7 +38,7 @@ { "matrix": [0, 2], "x": 2, "y": 0 }, { "matrix": [0, 3], "x": 3, "y": 0 }, { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 6], "x": 5.125, "y": 0, "w": 2.75 }, // Row 2 { "matrix": [1, 0], "x": 0, "y": 1 }, @@ -79,8 +79,8 @@ // Row 5 { "matrix": [4, 1], "x": 1, "y": 4 }, { "matrix": [4, 2], "x": 2, "y": 4 }, - { "matrix": [4, 3], "x": 3, "y": 4 }, - { "matrix": [4, 6], "x": 6, "y": 4 }, + { "matrix": [4, 3], "x": 3, "y": 4, "w": 2 }, + { "matrix": [4, 6], "x": 5, "y": 4, "w": 2 }, { "matrix": [4, 7], "x": 7, "y": 4 }, { "matrix": [4, 8], "x": 8, "y": 4 } ] diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/config.h deleted file mode 100644 index 1a6512052c1d..000000000000 --- a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 options -#define TAPPING_TERM 135 -#define PERMISSIVE_HOLD -#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/keymap.c deleted file mode 100644 index 09fdf5dd9ab4..000000000000 --- a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/keymap.c +++ /dev/null @@ -1,289 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Tap Dance declarations -enum { - TD_ESC_SPOTLIGHT_EMOJI, - TD_ESC_WINDOWS_EMOJI -}; - -void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code16(G(KC_SPC)); - } else if (state->count == 3) { - tap_code16(C(G(KC_SPC))); - } -} - -void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - tap_code(KC_ESC); - } else if (state->count == 2) { - tap_code(KC_LGUI); - } else if (state->count == 3) { - tap_code16(G(KC_DOT)); - } -}; - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji), - [TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji) -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Layer Names -enum layer_names { - _MAC_DEFAULT, - _MAC_CODE, - _MAC_NUM, - _MAC_FUNC, - _WIN_DEFAULT, - _WIN_CODE, - _WIN_NUM, - _WIN_FUNC -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [1] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [2] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [3] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) - ), - [4] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI) - ), - [5] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) - ), - [6] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) - ), - [7] = LAYOUT_ortho_6_3x10_6( - KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) - ) -}; - -#ifdef OLED_ENABLE -// WPM responsiveness -#define IDLE_FRAMES 5 -#define IDLE_SPEED 20 // Speed at which animation goes into idle -#define TAP_FRAMES 2 -#define TAP_SPEED 40 // WPM to trigger Bongo -#define ANIM_FRAME_DURATION 200 // Frame MS -#define ANIM_SIZE 636 // Number of bytes in array, max 1024 - -uint32_t anim_timer = 0; -uint32_t anim_sleep = 0; -uint8_t current_idle_frame = 0; -uint8_t current_tap_frame = 0; - -static void render_animation(void) { - static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; - static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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}}; - static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 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, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - }; - - void animation_phase(void) { - if (get_current_wpm() <= IDLE_SPEED) { - current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; - oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); - } - - if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { - oled_write_raw_P(prep[0], ANIM_SIZE); - } - - if (get_current_wpm() >= TAP_SPEED) { - current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; - oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); - } - } - if (get_current_wpm() != 000) { - oled_on(); // Enables OLED on any alpha keypress - - if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - - anim_sleep = timer_read32(); - } else { - if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { - oled_off(); - } else { - if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animation_phase(); - } - } - } -} - -// Draw to OLED -bool oled_task_user() { - oled_set_cursor(0, 0); - oled_write(" ScottoGame ", false); - - // Render Bongo Cat - oled_set_cursor(86, 0); - render_animation(); - - // WPM text - oled_set_cursor(0,5); - oled_write(get_u8_str(get_current_wpm(), '0'), false); - - // Layer text - oled_set_cursor(0, 6); - switch (get_highest_layer(layer_state)) { - case _MAC_DEFAULT : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("MAIN"), false); - break; - case _MAC_CODE : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("CODE"), false); - break; - case _MAC_NUM : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("NUM"), false); - break; - case _MAC_FUNC : - oled_write_P(PSTR("MAC"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("FUNC"), false); - break; - case _WIN_DEFAULT : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("MAIN"), false); - break; - case _WIN_CODE : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("CODE"), false); - break; - case _WIN_NUM : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("NUM"), false); - break; - case _WIN_FUNC : - oled_write_P(PSTR("WIN"), false); - oled_set_cursor(0, 7); - oled_write_P(PSTR("FUNC"), false); - break; - } - - // Caps lock text - led_t led_state = host_keyboard_led_state(); - oled_set_cursor(0, 4); - oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); - - return false; -} -#endif diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/rules.mk deleted file mode 100644 index bcee933e75eb..000000000000 --- a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -WPM_ENABLE = yes -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottoinvader/info.json b/keyboards/handwired/scottokeebs/scottoinvader/info.json index 89a4fca4b487..2a9054cd4f63 100644 --- a/keyboards/handwired/scottokeebs/scottoinvader/info.json +++ b/keyboards/handwired/scottokeebs/scottoinvader/info.json @@ -30,47 +30,47 @@ "LAYOUT_split_3x5_3": { "layout": [ // Row 1 - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 0], "x": 0, "y": 0.5 }, + { "matrix": [0, 1], "x": 1, "y": 0.25 }, { "matrix": [0, 2], "x": 2, "y": 0 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 5], "x": 5, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0.25 }, + { "matrix": [0, 4], "x": 4, "y": 0.5 }, + { "matrix": [0, 5], "x": 5, "y": 0.5 }, + { "matrix": [0, 6], "x": 6, "y": 0.25 }, { "matrix": [0, 7], "x": 7, "y": 0 }, - { "matrix": [0, 8], "x": 8, "y": 0 }, - { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0.25 }, + { "matrix": [0, 9], "x": 9, "y": 0.5 }, // Row 2 - { "matrix": [1, 0], "x": 0, "y": 1 }, - { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, { "matrix": [1, 2], "x": 2, "y": 1 }, - { "matrix": [1, 3], "x": 3, "y": 1 }, - { "matrix": [1, 4], "x": 4, "y": 1 }, - { "matrix": [1, 5], "x": 5, "y": 1 }, - { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "matrix": [1, 6], "x": 6, "y": 1.25 }, { "matrix": [1, 7], "x": 7, "y": 1 }, - { "matrix": [1, 8], "x": 8, "y": 1 }, - { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "x": 9, "y": 1.5 }, // Row 3 - { "matrix": [2, 0], "x": 0, "y": 2 }, - { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 0], "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, { "matrix": [2, 2], "x": 2, "y": 2 }, - { "matrix": [2, 3], "x": 3, "y": 2 }, - { "matrix": [2, 4], "x": 4, "y": 2 }, - { "matrix": [2, 5], "x": 5, "y": 2 }, - { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2.25 }, + { "matrix": [2, 4], "x": 4, "y": 2.5 }, + { "matrix": [2, 5], "x": 5, "y": 2.5 }, + { "matrix": [2, 6], "x": 6, "y": 2.25 }, { "matrix": [2, 7], "x": 7, "y": 2 }, - { "matrix": [2, 8], "x": 8, "y": 2 }, - { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2.25 }, + { "matrix": [2, 9], "x": 9, "y": 2.5 }, // Row 4 { "matrix": [3, 2], "x": 2, "y": 3 }, - { "matrix": [3, 3], "x": 3, "y": 3 }, - { "matrix": [3, 4], "x": 4, "y": 3 }, - { "matrix": [3, 5], "x": 5, "y": 3 }, - { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3.25 }, + { "matrix": [3, 4], "x": 4, "y": 3.5 }, + { "matrix": [3, 5], "x": 5, "y": 3.5 }, + { "matrix": [3, 6], "x": 6, "y": 3.25 }, { "matrix": [3, 7], "x": 7, "y": 3 } ] } diff --git a/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/config.h deleted file mode 100644 index 1a6512052c1d..000000000000 --- a/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 options -#define TAPPING_TERM 135 -#define PERMISSIVE_HOLD -#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/keymap.c deleted file mode 100644 index f4d0a0c7bba3..000000000000 --- a/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/keymap.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Tap dance declarations -enum { - TD_LCTL_ESC_SPOTLIGHT_EMOJI, - TD_LALT_ESC_WINDOWS_EMOJI -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_LALT_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Begin quad TD -typedef enum { - TD_NONE, - TD_UNKNOWN, - TD_SINGLE_HOLD, - TD_SINGLE_TAP, - TD_DOUBLE_TAP, - TD_TRIPLE_TAP -} td_state_t; - -typedef struct { - bool is_press_action; - td_state_t state; -} td_tap_t; - -// Create an instance of 'td_tap_t' for the 'x' tap dance. -static td_tap_t xtap_state = { - .is_press_action = true, - .state = TD_NONE -}; - -td_state_t cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) { - return TD_SINGLE_TAP; - } else { - return TD_SINGLE_HOLD; - } - } else if (state->count == 2) { - return TD_DOUBLE_TAP; - } else if (state->count == 3) { - return TD_TRIPLE_TAP; - } - - return TD_UNKNOWN; -} - -void td_lctl_esc_spotlight_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LCTL); break; - case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break; - case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break; - default: break; - } -} - -void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; - default: break; - } - xtap_state.state = TD_NONE; -} - -void td_lalt_esc_windowr_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LALT); break; - case TD_DOUBLE_TAP: tap_code(KC_LGUI); break; - case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break; - default: break; - } -} - -void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; - default: break; - } - xtap_state.state = TD_NONE; -} - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset), - [TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset), -}; -// For the x tap dance. Put it here so it can be used in any keymap -void x_finished(tap_dance_state_t *state, void *user_data); -void x_reset(tap_dance_state_t *state, void *user_data); - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [1] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [2] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [3] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [4] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [5] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [6] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [7] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ) -}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/rules.mk deleted file mode 100644 index e5ddcae8d927..000000000000 --- a/keyboards/handwired/scottokeebs/scottoinvader/keymaps/scotto/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottolong/info.json b/keyboards/handwired/scottokeebs/scottolong/info.json new file mode 100644 index 000000000000..156772d21396 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottolong/info.json @@ -0,0 +1,72 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoLong", + "maintainer": "joe-scotto", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15"], + "rows": ["GP2", "GP3", "GP4", "GP5"] + }, + "processor": "RP2040", + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0011", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_ortho_3x10_3": { + "layout": [ + // Row 1 + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + + // Row 2 + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + + // Row 3 + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + + // Row 4 + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottolong/keymaps/default/config.h similarity index 100% rename from keyboards/handwired/scottokeebs/scotto36/keymaps/scotto/config.h rename to keyboards/handwired/scottokeebs/scottolong/keymaps/default/config.h diff --git a/keyboards/handwired/scottokeebs/scottolong/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottolong/keymaps/default/keymap.c new file mode 100644 index 000000000000..e63da854f006 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottolong/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2022 Joe Scotto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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_3x10_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LGUI, LT(1, KC_SPC), LT(2, KC_TAB) + ), + [1] = LAYOUT_ortho_3x10_3( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_ortho_3x10_3( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_ortho_3x10_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottolong/readme.md b/keyboards/handwired/scottokeebs/scottolong/readme.md new file mode 100644 index 000000000000..bdea4ee350eb --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottolong/readme.md @@ -0,0 +1,27 @@ +# ScottoLong + +![ScottoLong](https://i.imgur.com/AEQWXLlh.jpeg) + +A 33-key ortholinear keyboard with a 7u spacebar and two 1.5u function keys. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: RP2040 +* Hardware Availability: [Amazon](https://amazon.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottolong:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottolong:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottolong/rules.mk b/keyboards/handwired/scottokeebs/scottolong/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottolong/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/scottokeebs/scottomacrodeck/info.json b/keyboards/handwired/scottokeebs/scottomacrodeck/info.json new file mode 100644 index 000000000000..f238564c7fb3 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottomacrodeck/info.json @@ -0,0 +1,52 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoMacrodeck", + "maintainer": "joe-scotto", + "development_board": "promicro", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "build" : { + "lto": true, + }, + "matrix_pins": { + "direct": [ + ["D3", "D2", "D1", null], + ["D0", "D4", "C6", "D7"], + ["E6", "B4", "B5", "F4"] + ] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0015", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + // Row 1 + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + + // Row 2 + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + + // Row 3 + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scottomacrodeck/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottomacrodeck/keymaps/default/keymap.c new file mode 100644 index 000000000000..c8becfca5809 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottomacrodeck/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* +Copyright 2023 Joe Scotto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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_1, KC_2, KC_3, + KC_Q, KC_W, KC_E, KC_R, + KC_A, KC_S, KC_D, KC_F + ) +}; diff --git a/keyboards/handwired/scottokeebs/scottomacrodeck/readme.md b/keyboards/handwired/scottokeebs/scottomacrodeck/readme.md new file mode 100644 index 000000000000..4fc82f42c8bd --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottomacrodeck/readme.md @@ -0,0 +1,29 @@ +# ScottoMacrodeck + +![ScottoMacrodeck](https://imgur.com/KVJuIVNh.jpeg) + +An 11-key macropad designed specifically for someone who games with a single thumb, however, it can be used as a traditional macropad. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: ATmega32U4 +* Hardware Availability: [Amazon](https://amazon.com) + +# Compiling + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottomacrodeck:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottomacrodeck:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottomacrodeck/rules.mk b/keyboards/handwired/scottokeebs/scottomacrodeck/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/handwired/scottokeebs/scottomouse/info.json b/keyboards/handwired/scottokeebs/scottomouse/info.json new file mode 100644 index 000000000000..36f92f48e268 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottomouse/info.json @@ -0,0 +1,39 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoMouse", + "maintainer": "joe-scotto", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5"] + ] + }, + "processor": "RP2040", + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0018", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0} + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scottomouse/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottomouse/keymaps/default/keymap.c new file mode 100644 index 000000000000..6cc4d9014446 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottomouse/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +/* +Copyright 2023 Joe Scotto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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_MS_BTN1, KC_MS_BTN2, KC_MS_LEFT, KC_MS_UP, KC_MS_DOWN, KC_MS_RIGHT + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottomouse/readme.md b/keyboards/handwired/scottokeebs/scottomouse/readme.md new file mode 100644 index 000000000000..4102f633107d --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottomouse/readme.md @@ -0,0 +1,29 @@ +# ScottoMouse + +![ScottoMouse](https://i.imgur.com/yjnhyXWh.jpeg) + +A 6-key macropad that utilizes [QMK mouse keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) to emulate a mouse, case files available [here](https://github.com/joe-scotto/scottokeebs.git). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: Raspberry Pi Pico +* Hardware Availability: [ScottoKeebs](https://scottokeebs.com), [Amazon](https://amazon.com), [Ali](https://amazon.com) + +# Compiling + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottomouse:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottomouse:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottomouse/rules.mk b/keyboards/handwired/scottokeebs/scottomouse/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottomouse/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/scottokeebs/scottonum/info.json b/keyboards/handwired/scottokeebs/scottonum/info.json index 2907b47af86a..f71f75d62b5a 100644 --- a/keyboards/handwired/scottokeebs/scottonum/info.json +++ b/keyboards/handwired/scottokeebs/scottonum/info.json @@ -40,16 +40,16 @@ { "matrix": [1, 0], "x": 0, "y": 1 }, { "matrix": [1, 1], "x": 1, "y": 1 }, { "matrix": [1, 2], "x": 2, "y": 1 }, - { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1, "h": 2 }, { "matrix": [2, 0], "x": 0, "y": 2 }, { "matrix": [2, 1], "x": 1, "y": 2 }, { "matrix": [2, 2], "x": 2, "y": 2 }, { "matrix": [3, 0], "x": 0, "y": 3 }, { "matrix": [3, 1], "x": 1, "y": 3 }, { "matrix": [3, 2], "x": 2, "y": 3 }, - { "matrix": [3, 3], "x": 3, "y": 3 }, - { "matrix": [4, 0], "x": 0, "y": 4 }, - { "matrix": [4, 1], "x": 1, "y": 3 } + { "matrix": [3, 3], "x": 3, "y": 3, "h": 2 }, + { "matrix": [4, 0], "x": 0, "y": 4, "w": 2 }, + { "matrix": [4, 1], "x": 2, "y": 4 } ] } } diff --git a/keyboards/handwired/scottokeebs/scottoslant/info.json b/keyboards/handwired/scottokeebs/scottoslant/info.json new file mode 100644 index 000000000000..ebaa1b530c2d --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottoslant/info.json @@ -0,0 +1,75 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoSlant", + "maintainer": "joe-scotto", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5"], + "rows": ["B1", "B3", "B2", "B6"] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0004", + "vid": "0x534B" + }, + "layouts": { + "LAYOUT": { + "layout": [ + // Row 1 + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + + // Row 2 + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + + // Row 3 + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + + // Row 4 + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottoslant/keymaps/default/config.h similarity index 100% rename from keyboards/handwired/scottokeebs/scotto40/keymaps/scotto/config.h rename to keyboards/handwired/scottokeebs/scottoslant/keymaps/default/config.h diff --git a/keyboards/handwired/scottokeebs/scottoslant/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottoslant/keymaps/default/keymap.c new file mode 100644 index 000000000000..cd70c3ddc253 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottoslant/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2022 Joe Scotto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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_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_BSPC, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), KC_ESC + ), + [1] = LAYOUT( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/handwired/scottokeebs/scottoslant/readme.md b/keyboards/handwired/scottokeebs/scottoslant/readme.md new file mode 100644 index 000000000000..6bb237b6bf71 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottoslant/readme.md @@ -0,0 +1,28 @@ +# ScottoSlant + +![ScottoSlant](https://i.imgur.com/p10NGimh.jpg) + +A 37-key handwired 0.25u row-staggered keyboard with a 2u spacebar. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: ATmega32U4 +* Hardware Availability: [Amazon](https://amazon.com) + + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottoslant:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottoslant:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/clickety_split/leeloo/keymaps/default/rules.mk b/keyboards/handwired/scottokeebs/scottoslant/rules.mk similarity index 100% rename from keyboards/clickety_split/leeloo/keymaps/default/rules.mk rename to keyboards/handwired/scottokeebs/scottoslant/rules.mk diff --git a/keyboards/handwired/scottokeebs/scottosplit/info.json b/keyboards/handwired/scottokeebs/scottosplit/info.json index 792084b82cca..66d24db0cd84 100644 --- a/keyboards/handwired/scottokeebs/scottosplit/info.json +++ b/keyboards/handwired/scottokeebs/scottosplit/info.json @@ -14,7 +14,7 @@ }, "matrix_pins": { // 3, 4, 5, 6, 7, 8, 9, A3, A2, A1 - "cols": ["D0", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5", "F6"] + "cols": ["D0", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5", "F6"], // 15, 14, 16, 10 "rows": ["B1", "B3", "B2", "B6"] @@ -30,48 +30,48 @@ "LAYOUT_split_3x5_3": { "layout": [ // Row 1 - { "matrix": [0, 0], "x": 0, "y": 0 }, - { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 0], "x": 0, "y": 0.5 }, + { "matrix": [0, 1], "x": 1, "y": 0.25 }, { "matrix": [0, 2], "x": 2, "y": 0 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0 }, - { "matrix": [0, 5], "x": 5, "y": 0 }, - { "matrix": [0, 6], "x": 6, "y": 0 }, - { "matrix": [0, 7], "x": 7, "y": 0 }, - { "matrix": [0, 8], "x": 8, "y": 0 }, - { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0.25 }, + { "matrix": [0, 4], "x": 4, "y": 0.5 }, + { "matrix": [0, 5], "x": 7, "y": 0.5 }, + { "matrix": [0, 6], "x": 8, "y": 0.25 }, + { "matrix": [0, 7], "x": 9, "y": 0 }, + { "matrix": [0, 8], "x": 10, "y": 0.25 }, + { "matrix": [0, 9], "x": 11, "y": 0.5 }, // Row 2 - { "matrix": [1, 0], "x": 0, "y": 1 }, - { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 0], "x": 0, "y": 1.5 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, { "matrix": [1, 2], "x": 2, "y": 1 }, - { "matrix": [1, 3], "x": 3, "y": 1 }, - { "matrix": [1, 4], "x": 4, "y": 1 }, - { "matrix": [1, 5], "x": 5, "y": 1 }, - { "matrix": [1, 6], "x": 6, "y": 1 }, - { "matrix": [1, 7], "x": 7, "y": 1 }, - { "matrix": [1, 8], "x": 8, "y": 1 }, - { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.5 }, + { "matrix": [1, 5], "x": 7, "y": 1.5 }, + { "matrix": [1, 6], "x": 8, "y": 1.25 }, + { "matrix": [1, 7], "x": 9, "y": 1 }, + { "matrix": [1, 8], "x": 10, "y": 1.25 }, + { "matrix": [1, 9], "x": 11, "y": 1.5 }, // Row 3 - { "matrix": [2, 0], "x": 0, "y": 2 }, - { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 0], "x": 0, "y": 2.5 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, { "matrix": [2, 2], "x": 2, "y": 2 }, - { "matrix": [2, 3], "x": 3, "y": 2 }, - { "matrix": [2, 4], "x": 4, "y": 2 }, - { "matrix": [2, 5], "x": 5, "y": 2 }, - { "matrix": [2, 6], "x": 6, "y": 2 }, - { "matrix": [2, 7], "x": 7, "y": 2 }, - { "matrix": [2, 8], "x": 8, "y": 2 }, - { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2.25 }, + { "matrix": [2, 4], "x": 4, "y": 2.5 }, + { "matrix": [2, 5], "x": 7, "y": 2.5 }, + { "matrix": [2, 6], "x": 8, "y": 2.25 }, + { "matrix": [2, 7], "x": 9, "y": 2 }, + { "matrix": [2, 8], "x": 10, "y": 2.25 }, + { "matrix": [2, 9], "x": 11, "y": 2.5 }, // Row 4 - { "matrix": [3, 2], "x": 2, "y": 3 }, - { "matrix": [3, 3], "x": 3, "y": 3 }, - { "matrix": [3, 4], "x": 4, "y": 3 }, - { "matrix": [3, 5], "x": 5, "y": 3 }, - { "matrix": [3, 6], "x": 6, "y": 3 }, - { "matrix": [3, 7], "x": 7, "y": 3 } + { "matrix": [3, 2], "x": 2.5, "y": 3.75 }, + { "matrix": [3, 3], "x": 3.5, "y": 4 }, + { "matrix": [3, 4], "x": 4.5, "y": 4.25 }, + { "matrix": [3, 5], "x": 6.5, "y": 4.25 }, + { "matrix": [3, 6], "x": 7.5, "y": 4 }, + { "matrix": [3, 7], "x": 8.5, "y": 3.75 } ] } } diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/config.h deleted file mode 100644 index 1a6512052c1d..000000000000 --- a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 options -#define TAPPING_TERM 135 -#define PERMISSIVE_HOLD -#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/keymap.c deleted file mode 100644 index f4d0a0c7bba3..000000000000 --- a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/keymap.c +++ /dev/null @@ -1,174 +0,0 @@ -/* -Copyright 2022 Joe Scotto - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -// Tap dance declarations -enum { - TD_LCTL_ESC_SPOTLIGHT_EMOJI, - TD_LALT_ESC_WINDOWS_EMOJI -}; - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) : - case TD(TD_LALT_ESC_WINDOWS_EMOJI) : - case LGUI_T(KC_SPC) : - case LT(1, KC_TAB) : - case LT(2, KC_ENT) : - return 200; - default: - return TAPPING_TERM; - } -}; - -// Begin quad TD -typedef enum { - TD_NONE, - TD_UNKNOWN, - TD_SINGLE_HOLD, - TD_SINGLE_TAP, - TD_DOUBLE_TAP, - TD_TRIPLE_TAP -} td_state_t; - -typedef struct { - bool is_press_action; - td_state_t state; -} td_tap_t; - -// Create an instance of 'td_tap_t' for the 'x' tap dance. -static td_tap_t xtap_state = { - .is_press_action = true, - .state = TD_NONE -}; - -td_state_t cur_dance(tap_dance_state_t *state) { - if (state->count == 1) { - if (state->interrupted || !state->pressed) { - return TD_SINGLE_TAP; - } else { - return TD_SINGLE_HOLD; - } - } else if (state->count == 2) { - return TD_DOUBLE_TAP; - } else if (state->count == 3) { - return TD_TRIPLE_TAP; - } - - return TD_UNKNOWN; -} - -void td_lctl_esc_spotlight_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LCTL); break; - case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break; - case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break; - default: break; - } -} - -void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; - default: break; - } - xtap_state.state = TD_NONE; -} - -void td_lalt_esc_windowr_emoji_finished(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_ESC); break; - case TD_SINGLE_HOLD: register_code(KC_LALT); break; - case TD_DOUBLE_TAP: tap_code(KC_LGUI); break; - case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break; - default: break; - } -} - -void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) { - switch (xtap_state.state) { - case TD_SINGLE_TAP: unregister_code(KC_ESC); break; - case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; - default: break; - } - xtap_state.state = TD_NONE; -} - - // Tap Dance definitions -tap_dance_action_t tap_dance_actions[] = { - [TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset), - [TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset), -}; -// For the x tap dance. Put it here so it can be used in any keymap -void x_finished(tap_dance_state_t *state, void *user_data); -void x_reset(tap_dance_state_t *state, void *user_data); - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [1] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [2] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [3] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) - ), - [4] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, - KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, - LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [5] = LAYOUT_split_3x5_3( - KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, - KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, - LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [6] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ), - [7] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, - KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, - TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) - ) -}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/rules.mk deleted file mode 100644 index e5ddcae8d927..000000000000 --- a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/rules.mk +++ /dev/null @@ -1 +0,0 @@ -TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottostarter/info.json b/keyboards/handwired/scottokeebs/scottostarter/info.json index ade3db28a0ee..5e6a70114bb5 100644 --- a/keyboards/handwired/scottokeebs/scottostarter/info.json +++ b/keyboards/handwired/scottokeebs/scottostarter/info.json @@ -38,7 +38,7 @@ {"matrix": [0, 7], "x": 7, "y": 0}, {"matrix": [0, 8], "x": 8, "y": 0}, {"matrix": [0, 9], "x": 9, "y": 0}, - {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0, "w": 1.5}, // Row 2 {"matrix": [1, 0], "x": 0, "y": 1}, @@ -51,7 +51,7 @@ {"matrix": [1, 7], "x": 7, "y": 1}, {"matrix": [1, 8], "x": 8, "y": 1}, {"matrix": [1, 9], "x": 9, "y": 1}, - {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1, "w": 1.5}, // Row 3 {"matrix": [2, 0], "x": 0, "y": 2}, @@ -64,7 +64,7 @@ {"matrix": [2, 7], "x": 7, "y": 2}, {"matrix": [2, 8], "x": 8, "y": 2}, {"matrix": [2, 9], "x": 9, "y": 2}, - {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2, "w": 1.5}, // Row 4 {"matrix": [3, 0], "x": 0, "y": 3}, @@ -77,17 +77,17 @@ {"matrix": [3, 7], "x": 7, "y": 3}, {"matrix": [3, 8], "x": 8, "y": 3}, {"matrix": [3, 9], "x": 9, "y": 3}, - {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3, "w": 1.5}, // Row 5 - {"matrix": [4, 0], "x": 0, "y": 4}, - {"matrix": [4, 1], "x": 1, "y": 4}, - {"matrix": [4, 2], "x": 2, "y": 4}, - {"matrix": [4, 4], "x": 4, "y": 4}, - {"matrix": [4, 7], "x": 7, "y": 4}, - {"matrix": [4, 8], "x": 8, "y": 4}, - {"matrix": [4, 9], "x": 9, "y": 4}, - {"matrix": [4, 10], "x": 10, "y": 4} + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4}, + {"matrix": [4, 4], "x": 3.5, "y": 4, "w": 3}, + {"matrix": [4, 7], "x": 6.5, "y": 4}, + {"matrix": [4, 8], "x": 7.5, "y": 4}, + {"matrix": [4, 9], "x": 8.5, "y": 4, "w": 1.5}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5} ] } } diff --git a/keyboards/handwired/scottokeebs/scottowing/info.json b/keyboards/handwired/scottokeebs/scottowing/info.json new file mode 100644 index 000000000000..91bfaa1f92a1 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottowing/info.json @@ -0,0 +1,85 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoWing", + "maintainer": "joe-scotto", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "bootmagic": { + "matrix": [0, 1] + }, + "matrix_pins": { + "cols": [ + "GP14", "GP29", "GP28", "GP27", "GP26", "GP15", "GP7", "GP6", "GP5", "GP4", "GP3", "GP8" + ], + "rows": ["GP9", "GP10", "GP11", "GP12"] + }, + "processor": "RP2040", + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x1020", + "vid": "0x534B" + }, + "ws2812": { + "pin": "GP16", + "driver": "vendor" + }, + "rgblight": { + "led_count": 1 + }, + "layouts": { + "LAYOUT_split_3x6_2": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 10], "x": 10, "y": 1 }, + { "matrix": [1, 11], "x": 11, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 10], "x": 10, "y": 2 }, + { "matrix": [2, 11], "x": 11, "y": 2 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 } + ] + } + } +} diff --git a/keyboards/scottokeebs/scotto34/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottowing/keymaps/default/config.h similarity index 100% rename from keyboards/scottokeebs/scotto34/keymaps/scotto/config.h rename to keyboards/handwired/scottokeebs/scottowing/keymaps/default/config.h diff --git a/keyboards/handwired/scottokeebs/scottowing/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottowing/keymaps/default/keymap.c new file mode 100644 index 000000000000..84649ec76b73 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottowing/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2023 Joe Scotto + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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_split_3x6_2( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, KC_QUOT, + KC_LSFT, LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), KC_RSFT, + KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) + ), + [1] = LAYOUT_split_3x6_2( + KC_TRNS, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, KC_TRNS, + KC_TRNS, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_TRNS, + KC_TRNS, LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x6_2( + KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, KC_TRNS, + KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x6_2( + KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/handwired/scottokeebs/scottowing/readme.md b/keyboards/handwired/scottokeebs/scottowing/readme.md new file mode 100644 index 000000000000..27097c5acc38 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottowing/readme.md @@ -0,0 +1,29 @@ +# ScottoWing + +![ScottoWing](https://i.imgur.com/VSASAjxh.jpeg) + +A low-profile 34/40-key split monoblock ergonomic column-staggered ortholinear keyboard that uses 18x17mm spaced Choc switches. + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: Waveshare RP2040-Zero +* Hardware Availability: [ScottoKeebs](https://scottokeebs.com), [Amazon](https://amazon.com), [AliExpress](https://aliexpress.com) + +# Compiling + +Make example for this keyboard (after setting up your build environment): + + make scottokeebs/handwired/scottowing:default + +Flashing example for this keyboard: + + make scottokeebs/handwired/scottowing:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +# Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/scottokeebs/scottowing/rules.mk b/keyboards/handwired/scottokeebs/scottowing/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottowing/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/split_cloud/config.h b/keyboards/handwired/split_cloud/config.h new file mode 100644 index 000000000000..faa2750cafeb --- /dev/null +++ b/keyboards/handwired/split_cloud/config.h @@ -0,0 +1,42 @@ +/* +Copyright 2023 Cloud Chagnon + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 + +/* left/right via compilation flag */ +#define EE_HANDS + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronztize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +// #define NO_ACTION_LAYER +// #define NO_ACTION_TAPPING +// #define NO_ACTION_ONESHOT diff --git a/keyboards/handwired/split_cloud/info.json b/keyboards/handwired/split_cloud/info.json new file mode 100644 index 000000000000..6d28728f69a5 --- /dev/null +++ b/keyboards/handwired/split_cloud/info.json @@ -0,0 +1,118 @@ +{ + "keyboard_name": "Split-Cloud", + "manufacturer": "coolsa", + "maintainer": "Cloud Chagnon", + "url": "https://github.com/coolsa/cloud_keyboard", + "usb": { + "vid": "0xCC43", + "pid": "0x0001", + "device_version": "0.0.1", + "force_nkro": true + }, + "diode_direction": "ROW2COL", + "matrix_pins": { + "cols": ["B6", "B2", "B3", "B1", "F7", "F6"], + "rows": ["C6", "D7", "E6", "B4", "B5"] + }, + "bootmagic": { + "enabled": true + }, + "features": { + "extrakey": true, + "nkro": true + }, + "split": { + "enabled": true, + "soft_serial_pin": "D3", + "matrix_pins": { + "right": { + "cols": ["D4", "C6", "D7", "E6", "B4", "B5"], + "rows": ["F7", "B1", "B3", "B2", "B6"] + } + }, + "bootmagic": { + "matrix": [5, 5] + } + }, + "stenography": { + "enabled": true, + "protocol": "all" + } + "development_board": "promicro", + "community_layouts": ["ortho_5x12"], + "layouts": { + "LAYOUT_ortho_5x12": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + + {"matrix": [5, 5], "x": 7, "y": 0}, + {"matrix": [5, 4], "x": 8, "y": 0}, + {"matrix": [5, 3], "x": 9, "y": 0}, + {"matrix": [5, 2], "x": 10, "y": 0}, + {"matrix": [5, 1], "x": 11, "y": 0}, + {"matrix": [5, 0], "x": 12, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + + {"matrix": [6, 5], "x": 7, "y": 1}, + {"matrix": [6, 4], "x": 8, "y": 1}, + {"matrix": [6, 3], "x": 9, "y": 1}, + {"matrix": [6, 2], "x": 10, "y": 1}, + {"matrix": [6, 1], "x": 11, "y": 1}, + {"matrix": [6, 0], "x": 12, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + + {"matrix": [7, 5], "x": 7, "y": 2}, + {"matrix": [7, 4], "x": 8, "y": 2}, + {"matrix": [7, 3], "x": 9, "y": 2}, + {"matrix": [7, 2], "x": 10, "y": 2}, + {"matrix": [7, 1], "x": 11, "y": 2}, + {"matrix": [7, 0], "x": 12, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 5], "x": 5, "y": 3}, + + {"matrix": [8, 5], "x": 7, "y": 3}, + {"matrix": [8, 4], "x": 8, "y": 3}, + {"matrix": [8, 3], "x": 9, "y": 3}, + {"matrix": [8, 2], "x": 10, "y": 3}, + {"matrix": [8, 1], "x": 11, "y": 3}, + {"matrix": [8, 0], "x": 12, "y": 3}, + + {"matrix": [4, 0], "x": 0, "y": 4}, + {"matrix": [4, 1], "x": 1, "y": 4}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 4}, + {"matrix": [4, 4], "x": 4, "y": 4}, + {"matrix": [4, 5], "x": 5, "y": 4}, + + {"matrix": [9, 5], "x": 7, "y": 4}, + {"matrix": [9, 4], "x": 8, "y": 4}, + {"matrix": [9, 3], "x": 9, "y": 4}, + {"matrix": [9, 2], "x": 10, "y": 4}, + {"matrix": [9, 1], "x": 11, "y": 4}, + {"matrix": [9, 0], "x": 12, "y": 4} + ] + } + } +} diff --git a/keyboards/handwired/split_cloud/keymaps/default/config.h b/keyboards/handwired/split_cloud/keymaps/default/config.h new file mode 100644 index 000000000000..7a6ba5e65657 --- /dev/null +++ b/keyboards/handwired/split_cloud/keymaps/default/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2023 Cloud Chagnon + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General 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 + +/* The defaults are different for the Tri Layers */ +#define TRI_LAYER_LOWER_LAYER 3 +#define TRI_LAYER_UPPER_LAYER 4 +#define TRI_LAYER_ADJUST_LAYER 6 + diff --git a/keyboards/handwired/split_cloud/keymaps/default/keymap.c b/keyboards/handwired/split_cloud/keymaps/default/keymap.c new file mode 100644 index 000000000000..ad7e64e6ad51 --- /dev/null +++ b/keyboards/handwired/split_cloud/keymaps/default/keymap.c @@ -0,0 +1,225 @@ +/* Copyright 2023 Cloud Chagnon + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +// clang-format off + +enum layer_names { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _PLOVER, + _ADJUST +}; + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + EXT_PLV +}; + +#define ST_BOLT QK_STENO_BOLT +#define ST_GEM QK_STENO_GEMINI + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt |RCtrl |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_QWERTY] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL , + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LGUI, KC_LALT, KC_RCTL, TL_LOWR, KC_SPC, KC_SPC, TL_UPPR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt |RCtrl |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_COLEMAK] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL , + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + KC_LCTL, KC_LGUI, KC_LALT, KC_RCTL, TL_LOWR, KC_SPC, KC_SPC, TL_UPPR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt |RCtrl |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ + [_DVORAK] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_RCTL, TL_LOWR, KC_SPC, KC_SPC, TL_UPPR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + + /* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_LOWER] = LAYOUT_ortho_5x12( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL , + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | Pg Up| Pg Dn| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ + [_RAISE] = LAYOUT_ortho_5x12( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL , + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + + /* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FN | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | | E | U | PWR | RES1 | RES2 | + * `-----------------------------------------------------------------------------------' + */ + + [_PLOVER] = LAYOUT_ortho_5x12( + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , + STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , + XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + EXT_PLV, XXXXXXX, XXXXXXX, XXXXXXX, STN_A, STN_O, STN_E, STN_U, XXXXXXX, STN_PWR, STN_RE1, STN_RE2 + ), + + /* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| Debug| | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | |Aud cy|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | |TXBOLT|GEM RP| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ + [_ADJUST] = LAYOUT_ortho_5x12( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 , + _______, QK_BOOT, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , + _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, PLOVER, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ST_BOLT, ST_GEM , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; + +// clang-format on + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + case PLOVER: + if (!record->event.pressed) { + layer_on(_PLOVER); + } + return false; + case EXT_PLV: + if (record->event.pressed) { + layer_off(_PLOVER); + } + return false; + } + return true; +}; diff --git a/keyboards/handwired/split_cloud/keymaps/default/rules.mk b/keyboards/handwired/split_cloud/keymaps/default/rules.mk new file mode 100644 index 000000000000..7c9bf212a6f5 --- /dev/null +++ b/keyboards/handwired/split_cloud/keymaps/default/rules.mk @@ -0,0 +1 @@ +TRI_LAYER_ENABLE = yes diff --git a/keyboards/handwired/split_cloud/readme.md b/keyboards/handwired/split_cloud/readme.md new file mode 100644 index 000000000000..1d2731727508 --- /dev/null +++ b/keyboards/handwired/split_cloud/readme.md @@ -0,0 +1,22 @@ +# Split-Cloud handwired keyboard + +The Split-Cloud is a split ortholinear 5x12 layout, forked from the Preonic and Nyquist keyboard models. The default layout adds extra options for some added game compatibility, two control keys for QEmu, and adds a steno layer based on the Planck example. + +![Split-Cloud](https://i.imgur.com/QoHAFeXh.jpg) + +* Keyboard Maintainer: [Cloud Chagnon](https://github.com/coolsa) +* Hardware Supported: Pro Micro +* Hardware Availability: [Repository](https://github.com/coolsa/split-cloud) + +Make example for this keyboard: + + make handwired/split_cloud:default + +This keyboard uses [Handedness by EEPROM](https://docs.qmk.fm/#/feature_split_keyboard?id=handedness-by-eeprom) as default, and must be configured once on each side. The make commands are: + + make handwired/split_cloud:default:avrdude-split-left + make handwired/split_cloud:default:avrdude-split-right + +[QMK Toolbox](http://qmk.fm/toolbox) can also be used to set EEPROM handedness. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand + +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/handwired/split_cloud/rules.mk b/keyboards/handwired/split_cloud/rules.mk new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/keyboards/handwired/starrykeebs/dude09/info.json b/keyboards/handwired/starrykeebs/dude09/info.json new file mode 100644 index 000000000000..6e91adeb1ea0 --- /dev/null +++ b/keyboards/handwired/starrykeebs/dude09/info.json @@ -0,0 +1,40 @@ +{ + "manufacturer": "StarryKnight", + "keyboard_name": "Dude09", + "maintainer": "StarryKnight", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["C6", "D7", "E6"], + "rows": ["D1", "D0", "D4"] + }, + "processor": "atmega32u4", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0x534B" + }, + "community_layouts": ["ortho_3x3"], + "layouts": { + "LAYOUT_ortho_3x3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/handwired/starrykeebs/dude09/keymaps/default/keymap.c b/keyboards/handwired/starrykeebs/dude09/keymaps/default/keymap.c new file mode 100644 index 000000000000..12730d85d809 --- /dev/null +++ b/keyboards/handwired/starrykeebs/dude09/keymaps/default/keymap.c @@ -0,0 +1,17 @@ +// Copyright 2023 Starry Knight (@astarryknight) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, MO(1) + ), + [1] = LAYOUT_ortho_3x3( + QK_BOOT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/handwired/starrykeebs/dude09/keymaps/via/keymap.c b/keyboards/handwired/starrykeebs/dude09/keymaps/via/keymap.c new file mode 100644 index 000000000000..12730d85d809 --- /dev/null +++ b/keyboards/handwired/starrykeebs/dude09/keymaps/via/keymap.c @@ -0,0 +1,17 @@ +// Copyright 2023 Starry Knight (@astarryknight) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, MO(1) + ), + [1] = LAYOUT_ortho_3x3( + QK_BOOT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/handwired/starrykeebs/dude09/keymaps/via/rules.mk b/keyboards/handwired/starrykeebs/dude09/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/starrykeebs/dude09/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/starrykeebs/dude09/readme.md b/keyboards/handwired/starrykeebs/dude09/readme.md new file mode 100644 index 000000000000..12e484b57c02 --- /dev/null +++ b/keyboards/handwired/starrykeebs/dude09/readme.md @@ -0,0 +1,27 @@ +# Dude09 + +![dude09](https://i.imgur.com/sBR8L7xh.jpg) + +A simple 3x3 macropad based on the VOID9 case. + +* Keyboard Maintainer: [astarryknight](https://github.com/astarryknight) +* Hardware Supported: rp2040 (using the adafruit kb2040), firmware written for ATmega32U4 +* Hardware Availability: Amazon (https://amazon.com) & Digikey (https://https://www.digikey.com/) + +Make example for this keyboard (after setting up your build environment): + + make handwired/starrykeebs/dude09:default + +Flashing example for this keyboard: + + make handwired/starrykeebs/dude09:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/starrykeebs/dude09/rules.mk b/keyboards/handwired/starrykeebs/dude09/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/starrykeebs/dude09/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/steamvan/rev1/config.h b/keyboards/handwired/steamvan/rev1/config.h index 88323300f8aa..a779dcccabd1 100644 --- a/keyboards/handwired/steamvan/rev1/config.h +++ b/keyboards/handwired/steamvan/rev1/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/handwired/swiftrax/beegboy/config.h b/keyboards/handwired/swiftrax/beegboy/config.h deleted file mode 100644 index 092f2ba0e990..000000000000 --- a/keyboards/handwired/swiftrax/beegboy/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2020 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/handwired/swiftrax/cowfish/config.h b/keyboards/handwired/swiftrax/cowfish/config.h deleted file mode 100644 index 092f2ba0e990..000000000000 --- a/keyboards/handwired/swiftrax/cowfish/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2020 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/handwired/swiftrax/glacier/config.h b/keyboards/handwired/swiftrax/glacier/config.h deleted file mode 100644 index 7f9b0b12d498..000000000000 --- a/keyboards/handwired/swiftrax/glacier/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2021 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/handwired/swiftrax/joypad/config.h b/keyboards/handwired/swiftrax/joypad/config.h deleted file mode 100644 index 092f2ba0e990..000000000000 --- a/keyboards/handwired/swiftrax/joypad/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2020 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/handwired/swiftrax/koalafications/config.h b/keyboards/handwired/swiftrax/koalafications/config.h deleted file mode 100644 index 7435ce54aff3..000000000000 --- a/keyboards/handwired/swiftrax/koalafications/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2021 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/nodu/config.h b/keyboards/handwired/swiftrax/nodu/config.h deleted file mode 100644 index 6726795c452a..000000000000 --- a/keyboards/handwired/swiftrax/nodu/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2020 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 \ No newline at end of file diff --git a/keyboards/handwired/swiftrax/pandamic/config.h b/keyboards/handwired/swiftrax/pandamic/config.h deleted file mode 100644 index 092f2ba0e990..000000000000 --- a/keyboards/handwired/swiftrax/pandamic/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2020 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/handwired/swiftrax/the_galleon/config.h b/keyboards/handwired/swiftrax/the_galleon/config.h deleted file mode 100644 index 7f9b0b12d498..000000000000 --- a/keyboards/handwired/swiftrax/the_galleon/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2021 Swiftrax - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 - -/*EEPROM for via*/ -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 diff --git a/keyboards/handwired/swiftrax/the_galleon/info.json b/keyboards/handwired/swiftrax/the_galleon/info.json index b12fc5c31f48..2e0771e22c65 100644 --- a/keyboards/handwired/swiftrax/the_galleon/info.json +++ b/keyboards/handwired/swiftrax/the_galleon/info.json @@ -13,6 +13,9 @@ "rows": ["B1", "B0", "D2", "B7", "D5", "D3", "D6", "D4", "B4", "D7", "B6", "B5", "C7", "C6"] }, "diode_direction": "ROW2COL", + "dynamic_keymap": { + "layer_count": 3 + }, "processor": "atmega32u4", "bootloader": "atmel-dfu", "layouts": { diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/config.h b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/config.h deleted file mode 100644 index d7bc0f5bd589..000000000000 --- a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/config.h +++ /dev/null @@ -1,35 +0,0 @@ -/* 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 USE_I2C -// #define SELECT_SOFT_SERIAL_SPEED 1 -#define SPLIT_MODS_ENABLE -#define EE_HANDS - -#define TRACKBALL_DPI_OPTIONS { 1200, 1800, 2600, 3400 } - -#define RGBLIGHT_MAX_BRIGHTNESS 60 - -#undef DEBOUNCE -#define DEBOUNCE 10 - -#define SOLENOID_PIN F1 -#define SOLENOID_DEFAULT_DWELL 8 - -#define OLED_DISPLAY_128X64 -#define OLED_BRIGHTNESS 50 diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c deleted file mode 100644 index a7d7528dfb71..000000000000 --- a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" - -// clang-format off -#define LAYOUT_4x6_right_wrapper(...) LAYOUT_4x6_right(__VA_ARGS__) -#define LAYOUT_4x6_right_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_4x6_right_wrapper( \ - SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ - LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ - OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ - OS_LGUI, OS_LALT, OS_RGUI, OS_RALT, \ - KC_PSCR, KC_GRV, MEH_T(KC_BTN3), \ - KC_SPC, OS_LGUI, KC_ENT, \ - BK_LWER, TT(_MOUSE), TT(_MOUSE), DL_RAIS \ - ) -#define LAYOUT_base_wrapper(...) LAYOUT_4x6_right_base(__VA_ARGS__) - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( - ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, - ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, - ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ - ), - [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_MOUSE] = LAYOUT_4x6_right( - _______, _______, _______, _______, _______, _______, KC_WH_U, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG, - _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING, - _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, - _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_GAMEPAD] = LAYOUT_4x6_right( - KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, - KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______, - KC_I, KC_T, TG_GAME, KC_NO, - KC_V, KC_O, _______, - KC_SPC, KC_P, _______, - KC_H, KC_LGUI, _______, _______ - ), - [_DIABLO] = LAYOUT_4x6_right( - KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______, - KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______, - KC_F, KC_L, KC_NO, TG_DBLO, - KC_DIABLO_CLEAR, KC_F, _______, - SFT_T(KC_SPC), KC_J, _______, - ALT_T(KC_Q), KC_LGUI, _______, _______ - ), - [_LOWER] = LAYOUT_4x6_right_wrapper( - KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11, - _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, - _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_RAISE] = LAYOUT_4x6_right_wrapper( - KC_F12, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_F11, - _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_ADJUST] = LAYOUT_4x6_right_wrapper( - QK_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, QK_BOOT, - VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EE_CLR, - UC_NEXT, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS, - HF_DWLU, HF_DWLD, TG_GAME, TG_DBLO, - HF_TOGG, HF_BUZZ, KC_NUKE, - _______, _______, _______, - _______, _______, KC_NUKE, _______ - ), -}; -// clang-format on diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk b/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk deleted file mode 100644 index d2d2a9b874d7..000000000000 --- a/keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk +++ /dev/null @@ -1,8 +0,0 @@ -RGBLIGHT_STARTUP_ANIMATION = yes -AUDIO_ENABLE = yes -HAPTIC_ENABLE = no -COMMAND_ENABLE = no -TAP_DANCE_ENABLE = yes -UNICODE_ENABLE = yes -OLED_ENABLE = yes -WPM_ENABLE = yes diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json index 62fa261ac72c..eafb77fce2ba 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json @@ -5,6 +5,9 @@ "rows": ["B10", "B11", "B12", "A14", "A13", "A15"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "spi" + }, "rgblight": { "led_count": 20, "split_count": [10, 10] diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk index 3959814c8dd0..ab601e31f9aa 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/rules.mk @@ -1,6 +1,5 @@ # KEYBOARD_SHARED_EP = yes CONSOLE_ENABLE = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart AUDIO_DRIVER = dac_additive diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json index 3f0c316928bd..e5a6dc6c7a2b 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json @@ -5,6 +5,9 @@ "rows": ["B12", "B13", "B14", "B15", "A8", "A10"] }, "diode_direction": "COL2ROW", + "eeprom": { + "driver": "spi" + }, "rgblight": { "led_count": 57, "split_count": [26, 31] diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk index b466a6234adb..0c4b05ee7e24 100644 --- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk +++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk @@ -2,6 +2,5 @@ KEYBOARD_SHARED_EP = yes CONSOLE_ENABLE = yes MOUSE_SHARED_EP = yes -EEPROM_DRIVER = spi SERIAL_DRIVER = usart AUDIO_DRIVER = pwm_hardware diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h deleted file mode 100644 index 5cb2a76de232..000000000000 --- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h +++ /dev/null @@ -1,36 +0,0 @@ -/* 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 - -#undef OLED_DISPLAY_128X64 -#define OLED_DISPLAY_128X128 -#define OLED_BRIGHTNESS 200 - -#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200 -#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200 -#define CHARYBDIS_MINIMUM_SNIPING_DPI 400 -#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200 - -#define BOOTMAGIC_LITE_EEPROM_ROW 1 -#define BOOTMAGIC_LITE_EEPROM_COLUMN 0 -#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 7 -#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 5 - - -#define DRV2605L_FB_ERM_LRA 0 -#define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100 -#define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_BUZZ_1_100 diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c deleted file mode 100644 index 380e17fb09f3..000000000000 --- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c +++ /dev/null @@ -1,161 +0,0 @@ -/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "drashna.h" - -// clang-format off -#define LAYOUT_5x6_right_wrapper(...) LAYOUT_5x6_right(__VA_ARGS__) -#define LAYOUT_5x6_right_base( \ - K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ - K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ - K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ - ) \ - LAYOUT_5x6_right_wrapper( \ - KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, UC_CLUE, \ - SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ - LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ - OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ - OS_LALT, OS_LGUI, OS_RGUI, OS_RALT, \ - KC_MUTE, KC_GRV, KC_BTN3, \ - KC_SPC, UC_IRNY, KC_ENT, \ - BK_LWER, TT(_MOUSE), TT(_MOUSE), DL_RAIS \ - ) -#define LAYOUT_base_wrapper(...) LAYOUT_5x6_right_base(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ - ), - - [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper( - ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________, - ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________, - ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________ - ), - [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper( - _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, - _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, - _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ - ), - - [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper( - _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, - _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, - _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ - ), - - [_GAMEPAD] = LAYOUT_5x6_right( - KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______, - KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______, - KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______, - KC_I, KC_T, TG_GAME, KC_NO, - KC_V, KC_O, _______, - KC_SPC, KC_P, _______, - KC_H, KC_LGUI, _______, _______ - ), - [_DIABLO] = LAYOUT_5x6_right( - KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, - KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______, - KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______, - KC_F, KC_L, KC_NO, TG_DBLO, - KC_DIABLO_CLEAR, KC_F, _______, - SFT_T(KC_SPC), KC_J, _______, - ALT_T(KC_Q), KC_LGUI, _______, _______ - ), - [_DIABLOII] = LAYOUT_5x6_right( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, _______, _______, _______, _______, _______, - KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, _______, _______, _______, _______, _______, _______, - KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, _______, _______, - KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, - KC_F, KC_L, KC_NO, TG(_DIABLOII), - _______, KC_G, _______, - KC_LSFT, _______, _______, - KC_LCTL, KC_V, _______, _______ - ), - [_MOUSE] = LAYOUT_5x6_right( - _______, _______, _______, _______, _______, _______, _______, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, PD_JIGGLER, - _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, DRGSCRL, - _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING, - _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______, - _______, _______, _______, _______, - _______, _______, KC_BTN3, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_LOWER] = LAYOUT_5x6_right_wrapper( - KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, - _______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______, - _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE, - _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______, - _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_RAISE] = LAYOUT_5x6_right_wrapper( - KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11, - KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______, - _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS, - _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______, - _______, _______, _______, _______, - OL_LOCK, _______, _______, - _______, _______, _______, - _______, _______, _______, _______ - ), - [_ADJUST] = LAYOUT_5x6_right_wrapper( - QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, QK_BOOT, - VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EE_CLR, - KEYLOCK, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS, - UC_NEXT, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY, - TG(_DIABLOII), AUTO_CTN, TG_GAME, TG_DBLO, - _______, QK_RBT, KC_NUKE, - HF_TOGG, _______, _______, - _______, _______, KC_NUKE, _______ - ), -}; -// clang-format on - -#ifdef ENCODER_MAP_ENABLE -// clang-format off -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_DEFAULT_LAYER_1] = { ENCODER_CCW_CW( KC_VOLU, KC_VOLD ), ENCODER_CCW_CW( KC_WH_U, KC_WH_D ) }, - [_DEFAULT_LAYER_2] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) }, - [_DEFAULT_LAYER_3] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) }, - [_DEFAULT_LAYER_4] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) }, - [_GAMEPAD] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) }, - [_DIABLO] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) }, - [_MOUSE] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) }, - [_MEDIA] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) }, - [_RAISE] = { ENCODER_CCW_CW( OL_BINC, OL_BDEC ), ENCODER_CCW_CW( KC_PGDN, KC_PGUP ) }, - [_LOWER] = { ENCODER_CCW_CW( RGB_MOD, RGB_RMOD), ENCODER_CCW_CW( RGB_HUI, RGB_HUD ) }, - [_ADJUST] = { ENCODER_CCW_CW( CK_UP, CK_DOWN ), ENCODER_CCW_CW( _______, _______ ) }, -}; -// clang-format on -#endif - -#ifdef OLED_ENABLE -oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { - return OLED_ROTATION_180; -} - -void render_oled_title(bool side) { - oled_write_P(side ? PSTR(" Tractyl ") : PSTR(" Manuform "), true); -} -#endif diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rgblight_breathe_table.h b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rgblight_breathe_table.h deleted file mode 100644 index fb921079bfb9..000000000000 --- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rgblight_breathe_table.h +++ /dev/null @@ -1,117 +0,0 @@ -#pragma once - -#define RGBLIGHT_EFFECT_BREATHE_TABLE - -// clang-format off - -// Breathing center: 1.85 -// Breathing max: 100 - -const uint8_t PROGMEM rgblight_effect_breathe_table[] = { -#if RGBLIGHT_BREATHE_TABLE_SIZE == 256 - 0x0D, 0x0E, 0x0E, 0x0F, 0x0F, 0x10, 0x10, 0x11, - 0x11, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x16, - 0x16, 0x17, 0x18, 0x18, 0x19, 0x19, 0x1A, 0x1B, - 0x1B, 0x1C, 0x1D, 0x1E, 0x1E, 0x1F, 0x20, 0x20, - 0x21, 0x22, 0x22, 0x23, 0x24, 0x25, 0x25, 0x26, - 0x27, 0x28, 0x28, 0x29, 0x2A, 0x2B, 0x2B, 0x2C, - 0x2D, 0x2E, 0x2E, 0x2F, 0x30, 0x31, 0x31, 0x32, - 0x33, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, - 0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3D, 0x3E, - 0x3F, 0x40, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, - 0x44, 0x45, 0x46, 0x46, 0x47, 0x48, 0x48, 0x49, - 0x4A, 0x4A, 0x4B, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D, - 0x4E, 0x4E, 0x4F, 0x4F, 0x50, 0x50, 0x51, 0x51, - 0x51, 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, - 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, - 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, - 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, - 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, - 0x54, 0x54, 0x53, 0x53, 0x53, 0x52, 0x52, 0x51, - 0x51, 0x51, 0x50, 0x50, 0x4F, 0x4F, 0x4E, 0x4E, - 0x4D, 0x4D, 0x4C, 0x4C, 0x4B, 0x4B, 0x4A, 0x4A, - 0x49, 0x48, 0x48, 0x47, 0x46, 0x46, 0x45, 0x44, - 0x44, 0x43, 0x42, 0x42, 0x41, 0x40, 0x40, 0x3F, - 0x3E, 0x3D, 0x3D, 0x3C, 0x3B, 0x3B, 0x3A, 0x39, - 0x38, 0x38, 0x37, 0x36, 0x35, 0x34, 0x34, 0x33, - 0x32, 0x31, 0x31, 0x30, 0x2F, 0x2E, 0x2E, 0x2D, - 0x2C, 0x2B, 0x2B, 0x2A, 0x29, 0x28, 0x28, 0x27, - 0x26, 0x25, 0x25, 0x24, 0x23, 0x22, 0x22, 0x21, - 0x20, 0x20, 0x1F, 0x1E, 0x1E, 0x1D, 0x1C, 0x1B, - 0x1B, 0x1A, 0x19, 0x19, 0x18, 0x18, 0x17, 0x16, - 0x16, 0x15, 0x14, 0x14, 0x13, 0x13, 0x12, 0x11, - 0x11, 0x10, 0x10, 0x0F, 0x0F, 0x0E, 0x0E, 0x0D -#endif - -#if RGBLIGHT_BREATHE_TABLE_SIZE == 128 - 0x0D, 0x0E, 0x0F, 0x10, - 0x11, 0x13, 0x14, 0x15, - 0x16, 0x18, 0x19, 0x1A, - 0x1B, 0x1D, 0x1E, 0x20, - 0x21, 0x22, 0x24, 0x25, - 0x27, 0x28, 0x2A, 0x2B, - 0x2D, 0x2E, 0x30, 0x31, - 0x33, 0x34, 0x36, 0x38, - 0x39, 0x3B, 0x3C, 0x3D, - 0x3F, 0x40, 0x42, 0x43, - 0x44, 0x46, 0x47, 0x48, - 0x4A, 0x4B, 0x4C, 0x4D, - 0x4E, 0x4F, 0x50, 0x51, - 0x51, 0x52, 0x53, 0x54, - 0x54, 0x55, 0x55, 0x55, - 0x56, 0x56, 0x56, 0x56, - 0x56, 0x56, 0x56, 0x56, - 0x56, 0x55, 0x55, 0x54, - 0x54, 0x53, 0x53, 0x52, - 0x51, 0x50, 0x4F, 0x4E, - 0x4D, 0x4C, 0x4B, 0x4A, - 0x49, 0x48, 0x46, 0x45, - 0x44, 0x42, 0x41, 0x40, - 0x3E, 0x3D, 0x3B, 0x3A, - 0x38, 0x37, 0x35, 0x34, - 0x32, 0x31, 0x2F, 0x2E, - 0x2C, 0x2B, 0x29, 0x28, - 0x26, 0x25, 0x23, 0x22, - 0x20, 0x1F, 0x1E, 0x1C, - 0x1B, 0x19, 0x18, 0x17, - 0x16, 0x14, 0x13, 0x12, - 0x11, 0x10, 0x0F, 0x0E -#endif - -#if RGBLIGHT_BREATHE_TABLE_SIZE == 64 - 0x0D, 0x0F, - 0x11, 0x14, - 0x16, 0x19, - 0x1B, 0x1E, - 0x21, 0x24, - 0x27, 0x2A, - 0x2D, 0x30, - 0x33, 0x36, - 0x39, 0x3C, - 0x3F, 0x42, - 0x44, 0x47, - 0x4A, 0x4C, - 0x4E, 0x50, - 0x51, 0x53, - 0x54, 0x55, - 0x56, 0x56, - 0x56, 0x56, - 0x56, 0x55, - 0x54, 0x53, - 0x51, 0x4F, - 0x4D, 0x4B, - 0x49, 0x46, - 0x44, 0x41, - 0x3E, 0x3B, - 0x38, 0x35, - 0x32, 0x2F, - 0x2C, 0x29, - 0x26, 0x23, - 0x20, 0x1E, - 0x1B, 0x18, - 0x16, 0x13, - 0x11, 0x0F -#endif -}; - -static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table); diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk deleted file mode 100644 index 1cf7a3fccfaa..000000000000 --- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk +++ /dev/null @@ -1,54 +0,0 @@ -AUTOCORRECT_ENABLE = no -AUDIO_ENABLE = no -ENCODER_ENABLE = no -CUSTOM_BOOTMAGIC_ENABLE = no -CUSTOM_UNICODE_ENABLE = no -HAPTIC_ENABLE = no -OLED_ENABLE = no -RGBLIGHT_ENABLE = no -SWAP_HANDS_ENABLE = no -TAP_DANCE_ENABLE = no -WPM_ENABLE = no - -ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/elite_c) - BOOTLOADER = qmk-hid - BOOTLOADER_SIZE = 512 - CUSTOM_SPLIT_TRANSPORT_SYNC = no - LTO_ENABLE = yes - MOUSEKEY_ENABLE = no -endif -ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/arduinomicro) - BOOTLOADER = qmk-hid - BOOTLOADER_SIZE = 512 - CUSTOM_SPLIT_TRANSPORT_SYNC = no - LTO_ENABLE = yes - MOUSEKEY_ENABLE = no -endif -ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/teensy2pp) - AUTOCORRECT_ENABLE = no - OVERLOAD_FEATURES = yes - LTO_ENABLE = yes -endif -ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/f411) - BOOTLOADER = tinyuf2 - AUTOCORRECT_ENABLE = yes - LTO_SUPPORTED = no - OVERLOAD_FEATURES = yes - HAPTIC_ENABLE = yes - HAPTIC_DRIVER = drv2605l -endif - -ifeq ($(strip $(OVERLOAD_FEATURES)), yes) - AUDIO_ENABLE = yes - CAPS_WORD_ENABLE = yes - CUSTOM_BOOTMAGIC_ENABLE = yes - CUSTOM_UNICODE_ENABLE = yes - ENCODER_ENABLE = yes - ENCODER_MAP_ENABLE = yes - OLED_ENABLE = yes - RGBLIGHT_ENABLE = yes - RGBLIGHT_STARTUP_ANIMATION = yes - TAP_DANCE_ENABLE = yes - SWAP_HANDS_ENABLE = yes - WPM_ENABLE = yes -endif diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c index 2cd57db35f10..5d2a3b3750d0 100644 --- a/keyboards/handwired/traveller/keymaps/default/keymap.c +++ b/keyboards/handwired/traveller/keymaps/default/keymap.c @@ -1,5 +1,4 @@ #include QMK_KEYBOARD_H -#include "mousekey.h" enum layer_names { _QW, diff --git a/keyboards/handwired/tsubasa/config.h b/keyboards/handwired/tsubasa/config.h index 52b64de9f631..a2cd2dafe662 100644 --- a/keyboards/handwired/tsubasa/config.h +++ b/keyboards/handwired/tsubasa/config.h @@ -17,6 +17,3 @@ along with this program. If not, see . #pragma once #define MASTER_RIGHT - -#define SPLIT_WPM_ENABLE -#define SPLIT_LAYER_STATE_ENABLE diff --git a/keyboards/handwired/tsubasa/info.json b/keyboards/handwired/tsubasa/info.json index 245afe30cc40..62c418c9956e 100644 --- a/keyboards/handwired/tsubasa/info.json +++ b/keyboards/handwired/tsubasa/info.json @@ -38,6 +38,12 @@ {"pin_a": "F4", "pin_b": "F5"} ] } + }, + "transport": { + "sync": { + "layer_state": true, + "wpm": true + } } }, "layouts": { diff --git a/keyboards/handwired/wabi/keymaps/rossman360/keymap.c b/keyboards/handwired/wabi/keymaps/rossman360/keymap.c deleted file mode 100644 index 3bd46bf1914b..000000000000 --- a/keyboards/handwired/wabi/keymaps/rossman360/keymap.c +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright 2020 Ross Montsinger -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General 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 "rossman360.h" - -#define PGMOD LT(_NUM, KC_PGDN) -#define TABMOD LT(_FN1, KC_TAB) -#define SPCMOD LT(_FN1, KC_SPACE) -#define ENTMOD LT(_FN2, KC_ENTER) -#define RSMOD LT(_FN1, KC_MINS) - -enum layer_names { - _BASE, - _DEL, - _FN1, - _FN2, - _NUM, -}; - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_BASE] = LAYOUT( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - JUMPBACK,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, RSMOD , KC_UP, - CMDBSP, ALTDEL, CTRLSP, TABMOD, PGMOD , ENTMOD , SPCMOD , MO(_DEL), KC_LEFT, KC_DOWN, KC_RGHT - ), -[_DEL] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - REMCAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, BLINE , KC_BSPC, BWORD , KC_NO , KC_NO , _______, _______, _______, _______ - ), -[_FN1] = LAYOUT( - QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NTAB, - _______, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, _______, _______, KC_SLSH, - _______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_UP , KC_RIGHT,KC_END , _______, CTAB, - _______, _______, XPANDR , _______, PMERGE , _______, _______, PMERGE , KC_DOWN, _______, _______, _______, _______, - _______, _______, _______, LWORD , RWORD , KC_NO , _______, KC_NO , _______, _______, _______ - ), -[_FN2] = LAYOUT( - _______, SPEAK1 , SPEAK2 , SPEAK3 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, PARADOWN, CSPEAK, _______, _______, _______, _______, _______, _______ - ), -[_NUM] = LAYOUT( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_7 , KC_8 , KC_9 , _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, KC_MINS, KC_4 , KC_5 , KC_6 , KC_COLN, _______, _______, - _______, _______, _______, _______, _______, _______, _______, KC_1 , KC_2 , KC_3 , KC_BSLS, _______, _______, - _______, _______, _______, KC_0 , _______, KC_NO , KC_SPC , KC_0 , _______, _______, _______ - ), -}; diff --git a/keyboards/handwired/wwa/helios/info.json b/keyboards/handwired/wwa/helios/info.json new file mode 100644 index 000000000000..64b201039640 --- /dev/null +++ b/keyboards/handwired/wwa/helios/info.json @@ -0,0 +1,44 @@ +{ + "manufacturer": "spacehangover", + "keyboard_name": "Helios", + "maintainer": "spacehangover", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3"], + "rows": ["GP4", "GP5", "GP6"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x5757" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/wwa/helios/keymaps/default/keymap.c b/keyboards/handwired/wwa/helios/keymaps/default/keymap.c new file mode 100644 index 000000000000..adedb063f483 --- /dev/null +++ b/keyboards/handwired/wwa/helios/keymaps/default/keymap.c @@ -0,0 +1,12 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20, + KC_F21, KC_F22, KC_F23, KC_F24 + ) +}; diff --git a/keyboards/handwired/wwa/helios/keymaps/via/keymap.c b/keyboards/handwired/wwa/helios/keymaps/via/keymap.c new file mode 100644 index 000000000000..adedb063f483 --- /dev/null +++ b/keyboards/handwired/wwa/helios/keymaps/via/keymap.c @@ -0,0 +1,12 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20, + KC_F21, KC_F22, KC_F23, KC_F24 + ) +}; diff --git a/keyboards/handwired/wwa/helios/keymaps/via/rules.mk b/keyboards/handwired/wwa/helios/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/handwired/wwa/helios/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/wwa/helios/readme.md b/keyboards/handwired/wwa/helios/readme.md new file mode 100644 index 000000000000..9d59c6e0ef9a --- /dev/null +++ b/keyboards/handwired/wwa/helios/readme.md @@ -0,0 +1,27 @@ +# helios + +![helios](https://i.imgur.com/QfTTROZh.jpeg) + +First model of the Argentinian based keyboard manufacturer WWA + +* Keyboard Maintainer: [spacehangover](https://github.com/spacehangover) +* Hardware Supported: RP2040 Handwired +* Hardware Availability: RP2040 Pico + +Make example for this keyboard (after setting up your build environment): + + make handwired/wwa/helios:default + +Flashing example for this keyboard: + + make handwired/wwa/helios:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/wwa/helios/rules.mk b/keyboards/handwired/wwa/helios/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/wwa/helios/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/wwa/kepler/info.json b/keyboards/handwired/wwa/kepler/info.json new file mode 100644 index 000000000000..f962d632b444 --- /dev/null +++ b/keyboards/handwired/wwa/kepler/info.json @@ -0,0 +1,56 @@ +{ + "manufacturer": "spacehangover", + "keyboard_name": "Kepler", + "maintainer": "spacehangover", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7"], + "rows": ["GP9", "GP10", "GP11"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0x5757" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/handwired/wwa/kepler/keymaps/default/keymap.c b/keyboards/handwired/wwa/kepler/keymaps/default/keymap.c new file mode 100644 index 000000000000..7bfecd071744 --- /dev/null +++ b/keyboards/handwired/wwa/kepler/keymaps/default/keymap.c @@ -0,0 +1,12 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, + KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 + ) +}; diff --git a/keyboards/handwired/wwa/kepler/keymaps/via/keymap.c b/keyboards/handwired/wwa/kepler/keymaps/via/keymap.c new file mode 100644 index 000000000000..7bfecd071744 --- /dev/null +++ b/keyboards/handwired/wwa/kepler/keymaps/via/keymap.c @@ -0,0 +1,12 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, + KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, + KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 + ) +}; diff --git a/keyboards/handwired/wwa/kepler/keymaps/via/rules.mk b/keyboards/handwired/wwa/kepler/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/handwired/wwa/kepler/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/handwired/wwa/kepler/readme.md b/keyboards/handwired/wwa/kepler/readme.md new file mode 100644 index 000000000000..38e8c4fa02ac --- /dev/null +++ b/keyboards/handwired/wwa/kepler/readme.md @@ -0,0 +1,28 @@ +# kepler + +![kepler](https://i.imgur.com/UD1J92Eh.jpeg) + +Second model of the Argentinian based keyboard manufacturer WWA + +* Keyboard Maintainer: [spacehangover](https://github.com/spacehangover) +* Hardware Supported: RP2040 Handwired +* Hardware Availability: RP2040 Pico + + +Make example for this keyboard (after setting up your build environment): + + make handwired/wwa/kepler:default + +Flashing example for this keyboard: + + make handwired/wwa/kepler:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/wwa/kepler/rules.mk b/keyboards/handwired/wwa/kepler/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/wwa/kepler/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/handwired/ziyoulang_k3_mod/info.json b/keyboards/handwired/ziyoulang_k3_mod/info.json new file mode 100644 index 000000000000..127cc51299c9 --- /dev/null +++ b/keyboards/handwired/ziyoulang_k3_mod/info.json @@ -0,0 +1,142 @@ +{ + "keyboard_name": "ziyoulang k3 mod", + "development_board": "bluepill", + "usb": { + "device_version": "1.0.0", + "pid": "0xE002", + "vid": "0x5006" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false + }, + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 3 + }, + "matrix_pins": { + "cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "A10", "A9", "A8", "B15", "B14", "B13", "B12", "B1", "B0", "A7", "A6", "A5", "A4"], + "rows": ["C14", "C15", "A0", "A1", "A2", "A3"] + }, + "community_layouts": ["96_ansi"], + "layouts": { + "LAYOUT_96_ansi": { + "layout": [ + {"label":"Esc", "x":0, "y":0, "matrix": [0, 0]}, + {"label":"F1", "x":1, "y":0, "matrix": [0, 2]}, + {"label":"F2", "x":2, "y":0, "matrix": [0, 3]}, + {"label":"F3", "x":3, "y":0, "matrix": [0, 4]}, + {"label":"F4", "x":4, "y":0, "matrix": [0, 5]}, + {"label":"F5", "x":5, "y":0, "matrix": [0, 6]}, + {"label":"F6", "x":6, "y":0, "matrix": [0, 7]}, + {"label":"F7", "x":7, "y":0, "matrix": [0, 8]}, + {"label":"F8", "x":8, "y":0, "matrix": [0, 9]}, + {"label":"F9", "x":9, "y":0, "matrix": [0, 10]}, + {"label":"F10", "x":10, "y":0, "matrix": [0, 11]}, + {"label":"F11", "x":11, "y":0, "matrix": [0, 12]}, + {"label":"F12", "x":12, "y":0, "matrix": [0, 13]}, + {"label":"PrtSc", "x":13, "y":0, "matrix": [0, 14]}, + {"label":"Delete", "x":14, "y":0, "matrix": [0, 15]}, + {"label":"Home", "x":15.5, "y":0, "matrix": [0, 16]}, + {"label":"Insert", "x":16.5, "y":0, "matrix": [0, 17]}, + {"label":"PgUp", "x":17.5, "y":0, "matrix": [0, 18]}, + {"label":"PgDn", "x":18.5, "y":0, "matrix": [0, 19]}, + + {"label":"~", "x":0, "y":1.25, "matrix": [1, 0]}, + {"label":"!", "x":1, "y":1.25, "matrix": [1, 1]}, + {"label":"@", "x":2, "y":1.25, "matrix": [1, 2]}, + {"label":"#", "x":3, "y":1.25, "matrix": [1, 3]}, + {"label":"$", "x":4, "y":1.25, "matrix": [1, 4]}, + {"label":"%", "x":5, "y":1.25, "matrix": [1, 5]}, + {"label":"^", "x":6, "y":1.25, "matrix": [1, 6]}, + {"label":"&", "x":7, "y":1.25, "matrix": [1, 7]}, + {"label":"*", "x":8, "y":1.25, "matrix": [1, 8]}, + {"label":"(", "x":9, "y":1.25, "matrix": [1, 9]}, + {"label":")", "x":10, "y":1.25, "matrix": [1, 10]}, + {"label":"_", "x":11, "y":1.25, "matrix": [1, 11]}, + {"label":"+", "x":12, "y":1.25, "matrix": [1, 12]}, + {"label":"Backspace", "x":13, "y":1.25, "w":2, "matrix": [1, 13]}, + {"label":"Num Lock", "x":15.5, "y":1.25, "matrix": [1, 17]}, + {"label":"/", "x":16.5, "y":1.25, "matrix": [1, 18]}, + {"label":"*", "x":17.5, "y":1.25, "matrix": [1, 19]}, + {"label":"-", "x":18.5, "y":1.25, "matrix": [1, 20]}, + + {"label":"Tab", "x":0, "y":2.25, "w":1.5, "matrix": [2, 0]}, + {"label":"Q", "x":1.5, "y":2.25, "matrix": [2, 1]}, + {"label":"W", "x":2.5, "y":2.25, "matrix": [2, 2]}, + {"label":"E", "x":3.5, "y":2.25, "matrix": [2, 3]}, + {"label":"R", "x":4.5, "y":2.25, "matrix": [2, 4]}, + {"label":"T", "x":5.5, "y":2.25, "matrix": [2, 5]}, + {"label":"Y", "x":6.5, "y":2.25, "matrix": [2, 6]}, + {"label":"U", "x":7.5, "y":2.25, "matrix": [2, 7]}, + {"label":"I", "x":8.5, "y":2.25, "matrix": [2, 8]}, + {"label":"O", "x":9.5, "y":2.25, "matrix": [2, 9]}, + {"label":"P", "x":10.5, "y":2.25, "matrix": [2, 10]}, + {"label":"{", "x":11.5, "y":2.25, "matrix": [2, 11]}, + {"label":"}", "x":12.5, "y":2.25, "matrix": [2, 12]}, + {"label":"|", "x":13.5, "y":2.25, "w":1.5, "matrix": [2, 13]}, + {"label":"7", "x":15.5, "y":2.25, "matrix": [2, 17]}, + {"label":"8", "x":16.5, "y":2.25, "matrix": [2, 18]}, + {"label":"9", "x":17.5, "y":2.25, "matrix": [2, 19]}, + {"label":"+", "x":18.5, "y":2.25, "h":2, "matrix": [2, 20]}, + + {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75, "matrix": [3, 0]}, + {"label":"A", "x":1.75, "y":3.25, "matrix": [3, 2]}, + {"label":"S", "x":2.75, "y":3.25, "matrix": [3, 3]}, + {"label":"D", "x":3.75, "y":3.25, "matrix": [3, 4]}, + {"label":"F", "x":4.75, "y":3.25, "matrix": [3, 5]}, + {"label":"G", "x":5.75, "y":3.25, "matrix": [3, 6]}, + {"label":"H", "x":6.75, "y":3.25, "matrix": [3, 7]}, + {"label":"J", "x":7.75, "y":3.25, "matrix": [3, 8]}, + {"label":"K", "x":8.75, "y":3.25, "matrix": [3, 9]}, + {"label":"L", "x":9.75, "y":3.25, "matrix": [3, 10]}, + {"label":":", "x":10.75, "y":3.25, "matrix": [3, 11]}, + {"label":"\"", "x":11.75, "y":3.25, "matrix": [3, 12]}, + {"label":"Enter", "x":12.75, "y":3.25, "w":2.25, "matrix": [3, 13]}, + {"label":"4", "x":15.5, "y":3.25, "matrix": [3, 17]}, + {"label":"5", "x":16.5, "y":3.25, "matrix": [3, 18]}, + {"label":"6", "x":17.5, "y":3.25, "matrix": [3, 19]}, + + {"label":"Shift", "x":0, "y":4.25, "w":2.25, "matrix": [4, 0]}, + {"label":"Z", "x":2.25, "y":4.25, "matrix": [4, 2]}, + {"label":"X", "x":3.25, "y":4.25, "matrix": [4, 3]}, + {"label":"C", "x":4.25, "y":4.25, "matrix": [4, 4]}, + {"label":"V", "x":5.25, "y":4.25, "matrix": [4, 5]}, + {"label":"B", "x":6.25, "y":4.25, "matrix": [4, 6]}, + {"label":"N", "x":7.25, "y":4.25, "matrix": [4, 7]}, + {"label":"M", "x":8.25, "y":4.25, "matrix": [4, 8]}, + {"label":"<", "x":9.25, "y":4.25, "matrix": [4, 9]}, + {"label":">", "x":10.25, "y":4.25, "matrix": [4, 10]}, + {"label":"?", "x":11.25, "y":4.25, "matrix": [4, 11]}, + {"label":"Shift", "x":12.25, "y":4.25, "w":1.75, "matrix": [4, 13]}, + {"label":"1", "x":15.5, "y":4.25, "matrix": [4, 17]}, + {"label":"2", "x":16.5, "y":4.25, "matrix": [4, 18]}, + {"label":"3", "x":17.5, "y":4.25, "matrix": [4, 19]}, + {"label":"Enter", "x":18.5, "y":4.25, "h":2, "matrix": [4, 20]}, + + {"label":"\u2191", "x":14.25, "y":4.5, "matrix": [4, 15]}, + + {"label":"Ctrl", "x":0, "y":5.25, "w":1.25, "matrix": [5, 0]}, + {"label":"Win", "x":1.25, "y":5.25, "w":1.25, "matrix": [5, 2]}, + {"label":"Alt", "x":2.5, "y":5.25, "w":1.25, "matrix": [5, 3]}, + {"x":3.75, "y":5.25, "w":6.25, "matrix": [5, 6]}, + {"label":"Alt", "x":10, "y":5.25, "matrix": [5, 10]}, + {"label":"Fn", "x":11, "y":5.25, "matrix": [5, 11]}, + {"label":"Ctrl", "x":12, "y":5.25, "matrix": [5, 13]}, + {"label":"0", "x":16.5, "y":5.25, "matrix": [5, 17]}, + {"label":".", "x":17.5, "y":5.25, "matrix": [5, 19]}, + + {"label":"\u2190", "x":13.25, "y":5.5, "matrix": [5, 14]}, + {"label":"\u2193", "x":14.25, "y":5.5, "matrix": [5, 15]}, + {"label":"\u2192", "x":15.25, "y":5.5, "matrix": [5, 16]} + ] + } + }, + "manufacturer": "Coom", + "maintainer": "coomstoolbox", + "url": "" +} \ No newline at end of file diff --git a/keyboards/handwired/ziyoulang_k3_mod/keymaps/default/keymap.c b/keyboards/handwired/ziyoulang_k3_mod/keymaps/default/keymap.c new file mode 100644 index 000000000000..6cd7d8640368 --- /dev/null +++ b/keyboards/handwired/ziyoulang_k3_mod/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┐ + * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Del│ │Hom│Ins│PgU│PgD│ + * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬┬──┴┐├───┼───┼───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift││ ↑ ││ 1 │ 2 │ 3 │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬┬──┴┼───┼┴──┬┼───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctr││ ← │ ↓ │ → ││ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┘└───┴───┴───┘└───┴───┴───┘ + */ + [0] = LAYOUT_96_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, KC_HOME, KC_INS, KC_PGUP, KC_PGDN, + + 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_P0, KC_PDOT, + KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_96_ansi( + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, _______, KC_SCRL, KC_PAUS, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______ + ) +}; diff --git a/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/keymap.c b/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/keymap.c new file mode 100644 index 000000000000..08825dacce08 --- /dev/null +++ b/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┐ + * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Del│ │Hom│Ins│PgU│PgD│ + * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┘ + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┬───┐ + * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Num│ / │ * │ - │ + * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ + * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │ 7 │ 8 │ 9 │ │ + * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤ + │ + * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │ + * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬┬──┴┐├───┼───┼───┼───┤ + * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift││ ↑ ││ 1 │ 2 │ 3 │ │ + * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬┬──┴┼───┼┴──┬┼───┼───┤Ent│ + * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctr││ ← │ ↓ │ → ││ 0 │ . │ │ + * └────┴────┴────┴────────────────────────┴───┴───┴───┘└───┴───┴───┘└───┴───┴───┘ + */ + [0] = LAYOUT_96_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, KC_HOME, KC_INS, KC_PGUP, KC_PGDN, + + 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_P0, KC_PDOT, + KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk b/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk new file mode 100644 index 000000000000..ea877d67869c --- /dev/null +++ b/keyboards/handwired/ziyoulang_k3_mod/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +MOUSEKEY_ENABLE = no +LTO_ENABLE = yes diff --git a/keyboards/handwired/ziyoulang_k3_mod/readme.md b/keyboards/handwired/ziyoulang_k3_mod/readme.md new file mode 100644 index 000000000000..7e247fde198b --- /dev/null +++ b/keyboards/handwired/ziyoulang_k3_mod/readme.md @@ -0,0 +1,33 @@ +# ziyoulang_k3_mod + +![ziyoulang_k3_mod](https://i.imgur.com/z9mUvIoh.jpg) + + +This base keyboard has SX83099 IC causes some problems. I needed QMK as an alternative, especially since the controller freezes when the backlight is off. + +* Keyboard Maintainer: [Coom](https://github.com/coomstoolbox) +* Hardware Supported: Ziyoulang K3,Blue Pill +* Hardware Availability: [Base Keyboard](https://www.aliexpress.com/item/1005005458088199.html), [Blue Pill Board](https://www.aliexpress.com/item/32812837487.html) + +Make example for this keyboard (after setting up your build environment): + + make handwired/ziyoulang_k3_mod:default + +Flashing example for this keyboard: + + make handwired/ziyoulang_k3_mod:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Requires hand wired + +[KiCAD wiring diagram](https://github.com/coomstoolbox/ZK3-BP-MOD-wiring-diagram) + +![explanation](https://i.imgur.com/yvhvhoBh.png) + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/handwired/ziyoulang_k3_mod/rules.mk b/keyboards/handwired/ziyoulang_k3_mod/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/ziyoulang_k3_mod/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/hazel/bad_wings/keymaps/miketronic/config.h b/keyboards/hazel/bad_wings/keymaps/miketronic/config.h deleted file mode 100644 index 1f5c059c0049..000000000000 --- a/keyboards/hazel/bad_wings/keymaps/miketronic/config.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#pragma once - -# define TAPPING_TERM 160 -# define TAPPING_TERM_PER_KEY -# define HOLD_ON_OTHER_KEY_PRESS -# define QUICK_TAP_TERM TAPPING_TERM / 2 -# define QUICK_TAP_TERM_PER_KEY - -# define CIRQUE_PINNACLE_TAP_ENABLE -# define CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE -# define CIRQUE_PINNACLE_ATTENUATION_4X -# define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_RELATIVE_MODE -//# define CIRQUE_DEVICE_GESTURES_SCROLL_ENABLE diff --git a/keyboards/hazel/bad_wings/keymaps/miketronic/keymap.c b/keyboards/hazel/bad_wings/keymaps/miketronic/keymap.c deleted file mode 100644 index 3ebcc79fded7..000000000000 --- a/keyboards/hazel/bad_wings/keymaps/miketronic/keymap.c +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright 2023 @miketronic -- Mike B -// SPDX-License-Identifier: GPL-2.0+ - -#include "miketronic.h" - - -/* -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, 1, 2, 3); -} - - - [0] = LAYOUT_split_3x5_3( - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, \ - KC_Z, LGUI_T(KC_X), LALT_T(KC_C), KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ - KC_LCTL, OSL(1), OSM(MOD_LSFT), KC_SPC, LT(2, KC_BSPC), KC_ENT - ), - [1] = LAYOUT_split_3x5_3( - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RBRC, KC_RCBR, KC_RPRN, KC_RABK, KC_NO, \ - KC_GRV, KC_TILD, KC_UNDS, KC_EQL, KC_NO, KC_LBRC, KC_LCBR, KC_LPRN, KC_LABK, KC_BACKSLASH, \ - KC_NO, KC_NO, KC_PLUS, KC_MINS, KC_NO, KC_NO, KC_NO, KC_COLN, KC_DOT, KC_SCLN, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [2] = LAYOUT_split_3x5_3( - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PIPE, KC_NO, \ - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DOT, KC_NO, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [3] = LAYOUT_split_3x5_3( - KC_ESC, KC_F1, KC_F4, KC_F7, KC_F10, KC_NO, KC_HOME, KC_UP, KC_END, KC_BSPC, \ - KC_TAB, KC_F2, KC_F5, KC_F8, KC_F11, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT, \ - KC_NO, KC_F3, KC_F6, KC_F9, KC_F12, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_DEL, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ) -*/ - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* WORKMAN - * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ - * │ Q │ D │ R │ W │ B │ │ J │ F │ U │ P │ BSPC│ - * │ ESC │ │ │ │ SYM │ │ SYM │ │ │ │ │ - * ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤ - * │ A │ S │ H ┃ T ┃ G │ │ Y ┃ N ┃ E │ O │ I │ - * │SHIFT│ │ ┃ EX ┃ │ │ ┃ ┃ │ │ │ - * ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤ - * │ Z │ X │ M │ C │ V │ │ K │ L │ SPC │ SPC │ENTER│ - * │ FN │ CTRL│ OS │ ALT │LOWER│ │RAISE│ │ , │ . │ │ - * └─────┴─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┴─────┘ - * │OSM │SPACE│LOWER│ │RAISE│ENTER│COPY │ - * │SHIFT│ │ │ │ │ │PASTE│ - * └─────┴─────┴─────┘ └─────┴─────┴─────┘ -*/ - [_WM] = LAYOUT_split_3x5_3_wrapper ( - _____________WORKMAN_310_001_L_____________, _____________WORKMAN_310_001_R_____________, - _____________WORKMAN_310_002_L_____________, _____________WORKMAN_310_002_R_____________, - _____________WORKMAN_310_003_L_____________, _____________WORKMAN_310_003_R_____________, - _________3KEY_LEFT___________, _________3KEY_RIGHT__________ - ), - - [_QW] = LAYOUT_split_3x5_3_wrapper ( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, - _________3KEY_LEFT___________, _________3KEY_RIGHT__________ - ), - - - - /* LOWER - * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ - * │ () │ [] │ /\ │ │ │ │ │ 7 │ 8 │ 9 │ │ - * │ │ <> │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤ - * │ @ # │ & % │ ┃ ┃ │ │ . ┃ 4 ┃ 5 │ 6 │ UP │ - * │ │ │ ┃ ┃ │ │ENTER┃ ┃ │ │RIGHT│ - * ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤ - * │ │ │ │ │ │ │ 0 │ 1 │ 2 │ 3 │ DOWN│ - * │ │ │ │ │LOWER│ │ │ │ 0 │ │ LEFT│ - * └─────┴─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┴─────┘ - * │OSM │SPACE│LOWER│ │RAISE│ENTER│COPY │ - * │SHIFT│ │ │ │ │ │PASTE│ - * └─────┴─────┴─────┘ └─────┴─────┴─────┘ -*/ - [_LOWER] = LAYOUT_split_3x5_3_wrapper ( - _______________LOWER_310_L1________________, _______________LOWER_310_R1________________, - _______________LOWER_310_L2________________, _______________LOWER_310_R2________________, - _______________LOWER_310_L3________________, _______________LOWER_310_R3________________, - _________3KEY_LEFT___________, _________3KEY_RIGHT__________ - ), - - - - /* RAISE - * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ - * │ BOOT│DEBUG│ │ │ MAKE│ │ │ F7 │ F8 │ F9 │ F10 │ - * │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤ - * │ │ RGB │ RGB ┃ RGB ┃ RGB │ │ _ ┃ F4 ┃ F5 │ F6 │ F11 │ - * │ │ TOG │ MOD ┃ HUI ┃ HUD │ │ - ┃ ┃ │ │ │ - * ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤ - * │ │ RGB │ RGB │ RGB │ RGB │ │ │ F1 │ F2 │ F3 │ F12 │ - * │ │ SAI │ SAD │ VAI │ VAD │ │RAISE│ │ │ │ │ - * └─────┴─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┴─────┘ - * │OSM │SPACE│LOWER│ │RAISE│ENTER│COPY │ - * │SHIFT│ │ │ │ │ │PASTE│ - * └─────┴─────┴─────┘ └─────┴─────┴─────┘ -*/ - [_RAISE] = LAYOUT_split_3x5_3_wrapper ( - _______________RAISE_310_L1________________, _______________RAISE_310_R1________________, - _______________RAISE_310_L2________________, _______________RAISE_310_R2________________, - _______________RAISE_310_L3________________, _______________RAISE_310_R3________________, - _________3KEY_LEFT___________, _________3KEY_RIGHT__________ - ), - - - - /* EXTRAS - * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ - * │ ! │ │ │ │ │ │ │ /\ | () | [] | ; │ - * │ │ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤ - * │ │ │ ┃EXTRA┃ │ │ ┃ @ # ┃ & % | │ ' │ - * │ │ │ ┃ ┃ │ │ ┃ ┃ │ │ │ - * ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤ - * │ │ │ │ │ │ │ │ │ , │ . │ ? │ - * │ │ │ │ │ │ │ │ │ │ │ │ - * └─────┴─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┴─────┘ - * │OSM │SPACE│LOWER│ │RAISE│ENTER│COPY │ - * │SHIFT│ │ │ │ │ │PASTE│ - * └─────┴─────┴─────┘ └─────┴─────┴─────┘ -*/ - [_EX] = LAYOUT_split_3x5_3_wrapper ( - ______________EXTRAS_310_L1________________, ______________EXTRAS_310_R1________________, - ______________EXTRAS_310_L2________________, ______________EXTRAS_310_R2________________, - ______________EXTRAS_310_L3________________, ______________EXTRAS_310_R3________________, - _________3KEY_LEFT___________, _________3KEY_RIGHT__________ - ), - - - - /* FUNCTION - * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ - * │COPY │CLIP │ SS │ │ │ │ │ /\ │ UP │ │ DEL │ - * │PASTE│ │ │ │ │ │ │ │ │ │ │ - * ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤ - * │ TAB │ M05 │ M06 ┃ M07 ┃ M08 │ │ ┃ LEFT┃ DOWN│RIGHT│ UP │ - * │ │ │ ┃ ┃ │ │ ┃ ┃ │ │RIGHT│ - * ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤ - * │ │ M01 │ M02 │ M03 │ M04 │ │ │ │ , │ . │DOWN │ - * │ FN │ │ │ │ │ │ │ │ │ │LEFT │ - * └─────┴─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┴─────┘ - * │OSM │SPACE│LOWER│ │RAISE│ENTER│COPY │ - * │SHIFT│ │ │ │ │ │PASTE│ - * └─────┴─────┴─────┘ └─────┴─────┴─────┘ -*/ - [_FN] = LAYOUT_split_3x5_3_wrapper ( - _____________FUNCTION_310_L1_______________, _____________FUNCTION_310_R1_______________, - _____________FUNCTION_310_L2_______________, _____________FUNCTION_310_R2_______________, - _____________FUNCTION_310_L3_______________, _____________FUNCTION_310_R3_______________, - _________3KEY_LEFT___________, _________3KEY_RIGHT__________ - ), - - - - /* SYMBOLS - * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ - * │ $ │ ^ │ < │ > │ │ │ │ | │ [ │ ] │ - │ - * │ │ │ │ │ SYMB│ │ SYMB│ │ │ │ │ - * ├─────┼─────┼─────╆━━━━━╅─────┤ ├─────╆━━━━━╅─────┼─────┼─────┤ - * │ % │ : │ ; ┃ + ┃ = │ │ ┃ ┃ ( │ ) │ _ │ - * │ │ │ ┃ ┃ │ │ ┃ ┃ │ │ │ - * ├─────┼─────┼─────╄━━━━━╃─────┤ ├─────╄━━━━━╃─────┼─────┼─────┤ - * │ & │ ' │ " │ * │ # │ │ ! │ ? │ / │ \ │ @ │ - * │ │ │ │ │ │ │ │ │ │ │ │ - * └─────┴─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┴─────┘ - * │OSM │SPACE│LOWER│ │RAISE│ENTER│COPY │ - * │SHIFT│ │ │ │ │ │PASTE│ - * └─────┴─────┴─────┘ └─────┴─────┴─────┘ -*/ - [_SYMB] = LAYOUT_split_3x5_3_wrapper ( - KC_DLR, KC_CIRC, KC_LABK, KC_RABK, XXXX, XXXX, KC_PIPE, KC_LBRC, KC_RBRC, KC_MINS, - KC_PERC, KC_COLN, KC_SCLN, KC_PLUS, KC_EQL, XXXX, XXXX, KC_LPRN, KC_RPRN, KC_UNDS, - KC_AMPR, KC_QUOT, KC_DQUO, KC_ASTR, KC_HASH, KC_EXLM, KC_QUES, KC_SLSH, KC_BSLS, KC_AT, - _________3KEY_LEFT___________, _________3KEY_RIGHT__________ - ), - -}; - - -bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case SFT_T(KC_A): - // Do not force the mod-tap key press to be handled as a modifier - // if any other key was pressed while the mod-tap key is held down. - return false; - case TEX: - return false; - case CTRLX: - return false; - case FNZ: - return false; - case MGUI: - return false; - case VLOWER: - return false; - case KRAISE: - return false; - default: - // Force the dual-role key press to be handled as a modifier if any - // other key was pressed while the mod-tap key is held down. - return true; - } -} - - -#ifdef AUDIO_ENABLE -float leader_start_song[][2] = SONG(ONE_UP_SOUND); -float leader_succeed_song[][2] = SONG(ALL_STAR); -float leader_fail_song[][2] = SONG(RICK_ROLL); -#endif - -void matrix_scan_user(void); - -void leader_start_user(void) { -#ifdef AUDIO_ENABLE - PLAY_SONG(leader_start_song); -#endif -} - -bool did_leader_succeed; - -void leader_end_user(void) { - did_leader_succeed = false; - - if (leader_sequence_one_key(KC_E)) { - SEND_STRING(SS_LCTL(SS_LSFT("t"))); - did_leader_succeed = true; - } else if (leader_sequence_two_keys(KC_E, KC_D)) { - SEND_STRING(SS_LGUI("r") "cmd\n" SS_LCTL("c")); - did_leader_succeed = true; - } else if (leader_sequence_two_keys(KC_A, KC_T)) { - SEND_STRING("@guidehouse.com"); - did_leader_succeed = true; - } - - -#ifdef AUDIO_ENABLE - if (did_leader_succeed) { - PLAY_SONG(leader_succeed_song); - } else { - PLAY_SONG(leader_fail_song); - } -#endif -} - diff --git a/keyboards/hazel/bad_wings/keymaps/miketronic/rules.mk b/keyboards/hazel/bad_wings/keymaps/miketronic/rules.mk deleted file mode 100644 index 72c338c1574c..000000000000 --- a/keyboards/hazel/bad_wings/keymaps/miketronic/rules.mk +++ /dev/null @@ -1,31 +0,0 @@ -# Common feature for all keyboards -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -EXTRAKEY_ENABLE = yes # Audio control and System control -TAP_DANCE_ENABLE = yes # Tap Dance keys -NKRO_ENABLE = yes # Enable N-Key Rollover -MACROS_ENABLED = yes - -# Keyboard specific -MOUSEKEY_ENABLE = yes # Mouse keys -CAPS_WORD_ENABLE = yes -KEY_OVERRIDE_ENABLE = yes -LEADER_ENABLE = yes - - - LTO_ENABLE = no # Enabled this causes longer build time, but smaller file. - AUTO_SHIFT_ENABLE = no - UNICODE_ENABLE = no # Unicode - CONSOLE_ENABLE = no # Console for debug - COMMAND_ENABLE = no # Commands for debug and configuration - RGBLIGHT_ENABLE = no - BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality - SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend (it uses the same timer as BACKLIGHT_ENABLE) - AUDIO_ENABLE = no # Audio output on port C6 - MIDI_ENABLE = no # MIDI support - BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID - GRAVE_ESC_ENABLE = no - SPACE_CADET_ENABLE = no - COMBO_ENABLE = no - OLED_ENABLE = no - ENCODER_ENABLE = no - ENCODER_MAP_ENABLE = no diff --git a/keyboards/hazel/bad_wings/rules.mk b/keyboards/hazel/bad_wings/rules.mk index 1001af0186bb..47a188155fec 100644 --- a/keyboards/hazel/bad_wings/rules.mk +++ b/keyboards/hazel/bad_wings/rules.mk @@ -3,7 +3,7 @@ CAPS_WORD_ENABLE = yes SRC += matrix.c -QUANTUM_LIB_SRC += spi_master.c +SPI_DRIVER_REQUIRED = yes CUSTOM_MATRIX = lite POINTING_DEVICE_DRIVER = cirque_pinnacle_spi diff --git a/keyboards/helix/pico/keymaps/default/keymap.c b/keyboards/helix/pico/keymaps/default/keymap.c index 101a54bda60d..3ee620360d80 100644 --- a/keyboards/helix/pico/keymaps/default/keymap.c +++ b/keyboards/helix/pico/keymaps/default/keymap.c @@ -173,7 +173,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif // define variables for reactive RGB @@ -329,36 +328,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif #ifdef RGBLIGHT_ENABLE RGB_current_mode = rgblight_config.mode; #endif } - - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(50); // gets rid of tick -} - -void shutdown_user(void) -{ - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif diff --git a/keyboards/helix/pico/keymaps/mtei/config.h b/keyboards/helix/pico/keymaps/mtei/config.h deleted file mode 100644 index a633105ff976..000000000000 --- a/keyboards/helix/pico/keymaps/mtei/config.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// place overrides here - -#ifdef AUDIO_ENABLE - #define STARTUP_SONG SONG(STARTUP_SOUND) - #define AUDIO_CLICKY -#endif - -#undef TAPPING_TERM -#define TAPPING_TERM 300 -#define PERMISSIVE_HOLD - -// If you need more program area, try select and reduce rgblight modes to use. - diff --git a/keyboards/helix/pico/keymaps/mtei/keymap.c b/keyboards/helix/pico/keymaps/mtei/keymap.c deleted file mode 100644 index 6a5f7d295a39..000000000000 --- a/keyboards/helix/pico/keymaps/mtei/keymap.c +++ /dev/null @@ -1,368 +0,0 @@ -/* Copyright 2018 mtei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "key_blocks.h" - -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define kc5(a,b,c,d,e) KC_##a, KC_##b, KC_##c, KC_##d, KC_##e - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. -enum layer_number { - _QWERTY = 0, - _COLEMAK, - _DVORAK, - _EUCALYN, - _NUML, - _NUMR, - _LOWER, - _RAISE, - _ADJUST, -}; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - EUCALYN, - NUML, - NUMR, - xEISU, - xKANA, - ZERO2, - RGBRST -}; - -// clang-format off - -//Macros -#define LT_NUML_SP LT(_NUML,KC_SPC) -#define LT_NUMR_SP LT(_NUMR,KC_SPC) -#define LT_RA_BSPC LT(_RAISE,KC_BSPC) -#define LT_RA_ENT LT(_RAISE,KC_ENT) -#define ___ _______ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty */ -#define LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS MO(_LOWER), MO(_LOWER), KC_CAPS, KC_LALT, KC_LGUI, LT_NUML_SP, LT_RA_BSPC -#define RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER LT_RA_ENT, LT_NUMR_SP, KC_RGUI, KC_RALT, KC_APP, MO(_LOWER), MO(_LOWER) - /* ,-----------------------------------------. ,-----------------------------------------. - * | ESC | Q | W | E | R | T | | Y | U | I | O | P | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | S | D | F | G | | H | J | K | L | ; | Ctrl | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | | N | M | , | . | / | Shift| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | - * `-------------------------------------------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT_wrapper( - KC_ESC, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, - KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L____SCLN, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____B, N_____M____COMM__DOT___SLSH, KC_RSFT, - LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER - ), - - /* Colemak */ - /* ,-----------------------------------------. ,-----------------------------------------. - * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | R | S | T | D | | H | N | E | I | O | Ctrl | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | | K | M | , | . | / | Shift| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | - * `-------------------------------------------------------------------------------------------------' - */ - [_COLEMAK] = LAYOUT_wrapper( - KC_ESC, Q_____W_____F_____P_____G, J_____L_____U_____Y____SCLN, KC_BSLS, - KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____B, K_____M____COMM__DOT___SLSH, KC_RSFT, - LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER - ), - - /* Dvorak */ - /* ,-----------------------------------------. ,-----------------------------------------. - * | ESC | ' | , | . | P | Y | | F | G | C | R | L | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | O | E | U | I | | D | H | T | N | S | Ctrl | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | | B | M | W | V | Z | Shift| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | - * `-------------------------------------------------------------------------------------------------' - */ - [_DVORAK] = LAYOUT_wrapper( - KC_ESC, QUOT_COMM___DOT____P_____Y, F_____G_____C_____R_____L, KC_BSLS, - KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, - KC_LSFT, SCLN___Q_____J_____K_____X, B_____M_____W_____V_____Z, KC_RSFT, - LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER - ), - - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ - /* ,-----------------------------------------. ,-----------------------------------------. - * | ESC | Q | W | , | . | ; | | M | R | D | Y | P | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Ctrl | A | O | E | I | U | | G | T | K | S | N | Ctrl | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Shift| Z | X | C | V | F | | B | H | J | L | / | Shift| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * |Lower | Lower| Caps | Alt | GUI | Space| BS | Enter| Space| GUI | Alt | Menu |Lower |Lower | - * `-------------------------------------------------------------------------------------------------' - */ - [_EUCALYN] = LAYOUT_wrapper( - KC_ESC, Q_____W___COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, - KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____F, B_____H_____J_____L____SLSH, KC_RSFT, - LOWER___LOWER__CAPS__LALT__LGUI__NUML__RABS, RAEN_NUMR__RGUI__RALT___APP_LOWER__LOWER - ), - - /* Num */ -#define EXLM__AT__HASH___DLR__PERC kc5( EXLM, AT, HASH, DLR, PERC ) -#define CIRC_AMPR_ASTR__LPRN__RPRN kc5( CIRC, AMPR, ASTR, LPRN, RPRN ) -#define ____z_____z_____z_____z _______, _______, _______, _______ -#define ____z_____z_____z _______, _______, _______ -#define ____z_____z _______, _______ - /* ,-----------------------------------------. ,-----------------------------------------. - * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_NUML] = LAYOUT_wrapper( - _______, EXLM__AT__HASH___DLR__PERC, CIRC_AMPR_ASTR__LPRN__RPRN, _______, - _______, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_F12, - _______, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, - _______, ____z_____z_____z_____z,____z_____z_____z,KC_SPC, ____z_____z_____z_____z, _______ - ), - [_NUMR] = LAYOUT_wrapper( - _______, EXLM__AT__HASH___DLR__PERC, CIRC_AMPR_ASTR__LPRN__RPRN, _______, - _______, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_F12, - _______, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, - _______, ____z_____z_____z_____z,KC_SPC, ____z_____z_____z,____z_____z_____z_____z, _______ - ), - /* Lower */ -#define XXXX__PAUS__SLCK___INS__XXXX XXXXXXX, KC_PAUS, KC_SCRL, KC_INS, XXXXXXX -#define XXXX___INS__SLCK__PAUS__XXXX XXXXXXX, KC_INS, KC_SCRL, KC_PAUS, XXXXXXX -#define HOME__XXXX____UP___DEL__PGUP KC_HOME, XXXXXXX, KC_UP, KC_DEL, KC_PGUP -#define PGUP___DEL____UP__XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXXXXX, KC_HOME -#define END___LEFT__DOWN__RGHT__PGDN kc5( END, LEFT, DOWN, RGHT, PGDN ) -#define PGDN__LEFT__DOWN__RGHT___END kc5( PGDN, LEFT, DOWN, RGHT, END ) -#define ______PSCR__________________ _______, KC_PSCR, _______, _______, _______ -#define __________________PSCR______ _______, _______, _______, KC_PSCR, _______ -#define ADJ___ADJ MO(_ADJUST), MO(_ADJUST) - /* ,-----------------------------------------. ,-----------------------------------------. - * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | End | Left | Down | Right| PgDn | | PgDn | Left | Down | Right| End | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | PrtSc| | | |Adjust|Adjust| | | | PrtSc| | | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT_wrapper( - XXXXXXX, XXXX__PAUS__SLCK___INS__XXXX, XXXX___INS__SLCK__PAUS__XXXX, _______, - _______, HOME__XXXX____UP___DEL__PGUP, PGUP___DEL____UP__XXXX__HOME, _______, - _______, END___LEFT__DOWN__RGHT__PGDN, PGDN__LEFT__DOWN__RGHT___END, _______, - _______, ______PSCR__________________, ADJ___ADJ, __________________PSCR______, _______ - ), - /* Raise */ -#define XXXX__XXXX__XXXX__UNDS__MINS XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_MINS -#define EQL__PLUS__XXXX__XXXX__XXXX KC_EQL, KC_PLUS, XXXXXXX, XXXXXXX, XXXXXXX -#define XXXX__XXXX__XXXX__LCBR__LBRC XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_LBRC -#define RBRC__RCBR__XXXX__XXXX__XXXX KC_RBRC, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX -#define XXXX__XXXX__XXXX__TILD___GRV XXXXXXX, XXXXXXX, XXXXXXX, KC_TILD, KC_GRV -#define QUOT___DQT__XXXX__XXXX__XXXX KC_QUOT, KC_DQT, XXXXXXX, XXXXXXX, XXXXXXX -#define XXXX______________XXXX XXXXXXX, _______, _______, XXXXXXX - /* ,-----------------------------------------. ,-----------------------------------------. - * | TAB | | | | _ | - | | = | + | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | EISU | | | | { | [ | | ] | } | | | | KANA | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | ~ | ` | | ' | " | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT_wrapper( - KC_TAB, XXXX__XXXX__XXXX__UNDS__MINS, EQL__PLUS__XXXX__XXXX__XXXX, XXXXXXX, - xEISU, XXXX__XXXX__XXXX__LCBR__LBRC, RBRC__RCBR__XXXX__XXXX__XXXX, xKANA, - XXXXXXX, XXXX__XXXX__XXXX__TILD___GRV, QUOT___DQT__XXXX__XXXX__XXXX, XXXXXXX, - ADJ___ADJ, XXXX______________XXXX, ____z_____z, XXXX______________XXXX, ADJ___ADJ - ), - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | | Reset|RGBRST|RGB ON|Aud on| Win | | Win | |Qwerty|Euclyn|Colemk|Dvorak| - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | HUE+ | SAT+ | VAL+ |RGB md|Audoff| Mac | | Mac | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | HUE- | SAT- | VAL- | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - XXXXXXX, QK_BOOT, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ - ) -}; - -#ifdef AUDIO_ENABLE - -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); -float tone_plover[][2] = SONG(PLOVER_SOUND); -float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); -#endif - -static int current_default_layer; - -layer_state_t default_layer_state_set_kb(layer_state_t state) { - // 1<<_QWERTY - 1 == 1 - 1 == _QWERTY (=0) - // 1<<_COLEMAK - 1 == 2 - 1 == _COLEMAK (=1) - current_default_layer = state - 1; - // 1<<_DVORAK - 2 == 4 - 2 == _DVORAK (=2) - if ( current_default_layer == 3 ) current_default_layer -= 1; - // 1<<_EUCALYN - 5 == 8 - 5 == _EUCALYN (=3) - if ( current_default_layer == 7 ) current_default_layer -= 4; - return state; -} - -void update_base_layer(int base) -{ - if( current_default_layer != base ) { - eeconfig_update_default_layer(1UL<event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); - #endif - update_base_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); - #endif - update_base_layer(_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); - #endif - update_base_layer(_DVORAK); - } - return false; - break; - case EUCALYN: - if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); - #endif - update_base_layer(_EUCALYN); - } - return false; - break; - case xEISU: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG2); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case xKANA: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG1); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - } - #endif - break; - } - return true; -} - -void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif -} - - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(50); // gets rid of tick -} - -void shutdown_user(void) -{ - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif diff --git a/keyboards/helix/pico/keymaps/mtei/rules.mk b/keyboards/helix/pico/keymaps/mtei/rules.mk deleted file mode 100644 index 413d0519d686..000000000000 --- a/keyboards/helix/pico/keymaps/mtei/rules.mk +++ /dev/null @@ -1,18 +0,0 @@ -# QMK Standard Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -# See TOP/keyboards/helix/rules.mk for a list of options that can be set. -# See TOP/docs/config_options.md for more information. -# -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -AUDIO_ENABLE = yes # Audio output on port B5 -LTO_ENABLE = no # if firmware size over limit, try this option - -# Helix Spacific Build Options -# you can uncomment and edit follows 4 Variables -# jp: 以下の4つの変数を必要に応じて編集し、コメントアウトをはずします。 -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) diff --git a/keyboards/helix/rev2/config.h b/keyboards/helix/rev2/config.h index 212d0e1e3847..7ab494522a80 100644 --- a/keyboards/helix/rev2/config.h +++ b/keyboards/helix/rev2/config.h @@ -21,9 +21,6 @@ along with this program. If not, see . #define QUICK_TAP_TERM 0 -#define SPLIT_LAYER_STATE_ENABLE -#define SPLIT_LED_STATE_ENABLE - /* Select hand configuration */ #define MASTER_LEFT // #define MASTER_RIGHT diff --git a/keyboards/helix/rev2/info.json b/keyboards/helix/rev2/info.json index 0056ba90b1b6..aac3cc9dbb15 100644 --- a/keyboards/helix/rev2/info.json +++ b/keyboards/helix/rev2/info.json @@ -14,7 +14,13 @@ }, "diode_direction": "COL2ROW", "split": { - "soft_serial_pin": "D2" + "soft_serial_pin": "D2", + "transport": { + "sync": { + "indicators": true, + "layer_state": true + } + } }, "tapping": { "term": 100 diff --git a/keyboards/helix/rev2/keymaps/default/keymap.c b/keyboards/helix/rev2/keymaps/default/keymap.c index b777d35d4536..f23ff07b4fc9 100644 --- a/keyboards/helix/rev2/keymaps/default/keymap.c +++ b/keyboards/helix/rev2/keymaps/default/keymap.c @@ -185,7 +185,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif // define variables for reactive RGB @@ -341,36 +340,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif #ifdef RGBLIGHT_ENABLE RGB_current_mode = rgblight_get_mode(); #endif } - - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick -} - -void shutdown_user(void) -{ - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/config.h b/keyboards/helix/rev2/keymaps/edvorakjp/config.h deleted file mode 100644 index 0dff4b59ca81..000000000000 --- a/keyboards/helix/rev2/keymaps/edvorakjp/config.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#define SWAP_SCLN - -#undef QUICK_TAP_TERM -#undef TAPPING_TERM -#define TAPPING_TERM 300 - -// If you need more program area, try select and reduce rgblight modes to use. - -// Selection of RGBLIGHT MODE to use. -#if defined(LED_ANIMATIONS) -// # define RGBLIGHT_EFFECT_BREATHING -// # define RGBLIGHT_EFFECT_RAINBOW_MOOD -// # define RGBLIGHT_EFFECT_RAINBOW_SWIRL -// # define RGBLIGHT_EFFECT_SNAKE -// # define RGBLIGHT_EFFECT_KNIGHT -// # define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -// # define RGBLIGHT_EFFECT_RGB_TEST -// # define RGBLIGHT_EFFECT_ALTERNATING -#endif // LED_ANIMATIONS diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c deleted file mode 100644 index 6910bef535e9..000000000000 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c +++ /dev/null @@ -1,75 +0,0 @@ -#include QMK_KEYBOARD_H -#include "split_util.h" -#include "edvorakjp.h" - -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) - -#define __KC_TRNS_x4__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS -#define __KC_TRNS_x6__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [L_EDVORAKJP_BASE] = LAYOUT_wrapper( - //,-----------------------------------------------------. ,-----------------------------------------------------. - KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, - //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| - KC_ESC, __EDVORAKJP_BASE_L3__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BASE_R3__ , KC_SLSH, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__ - //`--------------------------------------------------------------' `--------------------------------------------------------------' - ), - - [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( - //,-----------------------------------------------------. ,-----------------------------------------------------. - __KC_TRNS_x6__ , __KC_TRNS_x6__ , - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , - //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| - KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__ - //`--------------------------------------------------------------' `--------------------------------------------------------------' - ), - - [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( - //,-----------------------------------------------------. ,-----------------------------------------------------. - __KC_TRNS_x6__ , __KC_TRNS_x6__ , - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| - XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| - KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, - //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| - __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__ - //`--------------------------------------------------------------' `--------------------------------------------------------------' - ) -}; -// clang-format on - -// keymaps definitions are moved to keymap_Xrows.c. - -#ifdef RGBLIGHT_ENABLE -layer_state_t layer_state_set_keymap(layer_state_t state) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - switch (get_highest_layer(state)) { - case L_EDVORAKJP_LOWER: - rgblight_sethsv_noeeprom(HSV_RED); - break; - case L_EDVORAKJP_RAISE: - rgblight_sethsv_noeeprom(HSV_GREEN); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv(HSV_RED); - break; - } - return state; -} -#endif diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c deleted file mode 100644 index 38a91c1639f8..000000000000 --- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include -#include "oled.h" - -#ifdef OLED_ENABLE -void render_host_led_state(void) { - char led_state_str[24]; - led_t led_state = host_keyboard_led_state(); - - snprintf(led_state_str, sizeof(led_state_str), "NL:%s CL:%s SL:%s", led_state.num_lock ? "on" : "- ", led_state.caps_lock ? "on" : "- ", led_state.scroll_lock ? "on" : "- "); - oled_write(led_state_str, false); -} - -void render_layer_state(void) { - char layer_name[17]; - oled_write_P(PSTR("Layer: "), false); - - switch (get_highest_layer(layer_state)) { - case L_EDVORAKJP_BASE: - oled_write_ln_P(PSTR("Default"), false); - break; - case L_EDVORAKJP_LOWER: - oled_write_ln_P(PSTR("Lower"), false); - break; - case L_EDVORAKJP_RAISE: - oled_write_ln_P(PSTR("Raise"), false); - break; - default: - snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); - oled_write_ln(layer_name, false); - } -} - -void render_logo(void) { - static const char helix_logo[] PROGMEM = {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(helix_logo, false); -} - -void render_mode_icon(bool is_windows) { - static const char logo[][2][3] = { - {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, - {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, - }; - static char mode_icon[10]; - - snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]); - oled_write(mode_icon, false); -} - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - // flips the display 180 degrees if offhand - return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180; -} - -bool oled_task_user(void) { - if (is_keyboard_left()) { - render_mode_icon(!get_enable_kc_lang()); - render_layer_state(); - render_host_led_state(); - } else { - render_logo(); - } - return false; -} -#endif // OLED_ENABLE diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.h b/keyboards/helix/rev2/keymaps/edvorakjp/oled.h deleted file mode 100644 index d0c568528399..000000000000 --- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include "edvorakjp.h" - -extern bool japanese_mode; - -void render_host_led_state(void); -void render_layer_state(void); -void render_logo(void); -void render_mode_icon(bool is_windows); -oled_rotation_t oled_init_user(oled_rotation_t rotation); -bool oled_task_user(void); diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/readme.md b/keyboards/helix/rev2/keymaps/edvorakjp/readme.md deleted file mode 100644 index dd406523d241..000000000000 --- a/keyboards/helix/rev2/keymaps/edvorakjp/readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# edvorakjp - -Epaew's Enhanced Dvorak layout for Japanese Programmer -see [here](/users/edvorakjp) for more informations. - -## License - -Copyright 2018 Ryo Maeda epaew.333@gmail.com @epaew - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk deleted file mode 100644 index 66d33e5e4642..000000000000 --- a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk +++ /dev/null @@ -1,33 +0,0 @@ -# QMK Standard Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -# See TOP/keyboards/helix/rules.mk for a list of options that can be set. -# See TOP/docs/config_options.md for more information. -# -SPLIT_KEYBOARD = yes -LTO_ENABLE = no # if firmware size over limit, try this option -TAP_DANCE_ENABLE = yes - -# Helix Spacific Build Options -# you can uncomment and edit follows 7 Variables -# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。 -# OLED_ENABLE = no # OLED_ENABLE -# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" instead of "common/glcdfont.c" -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -OLED_SELECT = core - -# convert Helix-specific options (that represent combinations of standard options) -# into QMK standard options. -include $(strip $(KEYBOARD_LOCAL_FEATURES_MK)) - -ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes) - OPT_DEFS += -DRGBLED_BACK -endif - -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += oled.c -endif diff --git a/keyboards/helix/rev2/keymaps/five_rows/README.md b/keyboards/helix/rev2/keymaps/five_rows/README.md deleted file mode 100644 index 10a4fa942cb2..000000000000 --- a/keyboards/helix/rev2/keymaps/five_rows/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# Keymap for 5 rows Helix keyboard - -This keymap is only for 5 rows Helix keyboard. - -## Layout - -![fig1](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/827632dda7db87cf88d41a0d3b476c5962c29213/helix-five_rows_r3.png) - -## Layer - -|Priority|Number|Name|Discription| -| ---- | ---- | --- | --- | -|high|9|Adjust| keyboard local functions (violet)| -||8|KFunction| TenkeyPad function keys (bule)| -||7|Extra char| some charactors (red)| -||6|Function| function keys (blue)| -||2|Keypad|TenkeyPad| -||2|Dvorak|Dvorak| -||1|Colemak|Colemak| -|low|0|Qwerty|QWERTY (base)| - -### Adjust Layer - -Adjust Layer has keyboard local function keys. - -* LED control. -* Mac/Win mode change. -* Qwerty/Colemak/Dvorak/TenkeyPad change. - -![fig2](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/827632dda7db87cf88d41a0d3b476c5962c29213/helix-five_rows_r3adj.png) - -### Mac mode and Win mode - -Mac mode swap Alt/Win(GUI) key. - -|mode|key|code| -| ---- | ---- | --- | -|Mac mode|Adjust + g(Qwerty)|AG_NORM| -| |Adjust + h(Qwerty)| | -|Win mode|Adjust + t(Qwerty)|AG_SWAP| -| |Adjust + y(Qwerty)| | - -### LED control - -|command|key|code| -| ---- | ---- | --- | -|on/off|Adjust + e(Qwerty)|RGB_TOG| -| |Adjust + i(Qwerty)| | -|change mode|Adjust + d(Qwerty) |RGB_MOD| -| |Adjust + k(Qwerty)| | -|HUE +|Adjust + Left Control|RGB_HUI| -| |Adjust + Right Control| | -|HUE -|Adjust + Left Shift |RGB_HUD| -| |Adjust + Right Shift | | -|SAT +|Adjust + ;(Qwerty) |RGB_SAI| -| |Adjust + a(Qwerty) | | -|SAT -|Adjust + z(Qwerty) |RGB_SAD| -| |Adjust + /(Qwerty) | | -|Bright +|Adjust + s(Qwerty) |RGB_VAI| -| |Adjust + l(Qwerty) | | -|Bright -|Adjust + x(Qwerty) |RGB_VAD| -| |Adjust + >(Qwerty) | | -|reset|Adjust + w|RGBRST| - -### Qwerty, Colemak, Dvorak, TenkeyPad selection - -|char layout|key| -| ---- | ---- | -|Qwerty | Adjust + 5 | -| | Adjust + 6 | -|Calemak| Adjust + 4 | -| | Adjust + 7 | -|Dvorak | Adjust + 3 | -| | Adjust + 8 | -|Keypad | Adjust + 2 | -| | Adjust + 9 | - -## TenkeyPad layout - -![fig3](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/827632dda7db87cf88d41a0d3b476c5962c29213/helix-five_rows_r3key.png) - -## Note - -![fig4](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/d6e9af7684c051de4744b9dee9cd96b762bf4e2d/five_rows_making2.jpg) diff --git a/keyboards/helix/rev2/keymaps/five_rows/README_jp.md b/keyboards/helix/rev2/keymaps/five_rows/README_jp.md deleted file mode 100644 index 317ffdd71ddb..000000000000 --- a/keyboards/helix/rev2/keymaps/five_rows/README_jp.md +++ /dev/null @@ -1,121 +0,0 @@ -# Keymap for 5 rows Helix keyboard - -本キーマップは、Helix キーボードの5行版専用のキーマップです。 - -普通のキーボード使用者が、Helix キーボードを使うときになるべく違いが少なく戸惑いが少なくなるように意図したキーマップです。(意図通り成功しているかどうかは使用する人の判断で、、、) - -## キー配置 -以下に、Qwerty配列時の、文字配列の図を示します。 - -![fig1](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/827632dda7db87cf88d41a0d3b476c5962c29213/helix-five_rows_r3.png) - -## レイヤー - -|優先順位|番号|名称|内容| -| ---- | ---- | --- | --- | -|高い|9|Adjust|機能キー(紫)| -||8|KFunction|テンキーパッド用ファンクションキー類(青)| -||7|Extra char|記号類(赤)| -||6|Function|ファンクションキー類(青)| -||3|Keypad|テンキーパッド配列| -||2|Dvorak|Dvorak配列| -||1|Colemak|Colemak配列| -|低い|0|Qwerty|QWERTY配列(ベース)| - -Qwerty/Colemak/Dvorak/Keypad の各レイヤーは、後述する、Ajuestレイヤーの キーによる選択で、いずれか一つだけが有効になり、標準のキーマップとなります。 - -Function レイヤーは、下段両端の4つのFnキーのどれかひとつを押している間だけ有効になり、矢印キー等のナビゲーションキーや F1, F2, ...F12キーなどが配置されています。 -上の図の青色の刻印のキーのあるレイヤーです。 - -Extra レイヤーは、下段中央部の Enter キーか BS キーを一定時間(0.2秒)以上押していると押している間だけ有効になり、'+=-_[]{}' の 8つの記号と「英数」キー、「かな」キーが配置されています。 -このため、Enter/BS キーで Enter/BS を入力するには、Enter/BSキーを押して短時間ですぐ離してください。 -上の図の赤色の刻印のキーのあるレイヤーです。 - -Adjust レイヤーは、Adjust キーを押している間有効になります。 -Adjust キーは Function レイヤーに有り、下段両端の4つのFnキーのどれか一つを押しながら、下段中央部の Enter キーか BS キーを押すことで Adjust レイヤーが有効になります。 -Adjust キー (Enter/BS)を押した後は、Fnキーは離して構いません。 - -### Adjust レイヤー -Ajust レイヤーは、LEDのコントロール、Mac/Win モードの切り替え、Qwerty配列, Colemak配列, Dvorak配列, TenkeyPad配列の切り替えが行えます。 - -![fig2](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/827632dda7db87cf88d41a0d3b476c5962c29213/helix-five_rows_r3adj.png) - -### MacモードとWinモード -キーボードには、Mac モードと、Win モードの二つのモードがあります。 - -現在のモードはOLEDにアイコンとして表示されます。 -(以下の指定キーは、Qwerty配列時の文字を使ってキーを表示しています) - -|コマンド|指定キー|コード| -| ---- | ---- | --- | -|Macモード|Adjust + g(Qwerty)|AG_NORM| -| |Adjust + h(Qwerty)| | -|Winモード|Adjust + t(Qwerty)|AG_SWAP| -| |Adjust + y(Qwerty)| | - -Mac モードと Win モードでは、AltキーとWin(GUI)キーが入れ替わります。 - -Mac モードでは、Extra レイヤー の「英数」キーと「かな」キーで英語モードと日本語モードの切り替えができます。 - -Winモードでは、該当のキーはどちらも共に Alt + `(日本語IMEの切り替え)として入力されます。 - -### LEDコントロール - -バックライトやUnderglowをコントロールするにはAdjustレイヤーにある機能キーを使います。 -(以下の指定キーは、Qwerty配列時の文字を使ってキーを表示しています) - -|コマンド|指定キー|コード| -| ---- | ---- | --- | -|オン/オフ|Adjust + e(Qwerty)|RGB_TOG| -| |Adjust + i(Qwerty)| | -|モード切り替え|Adjust + d(Qwerty) |RGB_MOD| -| |Adjust + k(Qwerty)| | -|色相 +|Adjust + Left Control|RGB_HUI| -| |Adjust + Right Control| | -|色相 -|Adjust + Left Shift |RGB_HUD| -| |Adjust + Right Shift | | -|彩度 +|Adjust + ;(Qwerty) |RGB_SAI| -| |Adjust + a(Qwerty) | | -|彩度 -|Adjust + z(Qwerty) |RGB_SAD| -| |Adjust + /(Qwerty) | | -|明度 +|Adjust + s(Qwerty) |RGB_VAI| -| |Adjust + l(Qwerty) | | -|明度 -|Adjust + x(Qwerty) |RGB_VAD| -| |Adjust + >(Qwerty) | | -|リセット|Adjust + w|RGBRST| - -### 文字配列選択 -Qwerty, Colemak, Dvorak, Keypad それぞれの文字配列の選択は以下のキーを使います。 - -|選択配列|指定キー| -| ---- | ---- | -|Qwerty | Adjust + 5 | -| | Adjust + 6 | -|Calemak| Adjust + 4 | -| | Adjust + 7 | -|Dvorak | Adjust + 3 | -| | Adjust + 8 | -|Keypad | Adjust + 2 | -| | Adjust + 9 | - -## テンキーパッドのキー配置 -以下に、テンキーパッド配列時の、文字配列の図を示します。 - -![fig3](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/827632dda7db87cf88d41a0d3b476c5962c29213/helix-five_rows_r3key.png) - -図でわかるように、テンキーと F1,F2..F12 のキー入力ができる配列です。 -F12キーは一定時間(0.2秒)以上押していると KFunc キーとして働き、押している間は、青色の刻印のキー入力を行えます。 -F12 そのものを入力するときは押して短時間ですぐ離してください。 -F12キーを押しているときは、F11キー は Adjust キーとなり、Adjust レイヤーが有効になります。 -これによって、Qwerty 配列などに戻すことが可能になります。 - -## 備考 -本キーマップは、通常のキーボードの主要部分のホームポジション周辺をなるべくそのまま踏襲する方針で作成しました。 -変更点は以下の通りです。 - - * 右手小指により多く割り当たっていた5つの記号と左上の1つの記号を中央に集め人差し指の担当とする。 - * Enter キーを親指担当として中央手前に移動。 - * Control キーを左右共にホームポジションの行に移動。 - * 左手親指に BackSpace キーを割り当てる。 - -![fig4](https://gist.github.com/mtei/c81a3688206aa50996339cb9ced4751d/raw/d6e9af7684c051de4744b9dee9cd96b762bf4e2d/five_rows_making2.jpg) diff --git a/keyboards/helix/rev2/keymaps/five_rows/config.h b/keyboards/helix/rev2/keymaps/five_rows/config.h deleted file mode 100644 index 43f14aaf2c9e..000000000000 --- a/keyboards/helix/rev2/keymaps/five_rows/config.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#undef TAPPING_TERM -#define TAPPING_TERM 300 -#define PERMISSIVE_HOLD - -#undef OLED_UPDATE_INTERVAL -#ifdef DEBUG_MATRIX_SCAN_RATE -# define OLED_UPDATE_INTERVAL 500 -#else -# define OLED_UPDATE_INTERVAL 50 -#endif - diff --git a/keyboards/helix/rev2/keymaps/five_rows/keymap.c b/keyboards/helix/rev2/keymaps/five_rows/keymap.c deleted file mode 100644 index dc2759d5b6aa..000000000000 --- a/keyboards/helix/rev2/keymaps/five_rows/keymap.c +++ /dev/null @@ -1,474 +0,0 @@ -/* Copyright 2020 mtei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "key_blocks.h" -#include "layer_number_util.h" - -#ifdef ENABLE_COLEMAK -# define COLEMAK_Colemak (COLEMAK, " Colemak"), -#else -# define COLEMAK_Colemak -#endif -#ifdef ENABLE_DVORAK -# define DVORAK_Dvorak (DVORAK, " Dvorak"), -#else -# define DVORAK_Dvorak -#endif -#ifdef ENABLE_EUCALYN -# define EUCALYN_Eucalyn (EUCALYN, " Eucalyn"), -#else -# define EUCALYN_Eucalyn -#endif - -#define LAYER_NAME_LIST \ - (QWERTY, " Qwerty"), \ - COLEMAK_Colemak \ - DVORAK_Dvorak \ - EUCALYN_Eucalyn \ - (KEYPAD, " Keypad"), \ - (AUX, ":AUX"), \ - (KAUX, ":00"), \ - (LOWER, ":Func"), \ - (RAISE, ":Extra"), \ - (PADFUNC, ":PadFunc"), \ - (ADJUST, ":Adjust") - -enum layer_number { - // _QWERTY, _COLEMAK, ... - MAP(BUILD_LAYER_ENUM_NUMBER, LAYER_NAME_LIST) -}; - -#ifdef OLED_ENABLE -// static const char QWERTY_name[] PROGMEM = " Qwerty"; ... -MAP(BUILD_LAYER_NAME_STR, LAYER_NAME_LIST) - -const char *layer_names[] = { - // [_QWERTY] = QWERTY_name, ... - MAP(BUILD_LAYER_NAME_TABLE, LAYER_NAME_LIST) -}; -#endif - -const size_t num_of_layer_names = GET_ITEM_COUNT(LAYER_NAME_LIST); - -extern keymap_config_t keymap_config; - -extern uint8_t is_master; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - EUCALYN, - KEYPAD, - xEISU, - xKANA, - ZERO2, - RGBRST -}; - -// clang-format off - -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) - -//Macros -#define KC_LOWER MO(_LOWER) -#define XXXX XXXXXXX -#define ____ _______ -#define KC_ADJ MO(_ADJUST) - -#define LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS \ - KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) -#define RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER \ - LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER -#define GRV__QUOT KC_GRV, KC_QUOT - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty */ - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | S | D | F | G | | H | J | K | L | ; |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| Z | X | C | V | B | ` | ' | N | M | , | . | / |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, - KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L____SCLN, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, N_____M____COMM__DOT___SLSH, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), - - /* Colemak */ - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | R | S | T | D | | H | N | E | I | O |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| Z | X | C | V | B | ` | ' | K | M | , | . | / |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ -#ifdef ENABLE_COLEMAK - [_COLEMAK] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, Q_____W_____F_____P_____G, J_____L_____U_____Y____SCLN, KC_BSLS, - KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, K_____M____COMM__DOT___SLSH, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), -#endif - - /* Dvorak */ -#define GRV__SLSH KC_GRV, KC_SLSH - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | O | E | U | I | | D | H | T | N | S |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| ; | Q | J | K | X | ` | / | B | M | W | V | Z |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ -#ifdef ENABLE_DVORAK - [_DVORAK] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, QUOT_COMM___DOT____P_____Y, F_____G_____C_____R_____L, KC_BSLS, - KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, - KC_LSFT, SCLN___Q_____J_____K_____X, GRV__SLSH, B_____M_____W_____V_____Z, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), -#endif - - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | O | E | I | U | | G | T | K | S | N |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| Z | X | C | V | F | ` | ' | B | H | J | L | / |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ -#ifdef ENABLE_EUCALYN - [_EUCALYN] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, Q_____W___COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, - KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____F, GRV__QUOT, B_____H_____J_____L____SLSH, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), -#endif - - /* Keypad */ -#define KP_TAB__PSLS_PAST KC_TAB, KC_PSLS, KC_PAST -#define KP__7_____8_____9 KC_KP_7, KC_KP_8, KC_KP_9 -#define KP__4_____5_____6 KC_KP_4, KC_KP_5, KC_KP_6 -#define KP__1_____2_____3 KC_KP_1, KC_KP_2, KC_KP_3 -#define KP__0___COMM_PDOT KC_KP_0, KC_COMM, KC_PDOT -#define F1___F6 KC_F1, KC_F6 -#define F2___F7 KC_F2, KC_F7 -#define F3___F8 KC_F3, KC_F8 -#define F4___F9 KC_F4, KC_F9 -#define F5__F10 KC_F5, KC_F10 -#define FF12 LT(_PADFUNC,KC_F12) - /* ,-----------------------------------. ,-----------------------------------. - * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | 4 | 5 | 6 | - | F3 | F8 | | F3 | F8 | - | 4 | 5 | 6 | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | 1 | 2 | 3 | + | F4 | F9 | F11 | F11 | F4 | F9 | + | 1 | 2 | 3 | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | - * `-----------------------------------------------------------------------------------' - */ - [_KEYPAD] = LAYOUT_wrapper( - KP_TAB__PSLS_PAST, KC_DEL, F1___F6, F1___F6, KC_DEL, KP_TAB__PSLS_PAST, - KP__7_____8_____9, KC_BSPC, F2___F7, F2___F7, KC_BSPC, KP__7_____8_____9, - KP__4_____5_____6, KC_PMNS, F3___F8, F3___F8, KC_PMNS, KP__4_____5_____6, - KP__1_____2_____3, KC_PPLS, F4___F9, KC_F11,KC_F11, F4___F9, KC_PPLS, KP__1_____2_____3, - KP__0___COMM_PDOT, KC_PENT, F5__F10, FF12, FF12, F5__F10, KC_PENT, KP__0___COMM_PDOT - ), - - /* AUX modifier key layer - * ,-----------------------------------. ,-----------------------------------. - * | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | | 00 | | | | | | | | | | | 00 | | - * `-----------------------------------------------------------------------------------' - */ - [_KAUX] = LAYOUT( - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ - ), - - /* Keypad function layer */ -#define PAUS__SLCK__PSCR KC_PAUS, KC_SCRL, KC_PSCR -#define PSCR__SLCK__PAUS KC_PSCR, KC_SCRL, KC_PAUS -#define HOME___UP___PGUP KC_HOME, KC_UP, KC_PGUP -#define PGUP___UP___HOME KC_PGUP, KC_UP, KC_HOME -#define DEL____INS__LEFT__DOWN__RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT -#define LEFT__DOWN__RGHT___INS___DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL -#define PGDN___ADJ___ADJ__PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN - /* ,-----------------------------------------. ,-----------------------------------------. - * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | |Delete|Insert| Left | Down | Right| | Left | Down | Right|Insert|Delete| | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | End | | PgDn |Adjust|Adjust| PgDn | | End | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_PADFUNC] = LAYOUT_wrapper( - XXXX, XXXX, XXXX, PAUS__SLCK__PSCR, PSCR__SLCK__PAUS, XXXX, XXXX, XXXX, - XXXX, XXXX, XXXX, HOME___UP___PGUP, PGUP___UP___HOME, XXXX, XXXX, XXXX, - XXXX, DEL____INS__LEFT__DOWN__RGHT, LEFT__DOWN__RGHT___INS___DEL, XXXX, - XXXX, XXXX, XXXX,KC_END,XXXX, PGDN___ADJ___ADJ__PGDN, XXXX,KC_END,XXXX, XXXX, XXXX, - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX - ), - - /* Lower */ -#define XXXX__PAUS__SLCK___INS XXXX, KC_PAUS, KC_SCRL, KC_INS -#define XXXX___INS__SLCK__PAUS__XXXX XXXX, KC_INS, KC_SCRL, KC_PAUS, XXXX -#define ADJ___ADJ KC_ADJ, KC_ADJ -#define HOME__XXXX___UP____DEL__PGUP KC_HOME, XXXX, KC_UP, KC_DEL, KC_PGUP -#define PGUP___DEL___UP___XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXX, KC_HOME -#define END__LEFT__DOWN__RGHT__PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN -#define PGDN__LEFT__DOWN__RGHT___END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END - /* ,-----------------------------------------. ,-----------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | End | Left | Down | Right| PgDn |Adjust|Adjust| PgDn | Left | Down | Right| End | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | PrtSc| | | | | | | | | PrtSc| | | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT_wrapper( - XXXX, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, - XXXX, XXXX__PAUS__SLCK___INS, XXXX, XXXX___INS__SLCK__PAUS__XXXX, KC_F12, - ____, HOME__XXXX___UP____DEL__PGUP, PGUP___DEL___UP___XXXX__HOME, ____, - ____, END__LEFT__DOWN__RGHT__PGDN, XXXX, XXXX, PGDN__LEFT__DOWN__RGHT___END, ____, - ____, ____,KC_PSCR,____, ____, ____, ADJ___ADJ, ____, ____, ____,KC_PSCR,____, ____ - ), - - /* Raise */ -#define UNDS__MINS KC_UNDS, KC_MINS -#define EQL___PLUS KC_EQL, KC_PLUS -#define LCBR__LBRC KC_LCBR, KC_LBRC -#define RBRC__RCBR KC_RBRC, KC_RCBR -#define MNXT__VOLD__VOLU__MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -#define EISU__EISU xEISU, xEISU -#define KANA__KANA xKANA, xKANA - /* ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | _ | - | | = | + | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | { | [ | | ] | } | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | EISU | EISU | KANA | KANA | Next | Vol- | Vol+ | Play | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT_wrapper( - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, - XXXX, XXXX, XXXX, XXXX, UNDS__MINS, EQL___PLUS, XXXX, XXXX, XXXX, XXXX, - ____, XXXX, XXXX, XXXX, LCBR__LBRC, RBRC__RCBR, XXXX, XXXX, XXXX, ____, - ____, XXXX, XXXX, XXXX, XXXX, EISU__EISU, KANA__KANA, MNXT__VOLD__VOLU__MPLY, ____, - ADJ___ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ___ADJ - ), - - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | |Keypad|Dvorak|Colemk|Euclyn|Qwerty| |Qwerty|Euclyn|Colemk|Dvorak|Keypad| | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Reset|RGBRST|RGB ON|Aud on| Win | | Win |Aud on|RGB ON|RGBRST| | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | HUE+ | SAT+ | VAL+ |RGB md|Audoff| Mac | | Mac |Audoff|RGB md| VAL+ | SAT+ | HUE+ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | HUE- | SAT- | VAL- | | | | | | | | | VAL- | SAT- | HUE- | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, - XXXXXXX, QK_BOOT, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ - ), - - /* AUX modifier key layer */ -#define BSPC__RAEN KC_BSPC, LT(_RAISE,KC_ENT) - /* ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | BS | Enter| | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_AUX] = LAYOUT_wrapper( - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, BSPC__RAEN, ____, ____, ____, ____, ____, ____, ____ - ) -}; - -int current_default_layer; - -layer_state_t default_layer_state_set_user(layer_state_t state) { - current_default_layer = get_highest_layer(state); - return state; -} - -void update_base_layer(int base) -{ - if( current_default_layer != base ) { - eeconfig_update_default_layer(1UL<event.pressed) { - update_base_layer(_QWERTY); - } - return false; - break; - case COLEMAK: -#ifdef ENABLE_COLEMAK - if (record->event.pressed) { - update_base_layer(_COLEMAK); - } -#endif - return false; - break; - case DVORAK: -#ifdef ENABLE_DVORAK - if (record->event.pressed) { - update_base_layer(_DVORAK); - } -#endif - return false; - break; - case EUCALYN: -#ifdef ENABLE_EUCALYN - if (record->event.pressed) { - update_base_layer(_EUCALYN); - } -#endif - return false; - break; - case KEYPAD: - if (record->event.pressed) { - update_base_layer(_KEYPAD); - } - return false; - break; - case ZERO2: - if (record->event.pressed) { - SEND_STRING("00"); - } - return false; - break; - case xEISU: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG2); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case xKANA: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG1); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - } - #endif - break; - } - return true; -} diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk deleted file mode 100644 index 3097316fba0a..000000000000 --- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk +++ /dev/null @@ -1,24 +0,0 @@ -USER_NAME := mtei -SPLIT_KEYBOARD = yes - - CONSOLE_ENABLE = no # Console for debug - COMMAND_ENABLE = no # Commands for debug and configuration - # CONSOLE_ENABLE and COMMAND_ENABLE - # yes, no +1500 - # yes, yes +3200 - # no, yes +400 -LTO_ENABLE = no # if firmware size over limit, try this option -LED_ANIMATIONS = yes - -# Helix Spacific Build Options -# you can uncomment and edit follows 7 Variables -# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。 -# OLED_ENABLE = no # OLED_ENABLE -# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c" -# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.) -# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) -# LED_ANIMATIONS = yes # LED animations -# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) -OLED_SELECT = core - -SRC += oled_display.c diff --git a/keyboards/helix/rev2/keymaps/froggy/keymap.c b/keyboards/helix/rev2/keymaps/froggy/keymap.c index dc047d311874..1680147157de 100644 --- a/keyboards/helix/rev2/keymaps/froggy/keymap.c +++ b/keyboards/helix/rev2/keymaps/froggy/keymap.c @@ -181,7 +181,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif // define variables for reactive RGB @@ -440,41 +439,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //keyboard start-up code. Runs once when the firmware starts up. void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif #ifdef RGBLIGHT_ENABLE RGB_current_mode = rgblight_get_mode(); #endif } -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick -} - -void shutdown_user(void) -{ - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif - - //assign the right code to your layers for OLED display #define L_BASE 0 #define L_OPT 2 diff --git a/keyboards/helix/rev2/keymaps/xulkal/config.h b/keyboards/helix/rev2/keymaps/xulkal/config.h deleted file mode 100644 index e2b325450a63..000000000000 --- a/keyboards/helix/rev2/keymaps/xulkal/config.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -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 - -// place overrides here - -// If you need more program area, try select and reduce rgblight modes to use. - -// Selection of RGBLIGHT MODE to use. -#if defined(LED_ANIMATIONS) -# define RGBLIGHT_EFFECT_BREATHING -# define RGBLIGHT_EFFECT_RAINBOW_MOOD -# define RGBLIGHT_EFFECT_RAINBOW_SWIRL -# define RGBLIGHT_EFFECT_SNAKE -# define RGBLIGHT_EFFECT_KNIGHT -# define RGBLIGHT_EFFECT_CHRISTMAS -# define RGBLIGHT_EFFECT_STATIC_GRADIENT -//#define RGBLIGHT_EFFECT_RGB_TEST -//#define RGBLIGHT_EFFECT_ALTERNATING -#endif diff --git a/keyboards/helix/rev2/keymaps/xulkal/keymap.c b/keyboards/helix/rev2/keymaps/xulkal/keymap.c deleted file mode 100644 index 28ca2e807bd0..000000000000 --- a/keyboards/helix/rev2/keymaps/xulkal/keymap.c +++ /dev/null @@ -1,69 +0,0 @@ -#include QMK_KEYBOARD_H -#include "xulkal.h" - -#ifdef PROTOCOL_LUFA -#include "lufa.h" -#include "split_util.h" -#endif - -#define EXPAND_LAYOUT(...) LAYOUT(__VA_ARGS__) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty - * ,-----------------------------------------. ,-----------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BkSp | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * |FN(CAPS)| A | S | D | F | G | | H | J | K | L | ; | Enter| - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Sft[ | Z | X | C | V | B |RGBTOG|RGBRST| N | M | , | . | / | Sft] | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctl- | Win | LOWER| RAISE| Alt | Space|RGBRMOD|RGBMOD|Space| Left | Up | Down | Right| Ctl= | - * `-------------------------------------------------------------------------------------------------' - */ - [_QWERTY] = EXPAND_LAYOUT( - _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, - _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, - _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, - _________________QWERTY_L4_________________, KC_MINS, KC_EQL, _________________QWERTY_R4_________________, - _________________QWERTY_L5_________________, KC_LBRC, KC_RBRC, _________________QWERTY_R5_________________ - ), - -#ifndef GAMELAYER_DISABLE - [_GAME] = EXPAND_LAYOUT( - ___________________GAME_L1_________________, ___________________GAME_R1_________________, - ___________________GAME_L2_________________, ___________________GAME_R2_________________, - ___________________GAME_L3_________________, ___________________GAME_R3_________________, - ___________________GAME_L4_________________, KC_MINS, KC_EQL, ___________________GAME_R4_________________, - ___________________GAME_L5_________________, KC_LBRC, KC_RBRC, ___________________GAME_R5_________________ - ), -#endif - - [_LOWER] = EXPAND_LAYOUT( - __________________LOWER_L1_________________, __________________LOWER_R1_________________, - __________________LOWER_L2_________________, __________________LOWER_R2_________________, - __________________LOWER_L3_________________, __________________LOWER_R3_________________, - __________________LOWER_L4_________________, _______, _______, __________________LOWER_R4_________________, - __________________LOWER_L5_________________, _______, _______, __________________LOWER_R5_________________ - ), - - [_RAISE] = EXPAND_LAYOUT( - __________________RAISE_L1_________________, __________________RAISE_R1_________________, - __________________RAISE_L2_________________, __________________RAISE_R2_________________, - __________________RAISE_L3_________________, __________________RAISE_R3_________________, - __________________RAISE_L4_________________, _______, _______, __________________RAISE_R4_________________, - __________________RAISE_L5_________________, _______, _______, __________________RAISE_R5_________________ - ), - -#ifdef TRILAYER_ENABLED - [_ADJUST] = EXPAND_LAYOUT( - _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, - _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, - _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, - _________________ADJUST_L4_________________, _______, _______, _________________ADJUST_R4_________________, - _________________ADJUST_L5_________________, _______, _______, _________________ADJUST_R5_________________ - ), -#endif -}; diff --git a/keyboards/helix/rev2/keymaps/xulkal/rules.mk b/keyboards/helix/rev2/keymaps/xulkal/rules.mk deleted file mode 100644 index 09e14f46ee9d..000000000000 --- a/keyboards/helix/rev2/keymaps/xulkal/rules.mk +++ /dev/null @@ -1,14 +0,0 @@ -RGBLIGHT_ENABLE = yes -# Helix specific define for correct RGBLED_NUM -OPT_DEFS += -DRGBLED_BACK - -OLED_ENABLE = yes -# Helix specific font file -OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\" -# Xulkal specific oled define -OPT_DEFS += -DOLED_90ROTATION - -SPLIT_KEYBOARD = yes - -# Explicitly disable helix standard post-processing -KEYBOARD_LOCAL_FEATURES_MK := diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c index 20fa181d776b..6c060aadec9f 100644 --- a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c +++ b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c @@ -171,7 +171,6 @@ float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_plover[][2] = SONG(PLOVER_SOUND); float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); -float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); #endif // define variables for reactive RGB @@ -322,40 +321,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } void matrix_init_user(void) { - #ifdef AUDIO_ENABLE - startup_user(); - #endif #ifdef RGBLIGHT_ENABLE RGB_current_mode = rgblight_get_mode(); #endif } - -#ifdef AUDIO_ENABLE - -void startup_user(void) -{ - _delay_ms(20); // gets rid of tick -} - -void shutdown_user(void) -{ - _delay_ms(150); - stop_all_notes(); -} - -void music_on_user(void) -{ - music_scale_user(); -} - -void music_scale_user(void) -{ - PLAY_SONG(music_scale); -} - -#endif - #ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { diff --git a/keyboards/helix/rev3_4rows/config.h b/keyboards/helix/rev3_4rows/config.h index 1e60ed1f0f39..000f99834a4a 100644 --- a/keyboards/helix/rev3_4rows/config.h +++ b/keyboards/helix/rev3_4rows/config.h @@ -41,9 +41,6 @@ along with this program. If not, see . #define SPLIT_HAND_MATRIX_GRID D7,B2 #define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT -/* Dip switch on matrix grid */ -#define DIP_SWITCH_MATRIX_GRID { {0,6}, {1,6}, {5,6}, {6,6} } - #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_LED_COUNT 50 # define RGB_MATRIX_KEYPRESSES // reacts to keypresses diff --git a/keyboards/helix/rev3_4rows/info.json b/keyboards/helix/rev3_4rows/info.json index ffe1c987e2b2..79d4847c7b02 100644 --- a/keyboards/helix/rev3_4rows/info.json +++ b/keyboards/helix/rev3_4rows/info.json @@ -12,7 +12,10 @@ "driver": "ws2812", "sat_steps": 8, "val_steps": 8, - "speed_steps": 10, + "speed_steps": 10 + }, + "dip_switch": { + "matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ] }, "encoder": { "rotary": [ diff --git a/keyboards/helix/rev3_5rows/config.h b/keyboards/helix/rev3_5rows/config.h index f48115663cb9..44bbc5f194ce 100644 --- a/keyboards/helix/rev3_5rows/config.h +++ b/keyboards/helix/rev3_5rows/config.h @@ -41,9 +41,6 @@ along with this program. If not, see . #define SPLIT_HAND_MATRIX_GRID D7,B2 #define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT -/* Dip switch on matrix grid */ -#define DIP_SWITCH_MATRIX_GRID { {0,6}, {1,6}, {5,6}, {6,6} } - #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_LED_COUNT 64 # define RGB_MATRIX_KEYPRESSES // reacts to keypresses diff --git a/keyboards/helix/rev3_5rows/info.json b/keyboards/helix/rev3_5rows/info.json index f7546b1322cd..5eb5aee93feb 100644 --- a/keyboards/helix/rev3_5rows/info.json +++ b/keyboards/helix/rev3_5rows/info.json @@ -13,6 +13,77 @@ "sat_steps": 8, "val_steps": 8, "speed_steps": 10 + "layout": [ + {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4}, + {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4}, + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 16, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 32, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 48, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 64, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 80, "y": 16, "flags": 4}, + {"matrix": [2, 5], "x": 80, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 64, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 48, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 32, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 16, "y": 32, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4}, + {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 32, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 48, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 64, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 80, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 96, "y": 48, "flags": 4}, + {"matrix": [4, 6], "x": 96, "y": 64, "flags": 4}, + {"matrix": [4, 5], "x": 80, "y": 64, "flags": 4}, + {"matrix": [4, 4], "x": 64, "y": 64, "flags": 4}, + {"matrix": [4, 3], "x": 48, "y": 64, "flags": 4}, + {"matrix": [4, 2], "x": 32, "y": 64, "flags": 4}, + {"matrix": [4, 1], "x": 16, "y": 64, "flags": 4}, + {"matrix": [4, 0], "x": 0, "y": 64, "flags": 4}, + {"matrix": [5, 5], "x": 144, "y": 0, "flags": 4}, + {"matrix": [5, 4], "x": 160, "y": 0, "flags": 4}, + {"matrix": [5, 3], "x": 176, "y": 0, "flags": 4}, + {"matrix": [5, 2], "x": 192, "y": 0, "flags": 4}, + {"matrix": [5, 1], "x": 208, "y": 0, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 0, "flags": 4}, + {"matrix": [6, 0], "x": 224, "y": 16, "flags": 4}, + {"matrix": [6, 1], "x": 208, "y": 16, "flags": 4}, + {"matrix": [6, 2], "x": 192, "y": 16, "flags": 4}, + {"matrix": [6, 3], "x": 176, "y": 16, "flags": 4}, + {"matrix": [6, 4], "x": 160, "y": 16, "flags": 4}, + {"matrix": [6, 5], "x": 144, "y": 16, "flags": 4}, + {"matrix": [7, 5], "x": 144, "y": 32, "flags": 4}, + {"matrix": [7, 4], "x": 160, "y": 32, "flags": 4}, + {"matrix": [7, 3], "x": 176, "y": 32, "flags": 4}, + {"matrix": [7, 2], "x": 192, "y": 32, "flags": 4}, + {"matrix": [7, 1], "x": 208, "y": 32, "flags": 4}, + {"matrix": [7, 0], "x": 224, "y": 32, "flags": 4}, + {"matrix": [8, 0], "x": 224, "y": 48, "flags": 4}, + {"matrix": [8, 1], "x": 208, "y": 48, "flags": 4}, + {"matrix": [8, 2], "x": 192, "y": 48, "flags": 4}, + {"matrix": [8, 3], "x": 176, "y": 48, "flags": 4}, + {"matrix": [8, 4], "x": 160, "y": 48, "flags": 4}, + {"matrix": [8, 5], "x": 144, "y": 48, "flags": 4}, + {"matrix": [8, 6], "x": 128, "y": 48, "flags": 4}, + {"matrix": [9, 6], "x": 128, "y": 64, "flags": 4}, + {"matrix": [9, 5], "x": 144, "y": 64, "flags": 4}, + {"matrix": [9, 4], "x": 160, "y": 64, "flags": 4}, + {"matrix": [9, 3], "x": 176, "y": 64, "flags": 4}, + {"matrix": [9, 2], "x": 192, "y": 64, "flags": 4}, + {"matrix": [9, 1], "x": 208, "y": 64, "flags": 4}, + {"matrix": [9, 0], "x": 224, "y": 64, "flags": 4} + ], + "max_brightness": 128, + "split_count": [32, 32] + }, + "dip_switch": { + "matrix_grid": [ [0,6], [1,6], [5,6], [6,6] ] }, "encoder": { "rotary": [ @@ -32,8 +103,7 @@ "animations": { "rainbow_mood": true, "rainbow_swirl": true, - "static_gradient": true, - "rgb_test": true + "static_gradient": true } }, "processor": "atmega32u4", diff --git a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c index 5ca944914a08..2d637c365d17 100644 --- a/keyboards/helix/rev3_5rows/keymaps/default/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/default/keymap.c @@ -121,22 +121,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { /* Left side encoder */ - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } else if (index == 1) { /* Right side encoder */ - if (clockwise) { - tap_code(KC_DOWN); - } else { - tap_code(KC_UP); - } - } - return true; -} +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LOWER] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_HOME, KC_END) }, + [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) }, + [_ADJUST] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, +}; +#endif layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); diff --git a/keyboards/helix/rev3_5rows/keymaps/default/rules.mk b/keyboards/helix/rev3_5rows/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h deleted file mode 100644 index a6fd32c613c3..000000000000 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2022 Takeshi Ishii (mtei@github) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#undef TAPPING_TERM -#define TAPPING_TERM 300 -#define PERMISSIVE_HOLD - -#undef OLED_UPDATE_INTERVAL -#ifdef DEBUG_MATRIX_SCAN_RATE -# define OLED_UPDATE_INTERVAL 500 -#else -# define OLED_UPDATE_INTERVAL 50 -#endif - -#define PSEUDO_SPRINTF_DEFINED - diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c deleted file mode 100644 index dc2759d5b6aa..000000000000 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c +++ /dev/null @@ -1,474 +0,0 @@ -/* Copyright 2020 mtei - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "key_blocks.h" -#include "layer_number_util.h" - -#ifdef ENABLE_COLEMAK -# define COLEMAK_Colemak (COLEMAK, " Colemak"), -#else -# define COLEMAK_Colemak -#endif -#ifdef ENABLE_DVORAK -# define DVORAK_Dvorak (DVORAK, " Dvorak"), -#else -# define DVORAK_Dvorak -#endif -#ifdef ENABLE_EUCALYN -# define EUCALYN_Eucalyn (EUCALYN, " Eucalyn"), -#else -# define EUCALYN_Eucalyn -#endif - -#define LAYER_NAME_LIST \ - (QWERTY, " Qwerty"), \ - COLEMAK_Colemak \ - DVORAK_Dvorak \ - EUCALYN_Eucalyn \ - (KEYPAD, " Keypad"), \ - (AUX, ":AUX"), \ - (KAUX, ":00"), \ - (LOWER, ":Func"), \ - (RAISE, ":Extra"), \ - (PADFUNC, ":PadFunc"), \ - (ADJUST, ":Adjust") - -enum layer_number { - // _QWERTY, _COLEMAK, ... - MAP(BUILD_LAYER_ENUM_NUMBER, LAYER_NAME_LIST) -}; - -#ifdef OLED_ENABLE -// static const char QWERTY_name[] PROGMEM = " Qwerty"; ... -MAP(BUILD_LAYER_NAME_STR, LAYER_NAME_LIST) - -const char *layer_names[] = { - // [_QWERTY] = QWERTY_name, ... - MAP(BUILD_LAYER_NAME_TABLE, LAYER_NAME_LIST) -}; -#endif - -const size_t num_of_layer_names = GET_ITEM_COUNT(LAYER_NAME_LIST); - -extern keymap_config_t keymap_config; - -extern uint8_t is_master; - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - EUCALYN, - KEYPAD, - xEISU, - xKANA, - ZERO2, - RGBRST -}; - -// clang-format off - -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) - -//Macros -#define KC_LOWER MO(_LOWER) -#define XXXX XXXXXXX -#define ____ _______ -#define KC_ADJ MO(_ADJUST) - -#define LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS \ - KC_LOWER, KC_LOWER, KC_CAPS, KC_LALT, KC_LGUI, KC_SPC, LT(_RAISE,KC_BSPC) -#define RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER \ - LT(_RAISE,KC_ENT), KC_SPC, KC_RGUI, KC_RALT, KC_APP, KC_LOWER, KC_LOWER -#define GRV__QUOT KC_GRV, KC_QUOT - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - /* Qwerty */ - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | S | D | F | G | | H | J | K | L | ; |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| Z | X | C | V | B | ` | ' | N | M | , | . | / |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ - [_QWERTY] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, Q_____W_____E_____R_____T, Y_____U_____I_____O_____P, KC_BSLS, - KC_LCTL, A_____S_____D_____F_____G, H_____J_____K_____L____SCLN, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, N_____M____COMM__DOT___SLSH, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), - - /* Colemak */ - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | Q | W | F | P | G | | J | L | U | Y | ; | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | R | S | T | D | | H | N | E | I | O |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| Z | X | C | V | B | ` | ' | K | M | , | . | / |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ -#ifdef ENABLE_COLEMAK - [_COLEMAK] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, Q_____W_____F_____P_____G, J_____L_____U_____Y____SCLN, KC_BSLS, - KC_LCTL, A_____R_____S_____T_____D, H_____N_____E_____I_____O, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____B, GRV__QUOT, K_____M____COMM__DOT___SLSH, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), -#endif - - /* Dvorak */ -#define GRV__SLSH KC_GRV, KC_SLSH - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | ' | , | . | P | Y | | F | G | C | R | L | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | O | E | U | I | | D | H | T | N | S |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| ; | Q | J | K | X | ` | / | B | M | W | V | Z |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ -#ifdef ENABLE_DVORAK - [_DVORAK] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, QUOT_COMM___DOT____P_____Y, F_____G_____C_____R_____L, KC_BSLS, - KC_LCTL, A_____O_____E_____U_____I, D_____H_____T_____N_____S, KC_RCTL, - KC_LSFT, SCLN___Q_____J_____K_____X, GRV__SLSH, B_____M_____W_____V_____Z, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), -#endif - - /* Eucalyn (http://eucalyn.hatenadiary.jp/entry/about-eucalyn-layout) */ - /* ,-----------------------------------. ,-----------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BS | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Tab | Q | W | , | . | ; | | M | R | D | Y | P | \ | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | Ctrl| A | O | E | I | U | | G | T | K | S | N |Ctrl | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Shift| Z | X | C | V | F | ` | ' | B | H | J | L | / |Shift| - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * |Lower|Lower|Caps | Alt | GUI |Space| BS |Enter|Space| GUI | Alt |Menu |Lower|Lower| - * `-----------------------------------------------------------------------------------' - */ -#ifdef ENABLE_EUCALYN - [_EUCALYN] = LAYOUT_wrapper( - KC_ESC, _1_____2_____3_____4_____5, _6_____7_____8_____9_____0, KC_BSPC, - KC_TAB, Q_____W___COMM___DOT__SCLN, M_____R_____D_____Y_____P, KC_BSLS, - KC_LCTL, A_____O_____E_____I_____U, G_____T_____K_____S_____N, KC_RCTL, - KC_LSFT, Z_____X_____C_____V_____F, GRV__QUOT, B_____H_____J_____L____SLSH, KC_RSFT, - LOWER__LOWER__CAPS__LALT__LGUI__SPC__RABS, RAEN___SPC___RGUI__RALT__APP___LOWER__LOWER - ), -#endif - - /* Keypad */ -#define KP_TAB__PSLS_PAST KC_TAB, KC_PSLS, KC_PAST -#define KP__7_____8_____9 KC_KP_7, KC_KP_8, KC_KP_9 -#define KP__4_____5_____6 KC_KP_4, KC_KP_5, KC_KP_6 -#define KP__1_____2_____3 KC_KP_1, KC_KP_2, KC_KP_3 -#define KP__0___COMM_PDOT KC_KP_0, KC_COMM, KC_PDOT -#define F1___F6 KC_F1, KC_F6 -#define F2___F7 KC_F2, KC_F7 -#define F3___F8 KC_F3, KC_F8 -#define F4___F9 KC_F4, KC_F9 -#define F5__F10 KC_F5, KC_F10 -#define FF12 LT(_PADFUNC,KC_F12) - /* ,-----------------------------------. ,-----------------------------------. - * | Tab | / | * | Del | F1 | F6 | | F1 | F6 | Del | Tab | / | * | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | 7 | 8 | 9 | BS | F2 | F7 | | F2 | F7 | BS | 7 | 8 | 9 | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | 4 | 5 | 6 | - | F3 | F8 | | F3 | F8 | - | 4 | 5 | 6 | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | 1 | 2 | 3 | + | F4 | F9 | F11 | F11 | F4 | F9 | + | 1 | 2 | 3 | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | 0 | , | . |Enter| F5 | F10| F12 | F12 | F5 | F10|Enter| 0 | , | . | - * `-----------------------------------------------------------------------------------' - */ - [_KEYPAD] = LAYOUT_wrapper( - KP_TAB__PSLS_PAST, KC_DEL, F1___F6, F1___F6, KC_DEL, KP_TAB__PSLS_PAST, - KP__7_____8_____9, KC_BSPC, F2___F7, F2___F7, KC_BSPC, KP__7_____8_____9, - KP__4_____5_____6, KC_PMNS, F3___F8, F3___F8, KC_PMNS, KP__4_____5_____6, - KP__1_____2_____3, KC_PPLS, F4___F9, KC_F11,KC_F11, F4___F9, KC_PPLS, KP__1_____2_____3, - KP__0___COMM_PDOT, KC_PENT, F5__F10, FF12, FF12, F5__F10, KC_PENT, KP__0___COMM_PDOT - ), - - /* AUX modifier key layer - * ,-----------------------------------. ,-----------------------------------. - * | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----| |-----+-----+-----+-----+-----+-----| - * | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | | | | | | | | | | | | | | | - * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----| - * | | 00 | | | | | | | | | | | 00 | | - * `-----------------------------------------------------------------------------------' - */ - [_KAUX] = LAYOUT( - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____,ZERO2, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,ZERO2, ____ - ), - - /* Keypad function layer */ -#define PAUS__SLCK__PSCR KC_PAUS, KC_SCRL, KC_PSCR -#define PSCR__SLCK__PAUS KC_PSCR, KC_SCRL, KC_PAUS -#define HOME___UP___PGUP KC_HOME, KC_UP, KC_PGUP -#define PGUP___UP___HOME KC_PGUP, KC_UP, KC_HOME -#define DEL____INS__LEFT__DOWN__RGHT KC_DEL, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT -#define LEFT__DOWN__RGHT___INS___DEL KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL -#define PGDN___ADJ___ADJ__PGDN KC_PGDN, KC_ADJ, KC_ADJ, KC_PGDN - /* ,-----------------------------------------. ,-----------------------------------------. - * | | | | Pause| ScrLk| PtrSc| | PtrSc| ScrLk| Pause| | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | Home | Up | PgUp | | PgUp | Up | Home | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | |Delete|Insert| Left | Down | Right| | Left | Down | Right|Insert|Delete| | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | End | | PgDn |Adjust|Adjust| PgDn | | End | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_PADFUNC] = LAYOUT_wrapper( - XXXX, XXXX, XXXX, PAUS__SLCK__PSCR, PSCR__SLCK__PAUS, XXXX, XXXX, XXXX, - XXXX, XXXX, XXXX, HOME___UP___PGUP, PGUP___UP___HOME, XXXX, XXXX, XXXX, - XXXX, DEL____INS__LEFT__DOWN__RGHT, LEFT__DOWN__RGHT___INS___DEL, XXXX, - XXXX, XXXX, XXXX,KC_END,XXXX, PGDN___ADJ___ADJ__PGDN, XXXX,KC_END,XXXX, XXXX, XXXX, - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, ____, ____, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX - ), - - /* Lower */ -#define XXXX__PAUS__SLCK___INS XXXX, KC_PAUS, KC_SCRL, KC_INS -#define XXXX___INS__SLCK__PAUS__XXXX XXXX, KC_INS, KC_SCRL, KC_PAUS, XXXX -#define ADJ___ADJ KC_ADJ, KC_ADJ -#define HOME__XXXX___UP____DEL__PGUP KC_HOME, XXXX, KC_UP, KC_DEL, KC_PGUP -#define PGUP___DEL___UP___XXXX__HOME KC_PGUP, KC_DEL, KC_UP, XXXX, KC_HOME -#define END__LEFT__DOWN__RGHT__PGDN KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN -#define PGDN__LEFT__DOWN__RGHT___END KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_END - /* ,-----------------------------------------. ,-----------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | |Pause | ScrLk| Ins | | | | Ins | ScrLk|Pause | | F12 | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Home | | Up |Delete| PgUp | | PgUp |Delete| Up | | Home | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | End | Left | Down | Right| PgDn |Adjust|Adjust| PgDn | Left | Down | Right| End | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | PrtSc| | | | | | | | | PrtSc| | | - * `-------------------------------------------------------------------------------------------------' - */ - [_LOWER] = LAYOUT_wrapper( - XXXX, F1____F2____F3____F4____F5, F6____F7____F8____F9____F10, KC_F11, - XXXX, XXXX__PAUS__SLCK___INS, XXXX, XXXX___INS__SLCK__PAUS__XXXX, KC_F12, - ____, HOME__XXXX___UP____DEL__PGUP, PGUP___DEL___UP___XXXX__HOME, ____, - ____, END__LEFT__DOWN__RGHT__PGDN, XXXX, XXXX, PGDN__LEFT__DOWN__RGHT___END, ____, - ____, ____,KC_PSCR,____, ____, ____, ADJ___ADJ, ____, ____, ____,KC_PSCR,____, ____ - ), - - /* Raise */ -#define UNDS__MINS KC_UNDS, KC_MINS -#define EQL___PLUS KC_EQL, KC_PLUS -#define LCBR__LBRC KC_LCBR, KC_LBRC -#define RBRC__RCBR KC_RBRC, KC_RCBR -#define MNXT__VOLD__VOLU__MPLY KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY -#define EISU__EISU xEISU, xEISU -#define KANA__KANA xKANA, xKANA - /* ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | _ | - | | = | + | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | { | [ | | ] | } | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | EISU | EISU | KANA | KANA | Next | Vol- | Vol+ | Play | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_RAISE] = LAYOUT_wrapper( - XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, - XXXX, XXXX, XXXX, XXXX, UNDS__MINS, EQL___PLUS, XXXX, XXXX, XXXX, XXXX, - ____, XXXX, XXXX, XXXX, LCBR__LBRC, RBRC__RCBR, XXXX, XXXX, XXXX, ____, - ____, XXXX, XXXX, XXXX, XXXX, EISU__EISU, KANA__KANA, MNXT__VOLD__VOLU__MPLY, ____, - ADJ___ADJ, XXXX, ____, ____, XXXX, ____, ____, XXXX, ____, ____, XXXX, ADJ___ADJ - ), - - /* Adjust (Lower + Raise) - * ,-----------------------------------------. ,-----------------------------------------. - * | |Keypad|Dvorak|Colemk|Euclyn|Qwerty| |Qwerty|Euclyn|Colemk|Dvorak|Keypad| | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | Reset|RGBRST|RGB ON|Aud on| Win | | Win |Aud on|RGB ON|RGBRST| | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | HUE+ | SAT+ | VAL+ |RGB md|Audoff| Mac | | Mac |Audoff|RGB md| VAL+ | SAT+ | HUE+ | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | HUE- | SAT- | VAL- | | | | | | | | | VAL- | SAT- | HUE- | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_ADJUST] = LAYOUT( - XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX, - XXXXXXX, QK_BOOT, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX, - RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, - RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD, - _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ - ), - - /* AUX modifier key layer */ -#define BSPC__RAEN KC_BSPC, LT(_RAISE,KC_ENT) - /* ,-----------------------------------------. ,-----------------------------------------. - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------| |------+------+------+------+------+------| - * | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | BS | Enter| | | | | | | | - * `-------------------------------------------------------------------------------------------------' - */ - [_AUX] = LAYOUT_wrapper( - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, - ____, ____, ____, ____, ____, BSPC__RAEN, ____, ____, ____, ____, ____, ____, ____ - ) -}; - -int current_default_layer; - -layer_state_t default_layer_state_set_user(layer_state_t state) { - current_default_layer = get_highest_layer(state); - return state; -} - -void update_base_layer(int base) -{ - if( current_default_layer != base ) { - eeconfig_update_default_layer(1UL<event.pressed) { - update_base_layer(_QWERTY); - } - return false; - break; - case COLEMAK: -#ifdef ENABLE_COLEMAK - if (record->event.pressed) { - update_base_layer(_COLEMAK); - } -#endif - return false; - break; - case DVORAK: -#ifdef ENABLE_DVORAK - if (record->event.pressed) { - update_base_layer(_DVORAK); - } -#endif - return false; - break; - case EUCALYN: -#ifdef ENABLE_EUCALYN - if (record->event.pressed) { - update_base_layer(_EUCALYN); - } -#endif - return false; - break; - case KEYPAD: - if (record->event.pressed) { - update_base_layer(_KEYPAD); - } - return false; - break; - case ZERO2: - if (record->event.pressed) { - SEND_STRING("00"); - } - return false; - break; - case xEISU: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG2); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG2); - } - return false; - break; - case xKANA: - if (record->event.pressed) { - if(keymap_config.swap_lalt_lgui==false){ - register_code(KC_LNG1); - }else{ - SEND_STRING(SS_LALT("`")); - } - } else { - unregister_code(KC_LNG1); - } - return false; - break; - case RGBRST: - #ifdef RGBLIGHT_ENABLE - if (record->event.pressed) { - eeconfig_update_rgblight_default(); - rgblight_enable(); - } - #endif - break; - } - return true; -} diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk b/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk deleted file mode 100644 index a6ce7de118db..000000000000 --- a/keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk +++ /dev/null @@ -1,11 +0,0 @@ -USER_NAME := mtei - - CONSOLE_ENABLE = no # Console for debug - COMMAND_ENABLE = no # Commands for debug and configuration - # CONSOLE_ENABLE and COMMAND_ENABLE - # yes, no +1500 - # yes, yes +3200 - # no, yes +400 -ENCODER_ENABLE = no -LTO_ENABLE = no # if firmware size over limit, try this option -LED_ANIMATIONS = yes diff --git a/keyboards/helix/rev3_5rows/keymaps/via/keymap.c b/keyboards/helix/rev3_5rows/keymaps/via/keymap.c index cc66b90a0dfa..d832393ccc84 100644 --- a/keyboards/helix/rev3_5rows/keymaps/via/keymap.c +++ b/keyboards/helix/rev3_5rows/keymaps/via/keymap.c @@ -121,22 +121,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { /* Left side encoder */ - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - } else if (index == 1) { /* Right side encoder */ - if (clockwise) { - tap_code(KC_DOWN); - } else { - tap_code(KC_UP); - } - } - return true; -} + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_LOWER] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_HOME, KC_END) }, + [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) }, + [_ADJUST] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) }, +}; +#endif bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { diff --git a/keyboards/helix/rev3_5rows/keymaps/via/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/via/oled_display.c index ee5277a7df9f..3cfb8969f694 100644 --- a/keyboards/helix/rev3_5rows/keymaps/via/oled_display.c +++ b/keyboards/helix/rev3_5rows/keymaps/via/oled_display.c @@ -62,7 +62,7 @@ void render_status(void) { break; default: // Or use the write_ln shortcut over adding '\n' to the end of your string - oled_write_ln_P(PSTR("Undefined"), false); + oled_write_ln_P(PSTR("N/A"), false); } oled_write_P(PSTR("\n"), false); @@ -71,7 +71,6 @@ void render_status(void) { led_t led_state = host_keyboard_led_state(); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); - oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); } diff --git a/keyboards/helix/rev3_5rows/keymaps/via/rules.mk b/keyboards/helix/rev3_5rows/keymaps/via/rules.mk index 1e5b99807cb7..715838ecc5d9 100644 --- a/keyboards/helix/rev3_5rows/keymaps/via/rules.mk +++ b/keyboards/helix/rev3_5rows/keymaps/via/rules.mk @@ -1 +1,2 @@ +ENCODER_MAP_ENABLE = yes VIA_ENABLE = yes diff --git a/keyboards/helix/rev3_5rows/rules.mk b/keyboards/helix/rev3_5rows/rules.mk index a46f9d9c59f3..7cd934ebc4e2 100644 --- a/keyboards/helix/rev3_5rows/rules.mk +++ b/keyboards/helix/rev3_5rows/rules.mk @@ -5,6 +5,7 @@ RGB_MATRIX_ENABLE = no OLED_ENABLE = yes ENCODER_ENABLE = yes DIP_SWITCH_ENABLE = no +MOUSEKEY_ENABLE = yes LTO_ENABLE = yes SRC += oled_display.c diff --git a/keyboards/hfdkb/ac001/config.h b/keyboards/hfdkb/ac001/config.h index 6c0c2a2cf613..7d38c7392c01 100644 --- a/keyboards/hfdkb/ac001/config.h +++ b/keyboards/hfdkb/ac001/config.h @@ -32,7 +32,6 @@ #define SPI_MOSI_PAL_MODE 5 #define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 -#define WEAR_LEVELING_BACKING_SIZE (8 * 1024) #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended diff --git a/keyboards/hfdkb/ac001/info.json b/keyboards/hfdkb/ac001/info.json index 0a361d63ed7f..3f896d59881d 100644 --- a/keyboards/hfdkb/ac001/info.json +++ b/keyboards/hfdkb/ac001/info.json @@ -17,6 +17,13 @@ "rows": ["B15"] }, "diode_direction": "ROW2COL", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 8192 + } + }, "ws2812": { "pin": "A1" }, diff --git a/keyboards/hfdkb/ac001/rules.mk b/keyboards/hfdkb/ac001/rules.mk index 81b7e82c3f76..1358ab075a7c 100644 --- a/keyboards/hfdkb/ac001/rules.mk +++ b/keyboards/hfdkb/ac001/rules.mk @@ -10,5 +10,3 @@ NKRO_ENABLE = yes # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow RGB_MATRIX_ENABLE = yes -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash diff --git a/keyboards/hhkb/ansi/keymaps/brett/config.h b/keyboards/hhkb/ansi/keymaps/brett/config.h deleted file mode 100644 index 0711122d7479..000000000000 --- a/keyboards/hhkb/ansi/keymaps/brett/config.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -// Define mousekey settings -#define MOUSEKEY_DELAY 0 -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 2 -#define MOUSEKEY_TIME_TO_MAX 5 -#define MOUSEKEY_WHEEL_DELAY 0 - -#define LSPO_KEY KC_9 -#define RSPC_KEY KC_0 -#define LSPO_MOD KC_LSFT -#define RSPC_MOD KC_RSFT - diff --git a/keyboards/hhkb/ansi/keymaps/brett/keymap.c b/keyboards/hhkb/ansi/keymaps/brett/keymap.c deleted file mode 100644 index 04e3517a9581..000000000000 --- a/keyboards/hhkb/ansi/keymaps/brett/keymap.c +++ /dev/null @@ -1,119 +0,0 @@ -/* -*- eval: (turn-on-orgtbl); -*- - * Brettm12345 HHKB Layout - */ -#include QMK_KEYBOARD_H -#include "brett.h" - -enum layers { - BASE = 0, - HHKB = 1, - PROG = 2, - MOUSE = 3 -}; - -// Tap for tab hold for MOUSE -#define TAB_MOUSE LT(MOUSE, KC_TAB) - -// Tap for space hold for PROG -#define SPACE_PROG LT(PROG, KC_SPC) - -// Tap for ESC hold for CTRL -#define CTL_ESC CTL_T(KC_ESC) - -// Tab for ; hold for PROG -#define PROG_SCLN LT(PROG, KC_SCLN) - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* BASE Level: Default Layer - |---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---| - | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---| - | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backspace | * | - |---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---| - | Control | A | S | D | F | G | H | J | K | L | ; | ' | Return | ****** | * | - |---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---| - | LShift | Z | X | C | V | B | N | M | , | . | / | RShift | HHKB | ****** | * | - |---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---| - - |------+------+----------------------------+------+------| - | LAlt | LGUI | ******* Space/Prog ******* | RGUI | RAlt | - |------+------+----------------------------+------+------| - */ - - [BASE] = LAYOUT( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, - TAB_MOUSE, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, - CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, PROG_SCLN, KC_QUOT, KC_ENT, - SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC, MO(HHKB), - KC_LALT, KC_LGUI, SPACE_PROG, KC_RGUI, KC_RALT), - - /* HHKB Level: Function Layer - |---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----| - | Flash | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | - |---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----| - | Caps | Calc | Mail | Media | Browser | My PC | Browser | u | i | o | Print | [ | ] | Backsp | * | - | | | | Player | Refresh | | Favorites | | | | Screen | | | | | - |---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----| - | Control | Prev | Next | Find | f | g | Browser | Browser | Browser | Browser | ; | ' | Exec | ****** | * | - | | | | | | | Back | Home | Search | Forward | | | | | | - |---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----| - | LShift | Vol+ | Vol- | Mute | Select | b | n | m | , | Again | Browser Search | RShift | HHKB | ****** | * | - |---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----| - - |------+------+----------------------+------+------| - | Menu | LGUI | ******* Play ******* | RGUI | Menu | - |------+------+----------------------+------+------| - */ - [HHKB] = LAYOUT( - FLASH, 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_CALC, KC_MAIL, KC_MSEL, KC_WREF, KC_MYCM, KC_WFAV, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_BSPC, - KC_TRNS, KC_MPRV, KC_MNXT, KC_FIND, KC_TRNS, KC_TRNS, KC_WBAK, KC_WHOM, KC_WSCH, KC_WFWD, KC_TRNS, KC_TRNS, KC_EXEC, - KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_SLCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AGIN, KC_WSCH, KC_TRNS, KC_TRNS, - KC_MENU, KC_TRNS, KC_MPLY, KC_TRNS, KC_MENU), - - - /* Programming Level: Symbols Layer - |--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---| - | Esc | TTY 1 | TTY 2 | TTY 3 | TTY 4 | TTY 5 | TTY 6 | TTY 7 | TTY 8 | TTY 9 | TTY 10 | TTY 11 | TTY 12 | \ | ` | - |--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---| - | Tab/Mouse | => | @ | >>= | =<< | ‖ | <> | <|> | <*> | <@> | |> | <$ | $> | Backsp | * | - |--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---| - | Toggle Mouse | -> | * | <$> | <#> | && | Left | Down | Up | Right | :: | ` | Return | ****** | * | - |--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---| - | LShift | z | x | c | v | b | n | m | <- | -> | <> | Shift | HHKB | ****** | * | - |--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---| - - |------+------+----------------------------+------+------| - | LAlt | LGUI | ******* Space/Prog ******* | RGUI | RAlt | - |------+------+----------------------------+------+------| - */ - [PROG] = LAYOUT( - QK_GESC, LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4), LCA(KC_F5), LCA(KC_F6), LCA(KC_F7), LCA(KC_F8), LCA(KC_F9), LCA(KC_F10), LCA(KC_F11), LCA(KC_F12), KC_TRNS, KC_TRNS, - KC_TRNS, FAT_ARROW, KC_AT, BIND, BIND_FLIPPED, OR, CONCAT, ALT, APPLY, FLAP, PIPE, VOID_LEFT, VOID_RIGHT, KC_TRNS, - TG(MOUSE), SKINNY_ARROW, KC_ASTR, MAP, MAP_FLIPPED, AND, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, DOUBLE_COLON, KC_GRV, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, REVERSE_ARROW, SKINNY_ARROW, CONCAT, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - - /* Mouse Level: Mouse Layer - |--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---| - | Esc | Speed 1 | Speed 2 | Speed 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | - |--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---| - | Mouse(Tab) | Q | Up | Button3 | Button4 | Button5 | Y | U | Button3 | Button4 | Button5 | [ | ] | Backsp | * | - |--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---| - | Control(Esc) | Left | Down | Right | Button1 | Button2 | SLeft | SDown | SUp | SRight | Button1 | Button2 | Control(Return) | ****** | * | - |--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---| - | LShift(() | Z | X | C | V | B | N | M | Button5 | Button4 | Button3 | RShift()) | HHKB | ****** | * | - |--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---| - - |---------+---------+----------------------------+---------+---------| - | LAlt([) | LGUI({) | ******* Space/Prog ******* | RGUI(}) | RAlt(]) | - |---------+---------+----------------------------+---------+---------| - */ - [MOUSE] = LAYOUT( - KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_MS_U, KC_BTN3, KC_BTN4, KC_BTN5, KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN4, KC_BTN5, KC_TRNS, KC_TRNS, KC_TRNS, - TG(MOUSE), KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN1, KC_BTN2, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/hhkb/ansi/keymaps/brett/readme.md b/keyboards/hhkb/ansi/keymaps/brett/readme.md deleted file mode 100644 index fd07b155fb77..000000000000 --- a/keyboards/hhkb/ansi/keymaps/brett/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -# Generated Keymap Layout - -This layout was generated by the QMK API. You can find the JSON data used to -generate this keymap in the file layers.json. - -To make use of this file you will need follow the following steps: - -* Download or Clone QMK Firmware: -* Extract QMK Firmware to a location on your hard drive -* Copy this folder into %s -* You are now ready to compile or use your keymap with the source - -More information can be found in the QMK docs: \ No newline at end of file diff --git a/keyboards/hhkb/ansi/keymaps/brett/rules.mk b/keyboards/hhkb/ansi/keymaps/brett/rules.mk deleted file mode 100644 index 88f57515f13d..000000000000 --- a/keyboards/hhkb/ansi/keymaps/brett/rules.mk +++ /dev/null @@ -1,4 +0,0 @@ -MOUSEKEY_ENABLE = yes -TAP_DANCE_ENABLE = no -LEADER_ENABLE = no -UNICODE_ENABLE = no diff --git a/keyboards/hhkb/ansi/keymaps/tominabox1/.gitignore b/keyboards/hhkb/ansi/keymaps/tominabox1/.gitignore deleted file mode 100644 index 4b8c99bfb86f..000000000000 --- a/keyboards/hhkb/ansi/keymaps/tominabox1/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.h -matrix.c -rules.mk diff --git a/keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c b/keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c deleted file mode 100644 index 61688d399ae5..000000000000 --- a/keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c +++ /dev/null @@ -1,12 +0,0 @@ -#include QMK_KEYBOARD_H -#include "tominabox1.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT(QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, 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, KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, TD(TD_SFT_CPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(2)), - - [1] = LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, KC_CAPS, KC_MFFD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, 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_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), - - [2] = LAYOUT(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS), - - [3] = LAYOUT(QK_GESC, KC_EXLM, KC_EML, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, 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_TRNS, KC_NO, KC_TRNS) -}; diff --git a/keyboards/hhkb/jp/keymaps/dhertz/config.h b/keyboards/hhkb/jp/keymaps/dhertz/config.h deleted file mode 100644 index af2fb9d8a52e..000000000000 --- a/keyboards/hhkb/jp/keymaps/dhertz/config.h +++ /dev/null @@ -1 +0,0 @@ -#define USB_MAX_POWER_CONSUMPTION 100 diff --git a/keyboards/hhkb/jp/keymaps/dhertz/keymap.c b/keyboards/hhkb/jp/keymaps/dhertz/keymap.c deleted file mode 100644 index 5c2511df6416..000000000000 --- a/keyboards/hhkb/jp/keymaps/dhertz/keymap.c +++ /dev/null @@ -1,84 +0,0 @@ -#include QMK_KEYBOARD_H -#include "keymap.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Layer 0: Default Layer - * ,-----------------------------------------------------------. - * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Del|Bsp| - * |-----------------------------------------------------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Enter | - * |------------------------------------------------------` | - * |SrCtl | A| S| D| F| G| H| J| K| L| ;| '| \| | - * |-----------------------------------------------------------| - * |Shift | Z| X| C| V| B| N| M| ,| .| /| `|Up |Shi| - * |-----------------------------------------------------------| - * |NCt|| #|Alt|CmT|CmT| LyrSpc |CGv|Iso|Gui|CSL||Rig|Dow|Lef| - * `-----------------------------------------------------------' - */ - [0] = LAYOUT_jp( - 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_DEL,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, - SRCH_CTL, 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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT, KC_SLSH,KC_NUBS, KC_UP, KC_RSFT, - NC_CTL, HSH_TLD,KC_LALT,CMD_TAB_CMD,CMD_TAB_CMD, LT(2, KC_SPC) , CMD_GRV_CMD, ISO_COUNTRY_CODE,KC_RGUI, CMD_SFT_L, KC_LEFT,KC_DOWN,KC_RGHT - ), - - /* Layer 1: iPad mode (Fixed) - * ,-----------------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | | | | | | | | | | | | | - * |------------------------------------------------------` | - * |CmdSpc| | | | | | | | | | | | | | - * |-----------------------------------------------------------| - * | | | | | | | | | | | | | | | - * |-----------------------------------------------------------| - * | || ~| |CAD| | |CmH| | | || | | | - * `-----------------------------------------------------------' - */ - [1] = LAYOUT_jp( - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, - CMD_SPC,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,CMD_ALT_D,KC_TRNS, KC_TRNS ,CMD_H,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS - ), - - /* Layer 2: HHKB mode (Space) - * ,-----------------------------------------------------------. - * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| - * |-----------------------------------------------------------| - * |Caps |DL0|DL1| | | | | |Psc|Slk|Pus|Up | | | - * |------------------------------------------------------` | - * | |VoD|VoU|Mut| | | |Bsp|Del|CSL|Lef|Rig| | | - * |-----------------------------------------------------------| - * | | | |CAC| | | | | | |Dow| |PgU| | - * |-----------------------------------------------------------| - * | || ~| | | | | | | | ||Hom|PgD|End| - * `-----------------------------------------------------------' - */ - [2] = LAYOUT_jp( - KC_PWR, 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, DF(0), DF(1),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PSCR,KC_SCRL,KC_PAUS, KC_UP,KC_TRNS, - KC_TRNS, KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_TRNS,KC_BSPC, KC_DEL,CMD_SFT_L,KC_LEFT,KC_RGHT,KC_TRNS,KC_PENT, - KC_TRNS, KC_TRNS,KC_TRNS,CMD_ALT_C,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_DOWN,KC_TRNS,KC_PGUP,KC_TRNS, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_HOME,KC_PGDN, KC_END - ), -}; - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case CMD_SPC: - mod_or_mod_with_macro(record, KC_LGUI, " "); - break; - case CMD_H: - mod_or_mod_with_macro(record, KC_RGUI, "H"); - break; - case CMD_ALT_D: - mod_or_mod_with_macro(record, KC_LGUI, SS_LALT("D")); - break; - default: - return true; - } - return false; -} diff --git a/keyboards/hhkb/jp/keymaps/dhertz/keymap.h b/keyboards/hhkb/jp/keymaps/dhertz/keymap.h deleted file mode 100644 index dbefc63800c7..000000000000 --- a/keyboards/hhkb/jp/keymaps/dhertz/keymap.h +++ /dev/null @@ -1,7 +0,0 @@ -#include "dhertz.h" - -enum dhertz_keycodes { - CMD_SPC = NEW_SAFE_RANGE, - CMD_H, - CMD_ALT_D, -}; diff --git a/keyboards/hhkb/jp/keymaps/dhertz/rules.mk b/keyboards/hhkb/jp/keymaps/dhertz/rules.mk deleted file mode 100644 index 5656057b4348..000000000000 --- a/keyboards/hhkb/jp/keymaps/dhertz/rules.mk +++ /dev/null @@ -1,2 +0,0 @@ -OPT_DEFS += -DHHKB_JP - diff --git a/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c b/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c deleted file mode 100644 index e068f81a73f5..000000000000 --- a/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2020 Quentin LEBASTARD - * Copyright 2020 Anthony MARIN - * Copyright 2021 Stick - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "nstickney.h" -#include "unicodemap.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [BASE] = LAYOUT(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, - //-------------------------------// - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, - //-------------------------------// - CC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CC_QUOT, - //-------------------------------// - SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC, - //-------------------------------// - AC_SLSH, FC_BSLS, KC_SPC, KC_ENT, FC_MINS, AC_EQL, - //-------------------------------// - KC_LBRC, TD(LOCKS), TD(LAYERS), KC_RBRC), - - [SYMB] = LAYOUT(_______, UP(IEX, SS1), UM(SS2), UM(SS3), UP(CUR, GBP), UM(EUR), UM(V14), UM(V12), UM(V34), UP(LSQ, LDQ), UP(RSQ, RDQ), _______, - //-------------------------------// - _______, UP(A_D, AXD), UP(A_R, ACR), UP(E_A, ECA), UP(REG, CPL), UM(THR), UP(U_D, UCD), UP(U_A, UCA), UP(I_A, ICA), UP(O_A, OCA), UP(O_D, OCD), _______, - //-------------------------------// - _______, UP(A_A, ACA), UP(S_S, SEC), UP(ETH, ETC), UM(EMD), _______, _______, _______, _______, UP(O_S, OCS), UP(PLC, DEG), UP(ACT, DIS), - //-------------------------------// - _______, UP(AEL, AEC), _______, UP(CPR, CNT), _______, _______, _______, _______, UP(N_T, NCT), UM(MCR), UP(C_C, CCC), _______, - //-------------------------------// - UM(IQM), UP(NOT, BKB), _______, _______, UM(YEN), UP(MLT, DIV), - //-------------------------------// - _______, _______, _______, _______), - - [NUMP] = LAYOUT(_______, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, - //-------------------------------// - _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, - //-------------------------------// - _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, - //-------------------------------// - _______, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, KC_P0, KC_PCMM, KC_PDOT, KC_PPLS, _______, - //-------------------------------// - _______, _______, _______, KC_PENT, _______, _______, - //-------------------------------// - _______, _______, _______, _______), - - [FCTN] = LAYOUT(KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_SYRQ, - //-------------------------------// - KC_PSCR, RGB_TOG, KC_HOME, KC_UP, KC_END, KC_PGUP, QK_LOCK, KC_LBRC, KC_RBRC, S(KC_LBRC), S(KC_RBRC), KC_INS, - //-------------------------------// - KC_PAUS, RGB_VAI, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BRIU, KC_CLR, - //-------------------------------// - _______, KC_MPRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_MNXT, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, _______, - //-------------------------------// - QK_BOOT, _______, _______, _______, _______, QK_BOOT, - //-------------------------------// - _______, KC_F11, KC_F12, _______)}; diff --git a/keyboards/hillside/46/keymaps/manna-harbour_miryoku/config.h b/keyboards/hillside/46/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index fa808ef68130..000000000000 --- a/keyboards/hillside/46/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2022 Davide Masserut (@mssdvd) -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -// clang-format off -#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ - XXX, K32, K33, K34, K35, K36, K37, XXX \ -) -#else -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ - K32, K33, K34, XXX, XXX, K35, K36, K37 \ -) -#endif diff --git a/keyboards/hillside/46/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/hillside/46/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/hillside/46/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/hillside/46/keymaps/vial/config.h b/keyboards/hillside/46/keymaps/vial/config.h new file mode 100644 index 000000000000..7596e3e660a3 --- /dev/null +++ b/keyboards/hillside/46/keymaps/vial/config.h @@ -0,0 +1,13 @@ +// Copyright 2022 Michael McCoyd (@mmccoyd) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Some boards have issues detecting handedness using the vbus voltage. +// Such as Elite-C v3, but not v3.1 on. Also apparently some ProMicro boards. +// For those boands, use usb detection instead. +// #define SPLIT_USB_DETECT +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 +#define VIAL_KEYBOARD_UID {0x8A, 0x71, 0x42, 0xA2, 0xF0, 0x99, 0xA5, 0x24} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 } +#define VIAL_UNLOCK_COMBO_COLS { 0, 0 } diff --git a/keyboards/hillside/46/keymaps/vial/keymap.json b/keyboards/hillside/46/keymaps/vial/keymap.json new file mode 100644 index 000000000000..bb90812ca428 --- /dev/null +++ b/keyboards/hillside/46/keymaps/vial/keymap.json @@ -0,0 +1,86 @@ +{ + "keyboard": "hillside/46/0_1", + "keymap": "vial", + "layout": "LAYOUT", + "layers": [ + ["KC_GRV" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T", + "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G", + "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN", "KC_ENT", + + "KC_LCTL" , "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_ESC", + "ANY(CW_TOGG)", "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_QUOT", + + "KC_LGUI" , "KC_LALT" , "OSM(MOD_LSFT)", "MO(3)", + "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" + + ], + ["KC_GRV" , "KC_QUOT" , "KC_COMM" , "KC_DOT" , "KC_P" , "KC_Y", + "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I", + "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT", + + "KC_LCTL" , "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_ESC", + "ANY(CW_TOGG)", "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_SLSH", + + "KC_LGUI" , "KC_LALT" , "OSM(MOD_LSFT)", "MO(3)", + "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" + + ], + ["KC_GRV" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B", + "KC_J" , "KC_L" , "KC_U" , "KC_Y" , "KC_SCLN", "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G", + "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT", + + "KC_LCTL" , "KC_Z" , "KC_TRNS" , "KC_C" , "KC_D" , "KC_V" , "KC_ESC", + "ANY(CW_TOGG)", "KC_K" , "KC_H" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_QUOT", + + "KC_LGUI" , "KC_LALT" , "OSM(MOD_LSFT)", "MO(3)", + "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" + + ], + ["LCTL(KC_C)" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5", + "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_TRNS", + + "LCTL(KC_X)" , "KC_LGUI" , "KC_LALT" , "KC_LCTL", "KC_LSFT", "LCTL(KC_V)", + "KC_PGUP" , "KC_LEFT" , "KC_UP" , "KC_DOWN", "KC_RGHT", "KC_PGDN", + + "KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "LCTL(KC_Z)", + "LCTL(KC_Y)" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_RCTL", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS", + "MO(5)" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" + + ], + ["KC_INS" , "KC_EXLM" , "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", + "KC_CIRC" , "KC_AMPR" , "KC_ASTR" , "KC_LPRN", "KC_RPRN", "KC_DEL", + + "KC_NO" , "KC_BSLS" , "KC_MINS" , "KC_EQL" , "KC_LBRC", "KC_RBRC", + "KC_HOME" , "KC_RSFT" , "KC_RCTL" , "KC_LALT", "KC_RGUI", "KC_END", + + "KC_TRNS" , "KC_PIPE" , "KC_UNDS" , "KC_PLUS", "KC_LCBR", "KC_RCBR" , "OSM(MOD_RALT)", + "KC_APP" , "KC_MUTE" , "KC_VOLD" , "KC_VOLU", "KC_MPLY", "KC_NO" , "KC_RCTL", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "MO(5)", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" + + ], + ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP", "CG_SWAP", + "KC_NO" , "KC_F11" , "KC_F12" , "KC_PSCR", "KC_NO" , "EE_CLR", + + "KC_NO" , "KC_NO" , "KC_BRID" , "KC_BRIU", "AG_NORM", "CG_NORM", + "RGB_MOD" , "RGB_VAI" , "RGB_HUI" , "RGB_SAI", "KC_NO" , "KC_NO", + + "KC_NO" , "KC_LGUI" , "KC_LALT" , "KC_LCTL", "KC_LSFT", "KC_NO" , "KC_NO", + "RGB_TOG" , "RGB_RMOD", "RGB_VAD" , "RGB_HUD", "RGB_SAD", "KC_NO" , "QK_BOOT", + + "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS", + "KC_TRNS" , "KC_NO" , "KC_NO" , "KC_NO" + + ] + ], + "author": "@mmccoyd" +} diff --git a/keyboards/hillside/46/keymaps/vial/rules.mk b/keyboards/hillside/46/keymaps/vial/rules.mk new file mode 100644 index 000000000000..79a7b9de2d2a --- /dev/null +++ b/keyboards/hillside/46/keymaps/vial/rules.mk @@ -0,0 +1,5 @@ +CAPS_WORD_ENABLE = yes +VIA_ENABLE = yes +VIAL_ENABLE = yes +QMK_SETTINGS = no +LTO_ENABLE = yes diff --git a/keyboards/hillside/46/keymaps/vial/vial.json b/keyboards/hillside/46/keymaps/vial/vial.json new file mode 100644 index 000000000000..ee51e9f3b2b3 --- /dev/null +++ b/keyboards/hillside/46/keymaps/vial/vial.json @@ -0,0 +1,256 @@ +{ + "matrix": { + "rows": 8, + "cols": 6 + }, + "layouts": { + "keymap": [ + [ + { + "x": 3 + }, + "0,3", + { + "x": 7.5 + }, + "4,3" + ], + [ + { + "y": -0.6799999999999999, + "x": 4 + }, + "0,4", + { + "x": 5.5 + }, + "4,4" + ], + [ + { + "y": -0.9100000000000001, + "x": 2 + }, + "0,2", + { + "x": 9.5 + }, + "4,2" + ], + [ + { + "y": -0.94, + "x": 5 + }, + "0,5", + { + "x": 3.5 + }, + "4,5" + ], + [ + { + "y": -0.47, + "x": 3 + }, + "1,3", + { + "x": 7.5 + }, + "5,3" + ], + [ + { + "y": -0.8799999999999999 + }, + "0,0", + "0,1", + { + "x": 11.5 + }, + "4,1", + "4,0" + ], + [ + { + "y": -0.8, + "x": 4 + }, + "1,4", + { + "x": 5.5 + }, + "5,4" + ], + [ + { + "y": -0.9100000000000004, + "x": 2 + }, + "1,2", + { + "x": 9.5 + }, + "5,2" + ], + [ + { + "y": -0.9400000000000002, + "x": 5 + }, + "1,5", + { + "x": 3.5 + }, + "5,5" + ], + [ + { + "y": -0.46999999999999975, + "x": 3 + }, + "2,3", + { + "x": 7.5 + }, + "6,3" + ], + [ + { + "y": -0.8799999999999999 + }, + "1,0", + "1,1", + { + "x": 11.5 + }, + "5,1", + "5,0" + ], + [ + { + "y": -0.8000000000000003, + "x": 4 + }, + "2,4", + { + "x": 5.5 + }, + "6,4" + ], + [ + { + "y": -0.9099999999999997, + "x": 2 + }, + "2,2", + { + "x": 9.5 + }, + "6,2" + ], + [ + { + "y": -0.94, + "x": 5 + }, + "2,5", + { + "x": 3.5 + }, + "6,5" + ], + [ + { + "y": -0.3500000000000001 + }, + "2,0", + "2,1", + { + "x": 11.5 + }, + "6,1", + "6,0" + ], + [ + { + "rx": 3.92, + "ry": 8.1, + "y": -4.779999999999999, + "x": -0.5 + }, + "3,1" + ], + [ + { + "rx": 11.6, + "y": -4.779999999999999, + "x": -0.5 + }, + "7,1" + ], + [ + { + "r": 15, + "rx": 3.92, + "y": -4.779999999999999, + "x": -0.5 + }, + "3,2" + ], + [ + { + "r": 30, + "y": -2.0000000000000004, + "x": -0.5 + }, + "3,5" + ], + [ + { + "x": -0.5 + }, + "3,3" + ], + [ + { + "r": 45, + "y": -1.0000000000000004, + "x": -0.5 + }, + "3,4" + ], + [ + { + "r": -45, + "rx": 11.6, + "y": -4.779999999999999, + "x": -0.5 + }, + "7,4" + ], + [ + { + "r": -30, + "y": -2.0000000000000004, + "x": -0.5 + }, + "7,5" + ], + [ + { + "x": -0.5 + }, + "7,3" + ], + [ + { + "r": -15, + "y": -1.0000000000000004, + "x": -0.5 + }, + "7,2" + ] +] + } +} diff --git a/keyboards/hillside/48/0_1/info.json b/keyboards/hillside/48/0_1/info.json index 2159d1ca6876..b6007f1f729d 100644 --- a/keyboards/hillside/48/0_1/info.json +++ b/keyboards/hillside/48/0_1/info.json @@ -23,7 +23,6 @@ }, "split": { "soft_serial_pin": "D2", - "main": "left", "encoder": { "right": { "rotary": [ diff --git a/keyboards/hillside/48/keymaps/manna-harbour_miryoku/config.h b/keyboards/hillside/48/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index e779de8a99f9..000000000000 --- a/keyboards/hillside/48/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2022 Davide Masserut (@mssdvd) -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -// clang-format off -#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ - XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \ -) -#else -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ - XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \ -) -#endif diff --git a/keyboards/hillside/48/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/hillside/48/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/hillside/48/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/hillside/48/keymaps/vial/config.h b/keyboards/hillside/48/keymaps/vial/config.h new file mode 100644 index 000000000000..a679568bae61 --- /dev/null +++ b/keyboards/hillside/48/keymaps/vial/config.h @@ -0,0 +1,13 @@ +// Copyright 2022 Michael McCoyd (@mmccoyd) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Some boards have issues detecting handedness using the vbus voltage, +// such as Elite-C v3, but not v3.1 on, and apparently some ProMicro boards. +// For those boards, use usb detection instead. +// #define SPLIT_USB_DETECT +#define DYNAMIC_KEYMAP_LAYER_COUNT 6 +#define VIAL_KEYBOARD_UID {0x3E, 0x98, 0xD7, 0x2B, 0x56, 0xC3, 0xFF, 0xB9} +#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 } +#define VIAL_UNLOCK_COMBO_COLS { 2, 3 } diff --git a/keyboards/hillside/48/keymaps/vial/keymap.json b/keyboards/hillside/48/keymaps/vial/keymap.json new file mode 100644 index 000000000000..ad9a858bd521 --- /dev/null +++ b/keyboards/hillside/48/keymaps/vial/keymap.json @@ -0,0 +1,86 @@ +{ + "keyboard": "hillside/48/0_1", + "keymap": "vial", + "layout": "LAYOUT", + "layers": [ + ["KC_GRV" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T", + "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G", + "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN" , "KC_ENT", + + "KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_ESC", + "CW_TOGG" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_RSFT", + + "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)", + "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT" + + ], + ["KC_GRV" , "KC_QUOT" , "KC_COMM", "KC_DOT" , "KC_P" , "KC_Y", + "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I", + "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT", + + "KC_LSFT" , "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_ESC", + "CW_TOGG" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_RSFT", + + "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)", + "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_SLSH" + + ], + ["KC_GRV" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B", + "KC_J" , "KC_L" , "KC_U" , "KC_Y" , "KC_SCLN" , "KC_BSPC", + + "KC_TAB" , "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G", + "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT", + + "KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_D" , "KC_V" , "KC_ESC", + "CW_TOGG" , "KC_K" , "KC_H" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_RSFT", + + "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)", + "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT" + + ], + ["KC_HOME" , "KC_EXLM" , "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", + "KC_CIRC" , "KC_AMPR" , "KC_ASTR", "KC_LPRN", "KC_RPRN" , "KC_DEL", + + "KC_END" , "KC_LGUI" , "KC_LALT", "KC_LCTL", "KC_LSFT" , "KC_INS", + "KC_LBRC" , "KC_RBRC" , "KC_MINS", "KC_EQL" , "KC_BSLS" , "KC_TRNS", + + "KC_LSFT" , "KC_NO" , "KC_VOLD", "KC_MUTE", "KC_VOLU" , "KC_MPLY" , "OSM(MOD_RALT)", + "KC_APP" , "KC_LCBR" , "KC_RCBR", "KC_UNDS", "KC_PLUS" , "KC_PIPE" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "OSM(MOD_LSFT)", + "MO(5)" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL" + + ], + ["LCTL(KC_X)", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5", + "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_BSPC", + + "LCTL(KC_C)", "KC_LEFT" , "KC_DOWN", "KC_UP" , "KC_RGHT" , "LCTL(KC_V)", + "KC_PGUP" , "KC_RSFT" , "KC_RCTL", "KC_LALT", "KC_RGUI" , "KC_PGDN", + + "KC_LSFT" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "LCTL(KC_Z)", + "LCTL(KC_Y)", "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_TRNS", + + "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "MO(5)" , "KC_TRNS", + "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL" + + ], + ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP" , "CG_SWAP", + "KC_NO" , "KC_F11" , "KC_F12" , "KC_PSCR", "KC_NO" , "KC_NO", + + "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "AG_NORM" , "CG_NORM", + "RGB_MOD" , "RGB_VAI" , "RGB_HUI", "RGB_SAI", "KC_NO" , "KC_NO", + + "KC_NO" , "KC_LGUI" , "KC_LALT", "KC_LCTL", "KC_LSFT" , "KC_NO" , "KC_NO", + "RGB_TOG" , "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD" , "KC_NO" , "QK_BOOT", + + "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS", "KC_NO", + "KC_TRNS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" + + ] + ], + "author": "@mmccoyd" +} diff --git a/keyboards/hillside/48/keymaps/vial/rules.mk b/keyboards/hillside/48/keymaps/vial/rules.mk new file mode 100644 index 000000000000..79a7b9de2d2a --- /dev/null +++ b/keyboards/hillside/48/keymaps/vial/rules.mk @@ -0,0 +1,5 @@ +CAPS_WORD_ENABLE = yes +VIA_ENABLE = yes +VIAL_ENABLE = yes +QMK_SETTINGS = no +LTO_ENABLE = yes diff --git a/keyboards/hillside/48/keymaps/vial/vial.json b/keyboards/hillside/48/keymaps/vial/vial.json new file mode 100644 index 000000000000..c885d30bf4b0 --- /dev/null +++ b/keyboards/hillside/48/keymaps/vial/vial.json @@ -0,0 +1,256 @@ +{ + "matrix": { + "rows": 8, + "cols": 6 + }, + "layouts": { + "keymap": [ + [ + { + "x": 3 + }, + "0,3", + { + "x": 7.5 + }, + "4,3" + ], + [ + { + "y": -0.68, + "x": 4 + }, + "0,4", + { + "x": 5.5 + }, + "4,4" + ], + [ + { + "y": -0.91, + "x": 2 + }, + "0,2", + { + "x": 9.5 + }, + "4,2" + ], + [ + { + "y": -0.94, + "x": 5 + }, + "0,5", + { + "x": 3.5 + }, + "4,5" + ], + [ + { + "y": -0.47, + "x": 3 + }, + "1,3", + { + "x": 7.5 + }, + "5,3" + ], + [ + { + "y": -0.8800000000000001 + }, + "0,0", + "0,1", + { + "x": 11.5 + }, + "4,1", + "4,0" + ], + [ + { + "y": -0.8, + "x": 4 + }, + "1,4", + { + "x": 5.5 + }, + "5,4" + ], + [ + { + "y": -0.9100000000000001, + "x": 2 + }, + "1,2", + { + "x": 9.5 + }, + "5,2" + ], + [ + { + "y": -0.94, + "x": 5 + }, + "1,5", + { + "x": 3.5 + }, + "5,5" + ], + [ + { + "y": -0.47, + "x": 3 + }, + "2,3", + { + "x": 7.5 + }, + "6,3" + ], + [ + { + "y": -0.8799999999999999 + }, + "1,0", + "1,1", + { + "x": 11.5 + }, + "5,1", + "5,0" + ], + [ + { + "y": -0.7999999999999998, + "x": 4 + }, + "2,4", + { + "x": 5.5 + }, + "6,4" + ], + [ + { + "y": -0.9100000000000001, + "x": 2 + }, + "2,2", + { + "x": 9.5 + }, + "6,2" + ], + [ + { + "y": -0.94, + "x": 5 + }, + "2,5", + { + "x": 3.5 + }, + "6,5" + ], + [ + { + "y": -0.3500000000000001 + }, + "2,0", + "2,1", + { + "x": 11.5 + }, + "6,1", + "6,0" + ], + [ + { + "rx": 3.92, + "ry": 8.1, + "y": -4.78, + "x": -0.5 + }, + "3,1" + ], + [ + { + "rx": 11.6, + "y": -4.78, + "x": -0.5 + }, + "7,1" + ], + [ + { + "r": 15, + "rx": 3.92, + "y": -4.78, + "x": -0.5 + }, + "3,2" + ], + [ + { + "r": 30, + "y": -2, + "x": -0.5 + }, + "3,5" + ], + [ + { + "x": -0.5 + }, + "3,3" + ], + [ + { + "r": 45, + "y": -1, + "x": -0.5 + }, + "3,4" + ], + [ + { + "r": -45, + "rx": 11.6, + "y": -4.78, + "x": -0.5 + }, + "7,4" + ], + [ + { + "r": -30, + "y": -2, + "x": -0.5 + }, + "7,5" + ], + [ + { + "x": -0.5 + }, + "7,3" + ], + [ + { + "r": -15, + "y": -1, + "x": -0.5 + }, + "7,2" + ] +] + } +} diff --git a/keyboards/hillside/52/keymaps/manna-harbour_miryoku/config.h b/keyboards/hillside/52/keymaps/manna-harbour_miryoku/config.h deleted file mode 100644 index 388f6b9a91d5..000000000000 --- a/keyboards/hillside/52/keymaps/manna-harbour_miryoku/config.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2022 Davide Masserut (@mssdvd) -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . - -#pragma once - -#define XXX KC_NO - -// clang-format off -#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ -XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, XXX \ -) -#else -#define LAYOUT_miryoku( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ - N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \ -) \ -LAYOUT( \ -XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \ -XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \ -XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \ -XXX, XXX, XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX, XXX, XXX \ -) -#endif diff --git a/keyboards/hillside/52/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/hillside/52/keymaps/manna-harbour_miryoku/keymap.c deleted file mode 100644 index dbab7f982043..000000000000 --- a/keyboards/hillside/52/keymaps/manna-harbour_miryoku/keymap.c +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright 2019 Manna Harbour -// https://github.com/manna-harbour/miryoku - -// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/keyboards/hineybush/h101/info.json b/keyboards/hineybush/h101/info.json new file mode 100644 index 000000000000..d1f8fa32a084 --- /dev/null +++ b/keyboards/hineybush/h101/info.json @@ -0,0 +1,381 @@ +{ + "manufacturer": "hiney", + "keyboard_name": "h101", + "maintainer": "hineybush", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B0", "B1", "B2", "B10", "B11", "B12", "A8", "A9", "A10", "A15", "B3", "B4", "B5", "B6", "B7", "B9", "A3", "F0", "F1", "A7", "A5", "A4"], + "rows": ["C13", "C14", "C15", "A0", "A1", "A2"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "0.0.1", + "vid": "0x4069", + "pid": "0x0002" + }, + "indicators": { + "num_lock": "A6", + "caps_lock": "B14", + "scroll_lock": "B8", + "on_state": 0 + }, + "layouts": { + "LAYOUT_f13_tsangan": { + "layout": [ + {"matrix": [0,0], "label":"Esc", "x":0, "y":0}, + {"matrix": [0,1], "label":"F1", "x":1.25, "y":0}, + {"matrix": [0,2], "label":"F2", "x":2.25, "y":0}, + {"matrix": [0,3], "label":"F3", "x":3.25, "y":0}, + {"matrix": [0,4], "label":"F4", "x":4.25, "y":0}, + {"matrix": [0,5], "label":"F5", "x":5.5, "y":0}, + {"matrix": [0,6], "label":"F6", "x":6.5, "y":0}, + {"matrix": [0,7], "label":"F7", "x":7.5, "y":0}, + {"matrix": [0,8], "label":"F8", "x":8.5, "y":0}, + {"matrix": [0,9], "label":"F9", "x":9.75, "y":0}, + {"matrix": [0,11], "label":"F10", "x":10.75, "y":0}, + {"matrix": [0,12], "label":"F11", "x":11.75, "y":0}, + {"matrix": [0,13], "label":"F12", "x":12.75, "y":0}, + {"matrix": [0,14], "label":"F13", "x":14, "y":0}, + {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0}, + {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0}, + {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0}, + {"matrix": [0,18], "label":"KP 1", "x":18.5, "y":0}, + {"matrix": [0,19], "label":"KP 2", "x":19.5, "y":0}, + {"matrix": [0,20], "label":"KP 3", "x":20.5, "y":0}, + {"matrix": [0,21], "label":"KP 4", "x":21.5, "y":0}, + {"matrix": [1,0], "label":"~", "x":0, "y":1.25}, + {"matrix": [1,1], "label":"!", "x":1, "y":1.25}, + {"matrix": [1,2], "label":"@", "x":2, "y":1.25}, + {"matrix": [1,3], "label":"#", "x":3, "y":1.25}, + {"matrix": [1,4], "label":"$", "x":4, "y":1.25}, + {"matrix": [1,5], "label":"%", "x":5, "y":1.25}, + {"matrix": [1,6], "label":"^", "x":6, "y":1.25}, + {"matrix": [1,7], "label":"&", "x":7, "y":1.25}, + {"matrix": [1,8], "label":"*", "x":8, "y":1.25}, + {"matrix": [1,9], "label":"(", "x":9, "y":1.25}, + {"matrix": [1,10], "label":")", "x":10, "y":1.25}, + {"matrix": [1,11], "label":"_", "x":11, "y":1.25}, + {"matrix": [1,12], "label":"+", "x":12, "y":1.25}, + {"matrix": [1,14], "label":"Backspace", "x":13, "y":1.25, "w":2}, + {"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25}, + {"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25}, + {"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25}, + {"matrix": [1,18], "label":"Num Lock", "x":18.5, "y":1.25}, + {"matrix": [1,19], "label":"/", "x":19.5, "y":1.25}, + {"matrix": [1,20], "label":"*", "x":20.5, "y":1.25}, + {"matrix": [1,21], "label":"-", "x":21.5, "y":1.25}, + {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25}, + {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25}, + {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25}, + {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25}, + {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25}, + {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25}, + {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25}, + {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25}, + {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25}, + {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25}, + {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25}, + {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25}, + {"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25}, + {"matrix": [2,16], "label":"End", "x":16.25, "y":2.25}, + {"matrix": [2,17], "label":"PgDn", "x":17.25, "y":2.25}, + {"matrix": [2,18], "label":"7", "x":18.5, "y":2.25}, + {"matrix": [2,19], "label":"8", "x":19.5, "y":2.25}, + {"matrix": [2,20], "label":"9", "x":20.5, "y":2.25}, + {"matrix": [2,21], "label":"+", "x":21.5, "y":2.25, "h":2}, + {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25}, + {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25}, + {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25}, + {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25}, + {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25}, + {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25}, + {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25}, + {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25}, + {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25}, + {"matrix": [3,10], "label":":", "x":10.75, "y":3.25}, + {"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25}, + {"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + {"matrix": [3,18], "label":"4", "x":18.5, "y":3.25}, + {"matrix": [3,19], "label":"5", "x":19.5, "y":3.25}, + {"matrix": [3,20], "label":"6", "x":20.5, "y":3.25}, + {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25}, + {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25}, + {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25}, + {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25}, + {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25}, + {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25}, + {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25}, + {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25}, + {"matrix": [4,10], "label":">", "x":10.25, "y":4.25}, + {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25}, + {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75}, + {"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25}, + {"matrix": [4,18], "label":"1", "x":18.5, "y":4.25}, + {"matrix": [4,19], "label":"2", "x":19.5, "y":4.25}, + {"matrix": [4,20], "label":"3", "x":20.5, "y":4.25}, + {"matrix": [4,21], "label":"Enter", "x":21.5, "y":4.25, "h":2}, + {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.5}, + {"matrix": [5,1], "label":"Win", "x":1.5, "y":5.25}, + {"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.5}, + {"matrix": [5,7], "label":"Space", "x":4, "y":5.25, "w":7}, + {"matrix": [5,11], "label":"Alt", "x":11, "y":5.25, "w":1.5}, + {"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25}, + {"matrix": [5,13], "label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, + {"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25}, + {"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25}, + {"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}, + {"matrix": [5,19], "label":"0", "x":18.5, "y":5.25, "w":2}, + {"matrix": [5,20], "label":".", "x":20.5, "y":5.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [0,0], "label":"Esc", "x":0, "y":0}, + {"matrix": [0,1], "label":"F1", "x":1.25, "y":0}, + {"matrix": [0,2], "label":"F2", "x":2.25, "y":0}, + {"matrix": [0,3], "label":"F3", "x":3.25, "y":0}, + {"matrix": [0,4], "label":"F4", "x":4.25, "y":0}, + {"matrix": [0,5], "label":"F5", "x":5.5, "y":0}, + {"matrix": [0,6], "label":"F6", "x":6.5, "y":0}, + {"matrix": [0,7], "label":"F7", "x":7.5, "y":0}, + {"matrix": [0,8], "label":"F8", "x":8.5, "y":0}, + {"matrix": [0,9], "label":"F9", "x":9.75, "y":0}, + {"matrix": [0,11], "label":"F10", "x":10.75, "y":0}, + {"matrix": [0,12], "label":"F11", "x":11.75, "y":0}, + {"matrix": [0,13], "label":"F12", "x":12.75, "y":0}, + {"matrix": [0,14], "label":"F13", "x":14, "y":0}, + {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0}, + {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0}, + {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0}, + {"matrix": [0,18], "label":"KP 1", "x":18.5, "y":0}, + {"matrix": [0,19], "label":"KP 2", "x":19.5, "y":0}, + {"matrix": [0,20], "label":"KP 3", "x":20.5, "y":0}, + {"matrix": [0,21], "label":"KP 4", "x":21.5, "y":0}, + {"matrix": [1,0], "label":"~", "x":0, "y":1.25}, + {"matrix": [1,1], "label":"!", "x":1, "y":1.25}, + {"matrix": [1,2], "label":"@", "x":2, "y":1.25}, + {"matrix": [1,3], "label":"#", "x":3, "y":1.25}, + {"matrix": [1,4], "label":"$", "x":4, "y":1.25}, + {"matrix": [1,5], "label":"%", "x":5, "y":1.25}, + {"matrix": [1,6], "label":"^", "x":6, "y":1.25}, + {"matrix": [1,7], "label":"&", "x":7, "y":1.25}, + {"matrix": [1,8], "label":"*", "x":8, "y":1.25}, + {"matrix": [1,9], "label":"(", "x":9, "y":1.25}, + {"matrix": [1,10], "label":")", "x":10, "y":1.25}, + {"matrix": [1,11], "label":"_", "x":11, "y":1.25}, + {"matrix": [1,12], "label":"+", "x":12, "y":1.25}, + {"matrix": [1,13], "label":"1U Split Bksp", "x":13, "y":1.25}, + {"matrix": [1,14], "label":"Backspace", "x":14, "y":1.25}, + {"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25}, + {"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25}, + {"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25}, + {"matrix": [1,18], "label":"Num Lock", "x":18.5, "y":1.25}, + {"matrix": [1,19], "label":"/", "x":19.5, "y":1.25}, + {"matrix": [1,20], "label":"*", "x":20.5, "y":1.25}, + {"matrix": [1,21], "label":"-", "x":21.5, "y":1.25}, + {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25}, + {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25}, + {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25}, + {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25}, + {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25}, + {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25}, + {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25}, + {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25}, + {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25}, + {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25}, + {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25}, + {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25}, + {"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25}, + {"matrix": [2,16], "label":"End", "x":16.25, "y":2.25}, + {"matrix": [2,17], "label":"PgDn", "x":17.25, "y":2.25}, + {"matrix": [2,18], "label":"7", "x":18.5, "y":2.25}, + {"matrix": [2,19], "label":"8", "x":19.5, "y":2.25}, + {"matrix": [2,20], "label":"9", "x":20.5, "y":2.25}, + {"matrix": [2,21], "label":"+", "x":21.5, "y":2.25}, + {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25}, + {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25}, + {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25}, + {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25}, + {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25}, + {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25}, + {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25}, + {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25}, + {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25}, + {"matrix": [3,10], "label":":", "x":10.75, "y":3.25}, + {"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25}, + {"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + {"matrix": [3,18], "label":"4", "x":18.5, "y":3.25}, + {"matrix": [3,19], "label":"5", "x":19.5, "y":3.25}, + {"matrix": [3,20], "label":"6", "x":20.5, "y":3.25}, + {"matrix": [3,21], "label":"+", "x":21.5, "y":3.25}, + {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25}, + {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25}, + {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25}, + {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25}, + {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25}, + {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25}, + {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25}, + {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25}, + {"matrix": [4,10], "label":">", "x":10.25, "y":4.25}, + {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25}, + {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"matrix": [4,13], "label":"Fn", "x":14, "y":4.25}, + {"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25}, + {"matrix": [4,18], "label":"1", "x":18.5, "y":4.25}, + {"matrix": [4,19], "label":"2", "x":19.5, "y":4.25}, + {"matrix": [4,20], "label":"3", "x":20.5, "y":4.25}, + {"matrix": [4,21], "label":"Enter", "x":21.5, "y":4.25}, + {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"matrix": [5,7], "label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25}, + {"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25}, + {"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25}, + {"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25}, + {"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}, + {"matrix": [5,18], "label":"0", "x":18.5, "y":5.25}, + {"matrix": [5,19], "label":"0", "x":19.5, "y":5.25}, + {"matrix": [5,20], "label":".", "x":20.5, "y":5.25}, + {"matrix": [5,21], "label":"Enter", "x":21.5, "y":5.25} + ] + }, + "LAYOUT_f12_all": { + "layout": [ + {"matrix": [0,0], "label":"Esc", "x":0, "y":0}, + {"matrix": [0,1], "label":"F1", "x":1.25, "y":0}, + {"matrix": [0,2], "label":"F2", "x":2.25, "y":0}, + {"matrix": [0,3], "label":"F3", "x":3.25, "y":0}, + {"matrix": [0,4], "label":"F4", "x":4.25, "y":0}, + {"matrix": [0,5], "label":"F5", "x":5.5, "y":0}, + {"matrix": [0,6], "label":"F6", "x":6.5, "y":0}, + {"matrix": [0,7], "label":"F7", "x":7.5, "y":0}, + {"matrix": [0,8], "label":"F8", "x":8.5, "y":0}, + {"matrix": [0,9], "label":"F9", "x":9.75, "y":0}, + {"matrix": [0,11], "label":"F10", "x":10.75, "y":0}, + {"matrix": [0,12], "label":"F11", "x":11.75, "y":0}, + {"matrix": [0,13], "label":"F12", "x":12.75, "y":0}, + {"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0}, + {"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0}, + {"matrix": [0,17], "label":"Pause", "x":17.25, "y":0}, + {"matrix": [0,18], "label":"KP 1", "x":18.5, "y":0}, + {"matrix": [0,19], "label":"KP 2", "x":19.5, "y":0}, + {"matrix": [0,20], "label":"KP 3", "x":20.5, "y":0}, + {"matrix": [0,21], "label":"KP 4", "x":21.5, "y":0}, + {"matrix": [1,0], "label":"~", "x":0, "y":1.25}, + {"matrix": [1,1], "label":"!", "x":1, "y":1.25}, + {"matrix": [1,2], "label":"@", "x":2, "y":1.25}, + {"matrix": [1,3], "label":"#", "x":3, "y":1.25}, + {"matrix": [1,4], "label":"$", "x":4, "y":1.25}, + {"matrix": [1,5], "label":"%", "x":5, "y":1.25}, + {"matrix": [1,6], "label":"^", "x":6, "y":1.25}, + {"matrix": [1,7], "label":"&", "x":7, "y":1.25}, + {"matrix": [1,8], "label":"*", "x":8, "y":1.25}, + {"matrix": [1,9], "label":"(", "x":9, "y":1.25}, + {"matrix": [1,10], "label":")", "x":10, "y":1.25}, + {"matrix": [1,11], "label":"_", "x":11, "y":1.25}, + {"matrix": [1,12], "label":"+", "x":12, "y":1.25}, + {"matrix": [1,13], "label":"1U Split Bksp", "x":13, "y":1.25}, + {"matrix": [1,14], "label":"Backspace", "x":14, "y":1.25}, + {"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25}, + {"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25}, + {"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25}, + {"matrix": [1,18], "label":"Num Lock", "x":18.5, "y":1.25}, + {"matrix": [1,19], "label":"/", "x":19.5, "y":1.25}, + {"matrix": [1,20], "label":"*", "x":20.5, "y":1.25}, + {"matrix": [1,21], "label":"-", "x":21.5, "y":1.25}, + {"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5}, + {"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25}, + {"matrix": [2,2], "label":"W", "x":2.5, "y":2.25}, + {"matrix": [2,3], "label":"E", "x":3.5, "y":2.25}, + {"matrix": [2,4], "label":"R", "x":4.5, "y":2.25}, + {"matrix": [2,5], "label":"T", "x":5.5, "y":2.25}, + {"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25}, + {"matrix": [2,7], "label":"U", "x":7.5, "y":2.25}, + {"matrix": [2,8], "label":"I", "x":8.5, "y":2.25}, + {"matrix": [2,9], "label":"O", "x":9.5, "y":2.25}, + {"matrix": [2,10], "label":"P", "x":10.5, "y":2.25}, + {"matrix": [2,11], "label":"{", "x":11.5, "y":2.25}, + {"matrix": [2,12], "label":"}", "x":12.5, "y":2.25}, + {"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5}, + {"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25}, + {"matrix": [2,16], "label":"End", "x":16.25, "y":2.25}, + {"matrix": [2,17], "label":"PgDn", "x":17.25, "y":2.25}, + {"matrix": [2,18], "label":"7", "x":18.5, "y":2.25}, + {"matrix": [2,19], "label":"8", "x":19.5, "y":2.25}, + {"matrix": [2,20], "label":"9", "x":20.5, "y":2.25}, + {"matrix": [2,21], "label":"+", "x":21.5, "y":2.25}, + {"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, + {"matrix": [3,1], "label":"A", "x":1.75, "y":3.25}, + {"matrix": [3,2], "label":"S", "x":2.75, "y":3.25}, + {"matrix": [3,3], "label":"D", "x":3.75, "y":3.25}, + {"matrix": [3,4], "label":"F", "x":4.75, "y":3.25}, + {"matrix": [3,5], "label":"G", "x":5.75, "y":3.25}, + {"matrix": [3,6], "label":"H", "x":6.75, "y":3.25}, + {"matrix": [3,7], "label":"J", "x":7.75, "y":3.25}, + {"matrix": [3,8], "label":"K", "x":8.75, "y":3.25}, + {"matrix": [3,9], "label":"L", "x":9.75, "y":3.25}, + {"matrix": [3,10], "label":":", "x":10.75, "y":3.25}, + {"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25}, + {"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + {"matrix": [3,18], "label":"4", "x":18.5, "y":3.25}, + {"matrix": [3,19], "label":"5", "x":19.5, "y":3.25}, + {"matrix": [3,20], "label":"6", "x":20.5, "y":3.25}, + {"matrix": [3,21], "label":"+", "x":21.5, "y":3.25}, + {"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":2.25}, + {"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25}, + {"matrix": [4,3], "label":"X", "x":3.25, "y":4.25}, + {"matrix": [4,4], "label":"C", "x":4.25, "y":4.25}, + {"matrix": [4,5], "label":"V", "x":5.25, "y":4.25}, + {"matrix": [4,6], "label":"B", "x":6.25, "y":4.25}, + {"matrix": [4,7], "label":"N", "x":7.25, "y":4.25}, + {"matrix": [4,8], "label":"M", "x":8.25, "y":4.25}, + {"matrix": [4,9], "label":"<", "x":9.25, "y":4.25}, + {"matrix": [4,10], "label":">", "x":10.25, "y":4.25}, + {"matrix": [4,11], "label":"?", "x":11.25, "y":4.25}, + {"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":1.75}, + {"matrix": [4,13], "label":"Fn", "x":14, "y":4.25}, + {"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25}, + {"matrix": [4,18], "label":"1", "x":18.5, "y":4.25}, + {"matrix": [4,19], "label":"2", "x":19.5, "y":4.25}, + {"matrix": [4,20], "label":"3", "x":20.5, "y":4.25}, + {"matrix": [4,21], "label":"Enter", "x":21.5, "y":4.25}, + {"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25}, + {"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25}, + {"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25}, + {"matrix": [5,7], "label":"Space", "x":3.75, "y":5.25, "w":6.25}, + {"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25}, + {"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25}, + {"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25}, + {"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25}, + {"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25}, + {"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25}, + {"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}, + {"matrix": [5,18], "label":"0", "x":18.5, "y":5.25}, + {"matrix": [5,19], "label":"0", "x":19.5, "y":5.25}, + {"matrix": [5,20], "label":".", "x":20.5, "y":5.25}, + {"matrix": [5,21], "label":"Enter", "x":21.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/hineybush/h101/keymaps/default/keymap.c b/keyboards/hineybush/h101/keymaps/default/keymap.c new file mode 100644 index 000000000000..bc0352003644 --- /dev/null +++ b/keyboards/hineybush/h101/keymaps/default/keymap.c @@ -0,0 +1,23 @@ +// Copyright 2023 Josh Hinnebusch (@hineybush) +// SPDX-License-Identifier: GPL-2.0-or-later +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_f13_tsangan( + 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_0, KC_PSCR, KC_SCRL, KC_PAUS, KC_MPLY, KC_MNXT, KC_VOLU, KC_VOLD, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ), + + [1] = LAYOUT_f13_tsangan( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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/hineybush/h101/keymaps/via/keymap.c b/keyboards/hineybush/h101/keymaps/via/keymap.c new file mode 100644 index 000000000000..020042b13a66 --- /dev/null +++ b/keyboards/hineybush/h101/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +// Copyright 2023 Josh Hinnebusch (@hineybush) +// SPDX-License-Identifier: GPL-2.0-or-later + +/* +┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ +│00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0B │0C │0D ││0E │ │0F │0G │0H │ │0I │0J │0K │0L │ +└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘ └───┴───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │1F │1G │1H │ │1I │1J │1K │1L │ │1E │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ └───────┘ ┌───┐ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2F │2G │2H │ │2I │2J │2K │2L │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┼───┤ │2L │ Numpad "+" +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3I │3J │3K │3L │ │ │ +├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ├───┼───┼───┼───┤ ├───┤ +│40 │42 │43 │44 │45 │46 │47 │48 │49 │3A │3B │4C │4D │ │4G │ │4I │4J │4K │4L │ │ │ +├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐ ├───┼───┼───┼───┤ ┌───────┐ │4L │ Numpad Enter +│50 │51 │52 │57 │5A │5B │5C │5D │ │5F │5G │5H │ │5I │5J │5K │5L │ Numpad 0 │5J │ │ │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───┴───┴───┴───┘ └───────┘ └───┘ + ┌──────────┐ + 2.75u RShift │4C │ + └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│50 │51 │52 │57 │5B │5C │5D │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_0, KC_PSCR, KC_SCRL, KC_PAUS, KC_MPLY, KC_MNXT, KC_VOLU, KC_VOLD, + 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_TRNS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_TRNS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_P0, KC_PDOT, KC_TRNS), + + [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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, 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/hineybush/h101/keymaps/via/rules.mk b/keyboards/hineybush/h101/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/hineybush/h101/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/hineybush/h101/readme.md b/keyboards/hineybush/h101/readme.md new file mode 100644 index 000000000000..d28ce3507477 --- /dev/null +++ b/keyboards/hineybush/h101/readme.md @@ -0,0 +1,27 @@ +# h101 + +![h101](https://i.imgur.com/LqmvjS1h.png) + +F13 full-size PCB with 1.25u function row Spacing. + +* Keyboard Maintainer: [hineybush](https://github.com/hineybush) +* Hardware Supported: h101 using STM32F072 +* Hardware Availability: Fossil by Carolina Mech + +Make example for this keyboard (after setting up your build environment): + + make hineybush/h101:default + +Flashing example for this keyboard: + + make hineybush/h101:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/hineybush/h101/rules.mk b/keyboards/hineybush/h101/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/hineybush/h101/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/hineybush/h660s/info.json b/keyboards/hineybush/h660s/info.json index b99ab3297514..6c5d07cc835f 100644 --- a/keyboards/hineybush/h660s/info.json +++ b/keyboards/hineybush/h660s/info.json @@ -36,6 +36,7 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", + "community_layouts": ["66_ansi", "66_iso"], "layouts": { "LAYOUT_66_ansi": { "layout": [ diff --git a/keyboards/hineybush/hbcp/hbcp.c b/keyboards/hineybush/hbcp/hbcp.c index 7d0f5ecf730b..df17650f27fc 100644 --- a/keyboards/hineybush/hbcp/hbcp.c +++ b/keyboards/hineybush/hbcp/hbcp.c @@ -49,19 +49,19 @@ bool led_update_kb(led_t led_state) { bool res = led_update_user(led_state); if (res) { if (led_state.caps_lock) { - sethsv_raw(HSV_CAPS, (LED_TYPE *)&led[0]); + sethsv_raw(HSV_CAPS, (rgb_led_t *)&led[0]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[0]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[0]); } if (led_state.num_lock) { - sethsv_raw(HSV_NLCK, (LED_TYPE *)&led[1]); + sethsv_raw(HSV_NLCK, (rgb_led_t *)&led[1]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[1]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[1]); } if (led_state.scroll_lock) { - sethsv_raw(HSV_SCRL, (LED_TYPE *)&led[2]); + sethsv_raw(HSV_SCRL, (rgb_led_t *)&led[2]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[2]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[2]); } rgblight_set(); } @@ -83,7 +83,7 @@ void keyboard_post_init_user(void) { __attribute__ ((weak)) void hbcp_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end) { - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv_raw(hue, sat, val, &tmp_led); for (uint8_t i = start; i < end; i++) { led[i] = tmp_led; diff --git a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c index 26a67fe7ca8d..2311d4020f78 100644 --- a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c +++ b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c @@ -79,19 +79,19 @@ void matrix_scan_user(void) { // The first three LEDs are used as indicators for CAPS_LOCK, NUM_LOCK and SCROLL_LOCK. bool led_update_user(led_t led_state) { if (led_state.caps_lock) { - sethsv_raw(HSV_SOFT_RED, (LED_TYPE *)&led[0]); + sethsv_raw(HSV_SOFT_RED, (rgb_led_t *)&led[0]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[0]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[0]); } if (led_state.num_lock) { - sethsv_raw(HSV_WARM_WHITE, (LED_TYPE *)&led[1]); + sethsv_raw(HSV_WARM_WHITE, (rgb_led_t *)&led[1]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[1]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[1]); } if (led_state.scroll_lock) { - sethsv_raw(HSV_SOFT_BLUE, (LED_TYPE *)&led[2]); + sethsv_raw(HSV_SOFT_BLUE, (rgb_led_t *)&led[2]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[2]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[2]); } rgblight_set(); return false; diff --git a/keyboards/hnahkb/freyr/info.json b/keyboards/hnahkb/freyr/info.json index 0bc3c9a9c642..26d1fc52d8a2 100644 --- a/keyboards/hnahkb/freyr/info.json +++ b/keyboards/hnahkb/freyr/info.json @@ -24,7 +24,7 @@ }, "processor": "atmega32u4", "bootloader": "atmel-dfu", - "community_layouts": ["tkl_ansi", "tkl_iso"], + "community_layouts": ["tkl_ansi", "tkl_ansi_split_bs_rshift", "tkl_ansi_tsangan", "tkl_ansi_tsangan_split_bs_rshift", "tkl_iso", "tkl_iso_split_bs_rshift", "tkl_iso_tsangan", "tkl_iso_tsangan_split_bs_rshift"], "layouts": { "LAYOUT_all": { "layout": [ @@ -238,7 +238,7 @@ {"matrix": [6, 9], "x": 17.25, "y": 5.25} ] }, - "LAYOUT_tkl_iso": { + "LAYOUT_tkl_ansi_split_bs_rshift": { "layout": [ {"matrix": [0, 0], "x": 0, "y": 0}, @@ -274,7 +274,8 @@ {"matrix": [7, 0], "x": 10, "y": 1.25}, {"matrix": [7, 1], "x": 11, "y": 1.25}, {"matrix": [7, 2], "x": 12, "y": 1.25}, - {"matrix": [7, 3], "x": 13, "y": 1.25, "w": 2}, + {"matrix": [7, 3], "x": 13, "y": 1.25}, + {"matrix": [7, 4], "x": 14, "y": 1.25}, {"matrix": [7, 5], "x": 15.25, "y": 1.25}, {"matrix": [7, 6], "x": 16.25, "y": 1.25}, @@ -293,6 +294,7 @@ {"matrix": [8, 0], "x": 10.5, "y": 2.25}, {"matrix": [8, 1], "x": 11.5, "y": 2.25}, {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + {"matrix": [8, 3], "x": 13.5, "y": 2.25, "w": 1.5}, {"matrix": [7, 8], "x": 15.25, "y": 2.25}, {"matrix": [7, 7], "x": 16.25, "y": 2.25}, @@ -310,11 +312,9 @@ {"matrix": [3, 9], "x": 9.75, "y": 3.25}, {"matrix": [9, 0], "x": 10.75, "y": 3.25}, {"matrix": [9, 1], "x": 11.75, "y": 3.25}, - {"matrix": [9, 2], "x": 12.75, "y": 3.25}, - {"matrix": [8, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [8, 4], "x": 12.75, "y": 3.25, "w": 2.25}, - {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, - {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, {"matrix": [4, 2], "x": 2.25, "y": 4.25}, {"matrix": [4, 3], "x": 3.25, "y": 4.25}, {"matrix": [4, 4], "x": 4.25, "y": 4.25}, @@ -325,7 +325,8 @@ {"matrix": [4, 9], "x": 9.25, "y": 4.25}, {"matrix": [9, 5], "x": 10.25, "y": 4.25}, {"matrix": [9, 4], "x": 11.25, "y": 4.25}, - {"matrix": [9, 3], "x": 12.25, "y": 4.25, "w": 2.75}, + {"matrix": [8, 5], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 3], "x": 14, "y": 4.25}, {"matrix": [7, 9], "x": 16.25, "y": 4.25}, @@ -338,6 +339,1046 @@ {"matrix": [5, 6], "x": 12.5, "y": 5.25, "w": 1.25}, {"matrix": [5, 7], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + {"matrix": [8, 3], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [8, 4], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [9, 3], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25}, + {"matrix": [7, 4], "x": 14, "y": 1.25}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + {"matrix": [8, 3], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [8, 4], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [8, 5], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 3], "x": 14, "y": 4.25}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + {"matrix": [8, 3], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [8, 4], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [9, 3], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25}, + {"matrix": [7, 4], "x": 14, "y": 1.25}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + {"matrix": [8, 3], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [8, 4], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [8, 5], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 3], "x": 14, "y": 4.25}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [9, 2], "x": 12.75, "y": 3.25}, + {"matrix": [8, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [9, 3], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 4], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 7], "x": 13.75, "y": 5.25, "w": 1.25}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25}, + {"matrix": [7, 4], "x": 14, "y": 1.25}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [9, 2], "x": 12.75, "y": 3.25}, + {"matrix": [8, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [8, 5], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 3], "x": 14, "y": 4.25}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [5, 4], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [5, 5], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [5, 6], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 7], "x": 13.75, "y": 5.25, "w": 1.25}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [9, 2], "x": 12.75, "y": 3.25}, + {"matrix": [8, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [9, 3], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25}, + {"matrix": [7, 4], "x": 14, "y": 1.25}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [9, 2], "x": 12.75, "y": 3.25}, + {"matrix": [8, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [8, 5], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 3], "x": 14, "y": 4.25}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 6], "x": 12.5, "y": 5.25}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_wkl": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25, "w": 2}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [9, 2], "x": 12.75, "y": 3.25}, + {"matrix": [8, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [9, 3], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, + {"matrix": [5, 9], "x": 16.25, "y": 5.25}, + {"matrix": [6, 9], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_wkl_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + + {"matrix": [0, 1], "x": 2, "y": 0}, + {"matrix": [0, 2], "x": 3, "y": 0}, + {"matrix": [0, 3], "x": 4, "y": 0}, + {"matrix": [0, 4], "x": 5, "y": 0}, + + {"matrix": [0, 6], "x": 6.5, "y": 0}, + {"matrix": [0, 7], "x": 7.5, "y": 0}, + {"matrix": [0, 8], "x": 8.5, "y": 0}, + {"matrix": [0, 9], "x": 9.5, "y": 0}, + + {"matrix": [6, 0], "x": 11, "y": 0}, + {"matrix": [6, 1], "x": 12, "y": 0}, + {"matrix": [6, 2], "x": 13, "y": 0}, + {"matrix": [6, 3], "x": 14, "y": 0}, + + {"matrix": [6, 4], "x": 15.25, "y": 0}, + {"matrix": [6, 5], "x": 16.25, "y": 0}, + {"matrix": [6, 6], "x": 17.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2, "y": 1.25}, + {"matrix": [1, 3], "x": 3, "y": 1.25}, + {"matrix": [1, 4], "x": 4, "y": 1.25}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [1, 6], "x": 6, "y": 1.25}, + {"matrix": [1, 7], "x": 7, "y": 1.25}, + {"matrix": [1, 8], "x": 8, "y": 1.25}, + {"matrix": [1, 9], "x": 9, "y": 1.25}, + {"matrix": [7, 0], "x": 10, "y": 1.25}, + {"matrix": [7, 1], "x": 11, "y": 1.25}, + {"matrix": [7, 2], "x": 12, "y": 1.25}, + {"matrix": [7, 3], "x": 13, "y": 1.25}, + {"matrix": [7, 4], "x": 14, "y": 1.25}, + + {"matrix": [7, 5], "x": 15.25, "y": 1.25}, + {"matrix": [7, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"matrix": [8, 0], "x": 10.5, "y": 2.25}, + {"matrix": [8, 1], "x": 11.5, "y": 2.25}, + {"matrix": [8, 2], "x": 12.5, "y": 2.25}, + + {"matrix": [7, 8], "x": 15.25, "y": 2.25}, + {"matrix": [7, 7], "x": 16.25, "y": 2.25}, + {"matrix": [6, 8], "x": 17.25, "y": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"matrix": [9, 0], "x": 10.75, "y": 3.25}, + {"matrix": [9, 1], "x": 11.75, "y": 3.25}, + {"matrix": [9, 2], "x": 12.75, "y": 3.25}, + {"matrix": [8, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"matrix": [9, 5], "x": 10.25, "y": 4.25}, + {"matrix": [9, 4], "x": 11.25, "y": 4.25}, + {"matrix": [8, 5], "x": 12.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 3], "x": 14, "y": 4.25}, + + {"matrix": [7, 9], "x": 16.25, "y": 4.25}, + + {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 3], "x": 4, "y": 5.25, "w": 7}, + {"matrix": [5, 5], "x": 11, "y": 5.25, "w": 1.5}, + {"matrix": [5, 7], "x": 13.5, "y": 5.25, "w": 1.5}, + {"matrix": [5, 8], "x": 15.25, "y": 5.25}, {"matrix": [5, 9], "x": 16.25, "y": 5.25}, {"matrix": [6, 9], "x": 17.25, "y": 5.25} diff --git a/keyboards/hnahkb/freyr/matrix_diagram.md b/keyboards/hnahkb/freyr/matrix_diagram.md new file mode 100644 index 000000000000..643ee77f01c1 --- /dev/null +++ b/keyboards/hnahkb/freyr/matrix_diagram.md @@ -0,0 +1,30 @@ +# Matrix Diagram for HnahKB Freyr + +``` +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐┌───┬───┬───┐ +│00 │ │01 │02 │03 │04 │ │06 │07 │08 │09 │ │60 │61 │62 │63 ││64 │65 │66 │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘└───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ ┌───────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │70 │71 │72 │73 │74 ││75 │76 │67 │ │73 │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤ ┌─────┐ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │80 │81 │82 │83 ││78 │77 │68 │ │ │ │83 │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤└───┴───┴───┘ ┌──┴┐84 │ ISO Enter ┌──┴─────┤ ANSI Enter +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │90 │91 │92 │84 │ │92 │ │ │84 │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┤ ┌───┐ └───┴────┘ └────────┘ +│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │95 │94 │85 │93 │ │79 │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬──┴─┬────┤┌───┼───┼───┐ +│50 │51 │52 │53 │54 │55 │56 │57 ││58 │59 │69 │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘ +┌────────┐ ┌──────────┐ +│40 │ 2.25u LShift 2.75u RShift │93 │ +└────────┘ └──────────┘ + ┌──────┬───┐ + 1.75u/1u RShift │85 │93 │ + └──────┴───┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│50 │51 │52 │53 │55 │56 │57 │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +┌────┬──┬────┬────┬───────────────────────┬────┬────┬──┬────┐ +│50 │ │51 │52 │53 │55 │56 │ │57 │ 6u Centered Spacebar +└────┘ └────┴────┴───────────────────────┴────┴────┘ └────┘ +``` diff --git a/keyboards/holyswitch/lightweight65/info.json b/keyboards/holyswitch/lightweight65/info.json index a6252d27b5e7..16a9f737376c 100644 --- a/keyboards/holyswitch/lightweight65/info.json +++ b/keyboards/holyswitch/lightweight65/info.json @@ -21,7 +21,7 @@ "extrakey": true, "console": false, "command": false, - "nkro": true, + "nkro": true }, "layout_aliases": { "LAYOUT": "LAYOUT_65_ansi_blocker" diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h index adba031af54d..04f132f4a447 100644 --- a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h +++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h @@ -19,7 +19,6 @@ #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_LED_COUNT 86 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 - #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/horrortroll/handwired_k552/config.h b/keyboards/horrortroll/handwired_k552/config.h index bec0ac055b0d..f957465cd07f 100644 --- a/keyboards/horrortroll/handwired_k552/config.h +++ b/keyboards/horrortroll/handwired_k552/config.h @@ -30,10 +30,6 @@ #define EXTERNAL_FLASH_BLOCK_SIZE 4096 #define EXTERNAL_FLASH_SIZE (256 * 1024) // 2M-bit flash size -// Wear-leveling driver configuration -#define WEAR_LEVELING_LOGICAL_SIZE 1024 -#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) - #ifdef OLED_ENABLE /* Mapping I2C2 for OLED */ #define I2C1_SCL_PIN B10 @@ -47,7 +43,6 @@ #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_LED_COUNT 24 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 - #define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS /* RGB Matrix effect */ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN diff --git a/keyboards/horrortroll/handwired_k552/info.json b/keyboards/horrortroll/handwired_k552/info.json index d137a03a5267..b064df38c2d3 100644 --- a/keyboards/horrortroll/handwired_k552/info.json +++ b/keyboards/horrortroll/handwired_k552/info.json @@ -20,6 +20,13 @@ "rows": ["C12", "C10", "A10", "A8", "C8", "C9"] }, "diode_direction": "ROW2COL", + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 2048 + } + }, "community_layouts": ["tkl_ansi"], "layouts": { "LAYOUT_tkl_ansi": { diff --git a/keyboards/horrortroll/handwired_k552/rules.mk b/keyboards/horrortroll/handwired_k552/rules.mk index fd1825af356d..6d6ec253db3c 100644 --- a/keyboards/horrortroll/handwired_k552/rules.mk +++ b/keyboards/horrortroll/handwired_k552/rules.mk @@ -32,7 +32,3 @@ RGB_MATRIX_ENABLE = yes # OLED enabled OLED_ENABLE = yes WPM_ENABLE = yes - -# Wear-levelling driver -EEPROM_DRIVER = wear_leveling -WEAR_LEVELING_DRIVER = spi_flash diff --git a/keyboards/horrortroll/lemon40/info.json b/keyboards/horrortroll/lemon40/info.json index 7162e2c2c7ad..7b0b1c394b3f 100644 --- a/keyboards/horrortroll/lemon40/info.json +++ b/keyboards/horrortroll/lemon40/info.json @@ -19,8 +19,7 @@ "knight": true, "christmas": true, "static_gradient": true, - "alternating": true, - "twinkle": true + "alternating": true } }, "ws2812": { diff --git a/keyboards/horrortroll/nyx/rev1/config.h b/keyboards/horrortroll/nyx/rev1/config.h new file mode 100644 index 000000000000..9126bfe08559 --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/config.h @@ -0,0 +1,22 @@ +/* Copyright 2023 HorrorTroll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +/* RGB Matrix config */ +#define RGB_MATRIX_LED_COUNT 67 +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS diff --git a/keyboards/horrortroll/nyx/rev1/info.json b/keyboards/horrortroll/nyx/rev1/info.json new file mode 100644 index 000000000000..f3b859de0a9c --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/info.json @@ -0,0 +1,222 @@ +{ + "keyboard_name": "Nyx", + "manufacturer": "HorrorTroll", + "maintainer": "HorrorTroll", + "usb": { + "vid": "0x7516", + "pid": "0x5005", + "device_version": "0.0.1" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP3", "GP23", "GP2", "GP1", "GP0", "GP4", "GP17", "GP11", "GP10", "GP19", "GP9", "GP8", "GP13", "GP15", "GP14"], + "rows": ["GP24", "GP25", "GP18", "GP12", "GP16"] + }, + "processor": "RP2040", + "bootloader": "rp2040", + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "rgb_matrix": true + }, + "ws2812": { + "driver": "vendor", + "pin": "GP22" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 75, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_val": true, + "band_pinwheel_val": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "typing_heatmap": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1}, + {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4}, + {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4}, + {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4}, + {"matrix": [0, 6], "x": 90, "y": 0, "flags": 4}, + {"matrix": [0, 7], "x": 105, "y": 0, "flags": 4}, + {"matrix": [0, 8], "x": 119, "y": 0, "flags": 4}, + {"matrix": [0, 9], "x": 134, "y": 0, "flags": 4}, + {"matrix": [0, 10], "x": 149, "y": 0, "flags": 4}, + {"matrix": [0, 11], "x": 164, "y": 0, "flags": 4}, + {"matrix": [0, 12], "x": 179, "y": 0, "flags": 4}, + {"matrix": [0, 13], "x": 202, "y": 0, "flags": 1}, + {"matrix": [0, 14], "x": 224, "y": 0, "flags": 4}, + + {"matrix": [1, 14], "x": 224, "y": 16, "flags": 4}, + {"matrix": [1, 13], "x": 205, "y": 16, "flags": 4}, + {"matrix": [1, 12], "x": 187, "y": 16, "flags": 4}, + {"matrix": [1, 11], "x": 172, "y": 16, "flags": 4}, + {"matrix": [1, 10], "x": 157, "y": 16, "flags": 4}, + {"matrix": [1, 9], "x": 142, "y": 16, "flags": 4}, + {"matrix": [1, 8], "x": 127, "y": 16, "flags": 4}, + {"matrix": [1, 7], "x": 112, "y": 16, "flags": 4}, + {"matrix": [1, 6], "x": 97, "y": 16, "flags": 4}, + {"matrix": [1, 5], "x": 82, "y": 16, "flags": 4}, + {"matrix": [1, 4], "x": 67, "y": 16, "flags": 4}, + {"matrix": [1, 3], "x": 52, "y": 16, "flags": 4}, + {"matrix": [1, 2], "x": 37, "y": 16, "flags": 4}, + {"matrix": [1, 1], "x": 22, "y": 16, "flags": 4}, + {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1}, + + {"matrix": [2, 0], "x": 6, "y": 32, "flags": 8}, + {"matrix": [2, 1], "x": 26, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 41, "y": 32, "flags": 4}, + {"matrix": [2, 3], "x": 56, "y": 32, "flags": 4}, + {"matrix": [2, 4], "x": 71, "y": 32, "flags": 4}, + {"matrix": [2, 5], "x": 86, "y": 32, "flags": 4}, + {"matrix": [2, 6], "x": 101, "y": 32, "flags": 4}, + {"matrix": [2, 7], "x": 116, "y": 32, "flags": 4}, + {"matrix": [2, 8], "x": 131, "y": 32, "flags": 4}, + {"matrix": [2, 9], "x": 146, "y": 32, "flags": 4}, + {"matrix": [2, 10], "x": 161, "y": 32, "flags": 4}, + {"matrix": [2, 11], "x": 175, "y": 32, "flags": 4}, + {"matrix": [2, 13], "x": 200, "y": 32, "flags": 1}, + {"matrix": [2, 14], "x": 224, "y": 32, "flags": 4}, + + {"matrix": [3, 14], "x": 224, "y": 48, "flags": 4}, + {"matrix": [3, 13], "x": 209, "y": 48, "flags": 4}, + {"matrix": [3, 12], "x": 189, "y": 48, "flags": 1}, + {"matrix": [3, 11], "x": 168, "y": 48, "flags": 4}, + {"matrix": [3, 10], "x": 153, "y": 48, "flags": 4}, + {"matrix": [3, 9], "x": 138, "y": 48, "flags": 4}, + {"matrix": [3, 8], "x": 123, "y": 48, "flags": 4}, + {"matrix": [3, 7], "x": 108, "y": 48, "flags": 4}, + {"matrix": [3, 6], "x": 93, "y": 48, "flags": 4}, + {"matrix": [3, 5], "x": 78, "y": 48, "flags": 4}, + {"matrix": [3, 4], "x": 63, "y": 48, "flags": 4}, + {"matrix": [3, 3], "x": 49, "y": 48, "flags": 4}, + {"matrix": [3, 2], "x": 34, "y": 48, "flags": 4}, + {"matrix": [3, 0], "x": 9, "y": 48, "flags": 1}, + + {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1}, + {"matrix": [4, 1], "x": 21, "y": 64, "flags": 1}, + {"matrix": [4, 2], "x": 39, "y": 64, "flags": 1}, + {"matrix": [4, 6], "x": 95, "y": 64, "flags": 4}, + {"matrix": [4, 9], "x": 151, "y": 64, "flags": 1}, + {"matrix": [4, 10], "x": 170, "y": 64, "flags": 1}, + {"matrix": [4, 12], "x": 194, "y": 64, "flags": 4}, + {"matrix": [4, 13], "x": 209, "y": 64, "flags": 4}, + {"matrix": [4, 14], "x": 224, "y": 64, "flags": 4} + ] + }, + "community_layouts": ["65_ansi_blocker"], + "layouts": { + "LAYOUT_65_ansi_blocker": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "w": 2, "x": 13, "y": 0}, + {"matrix": [0, 14], "x": 15, "y": 0}, + + {"matrix": [1, 0], "w": 1.5, "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1}, + {"matrix": [1, 14], "x": 15, "y": 1}, + + {"matrix": [2, 0], "w": 1.75, "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + + {"matrix": [3, 0], "w": 2.25, "x": 0, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 14], "x": 15, "y": 3}, + + {"matrix": [4, 0], "w": 1.25, "x": 0, "y": 4}, + {"matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4}, + {"matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4}, + {"matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4}, + {"matrix": [4, 9], "w": 1.25, "x": 10, "y": 4}, + {"matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/horrortroll/nyx/rev1/keymaps/default/keymap.c b/keyboards/horrortroll/nyx/rev1/keymaps/default/keymap.c new file mode 100644 index 000000000000..d678f19b46ec --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/keymaps/default/keymap.c @@ -0,0 +1,85 @@ +/* Copyright 2023 HorrorTroll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │Del│ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │PgU│ + ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │ ↑ │PgD│ + ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + │LCrl│GUI │LAlt│ Space │ Fn │RCrl│ │ ← │ ↓ │ → │ + └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ │ + ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │ │ │ + ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + │ │ │ │ │ │ │ │ │ │ │ + └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */ + [_BASE] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +/* + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Tog│ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + │Reset│ │MsU│ │ │ │ │ │ │Sad│Sai│Spd│Spi│ │Mod│ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ │MsL│MsD│MsR│ │ │ │ │ │ │ │ │ │ │ + ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │ │ │ │Cal│ │ │NKO│ │VoD│VoU│Mut│ │Vai│ │ + ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + │ │ │ │ │ │ │ │Hud│Vad│Hui│ + └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */ + [_FN] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG, + QK_BOOT, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_SAI, RGB_SPD, RGB_SPI, _______, RGB_MOD, + _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_CALC, _______, _______, NK_TOGG, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, RGB_VAI, _______, + _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI + ) +}; diff --git a/keyboards/horrortroll/nyx/rev1/keymaps/via/keymap.c b/keyboards/horrortroll/nyx/rev1/keymaps/via/keymap.c new file mode 100644 index 000000000000..d678f19b46ec --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/keymaps/via/keymap.c @@ -0,0 +1,85 @@ +/* Copyright 2023 HorrorTroll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +enum layer_names { + _BASE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Ins│ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │Del│ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter │PgU│ + ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │ LShift │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │ ↑ │PgD│ + ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + │LCrl│GUI │LAlt│ Space │ Fn │RCrl│ │ ← │ ↓ │ → │ + └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │ │ + ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │ LShift │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │ │ │ + ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + │ │ │ │ │ │ │ │ │ │ │ + └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */ + [_BASE] = LAYOUT_65_ansi_blocker( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + +/* + ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐ + │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │Tog│ + ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤ + │Reset│ │MsU│ │ │ │ │ │ │Sad│Sai│Spd│Spi│ │Mod│ + ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ + │ │MsL│MsD│MsR│ │ │ │ │ │ │ │ │ │ │ + ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ + │ │ │ │Cal│ │ │NKO│ │VoD│VoU│Mut│ │Vai│ │ + ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤ + │ │ │ │ │ │ │ │Hud│Vad│Hui│ + └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ +*/ + /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */ + [_FN] = LAYOUT_65_ansi_blocker( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG, + QK_BOOT, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_SAI, RGB_SPD, RGB_SPI, _______, RGB_MOD, + _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_CALC, _______, _______, NK_TOGG, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, RGB_VAI, _______, + _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI + ) +}; diff --git a/keyboards/horrortroll/nyx/rev1/keymaps/via/rules.mk b/keyboards/horrortroll/nyx/rev1/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/horrortroll/nyx/rev1/lib/startup_swirl_anim.h b/keyboards/horrortroll/nyx/rev1/lib/startup_swirl_anim.h new file mode 100644 index 000000000000..0cd0a54a8b5d --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/lib/startup_swirl_anim.h @@ -0,0 +1,133 @@ +/* Copyright 2022 Jpe230 + * Copyright 2023 HorrorTroll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 +#include + +#define LED_TRAIL 10 + +static int8_t top = 0; +static int8_t bottom = MATRIX_ROWS - 1; +static int8_t left = 0; +static int8_t right = MATRIX_COLS - 1; +static int8_t dir = 1; + +static int8_t i = 0; +static int8_t j = 0; + +static bool traverse = true; + +static uint8_t v_values[RGB_MATRIX_LED_COUNT] = {0}; + +static void traverse_matrix(void) { + if (dir == 1) { + // moving left->right + i++; + // Since we have traversed the whole first + // row, move down to the next row. + if (i > right) { + ++top; + dir = 2; + j = top; + i -= 1; + } + } else if (dir == 2) { + // moving top->bottom + j++; + // Since we have traversed the whole last + // column, move left to the previous column. + if (j > bottom) { + --right; + dir = 3; + i = right; + j -= 1; + } + } else if (dir == 3) { + // moving right->left + i--; + // Since we have traversed the whole last + // row, move up to the previous row. + if (i < left) { + --bottom; + dir = 4; + j = bottom; + i += 1; + } + } else if (dir == 4) { + // moving bottom->up + j--; + // Since we have traversed the whole first + // col, move right to the next column. + if (j < top) { + ++left; + dir = 1; + i = left; + j += 1; + } + } +} + +static void swirl_set_color(HSV hsv) { + uint8_t index = g_led_config.matrix_co[j][i]; + + if(index != NO_LED){ + v_values[index] = 75; + } + + for(uint8_t v = 0; v < RGB_MATRIX_LED_COUNT; v++) + { + if(index != v) { + if(v_values[v] >= 20) + v_values[v] -= 20; + else + v_values[v] = 0; + } + hsv.v = v_values[v]; + RGB rgb = hsv_to_rgb(hsv); + rgb_matrix_set_color(v, rgb.r, rgb.g, rgb.b); + } + + traverse_matrix(); + + if (!(top <= bottom && left <= right)) { + eeprom_read_block(&rgb_matrix_config, EECONFIG_RGB_MATRIX, sizeof(rgb_matrix_config)); + rgb_matrix_mode_noeeprom(rgb_matrix_config.mode); + return; + } +} + +static bool STARTUP_SWIRL_ANIM(effect_params_t* params) { + HSV hsv = rgb_matrix_config.hsv; + uint8_t time = scale16by8(g_rgb_timer, qadd8(24, 1)); + hsv.h = time; + RGB rgb = hsv_to_rgb(hsv); + + if (traverse) { + swirl_set_color(hsv); + } + traverse = !traverse; + return false; + + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + for (int i = led_min; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); // Clear matrix just in case + } + + return rgb_matrix_check_finished_leds(led_max); +} diff --git a/keyboards/horrortroll/nyx/rev1/nyx.c b/keyboards/horrortroll/nyx/rev1/nyx.c new file mode 100644 index 000000000000..fb4ce3183b06 --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/nyx.c @@ -0,0 +1,89 @@ +/* Copyright 2023 HorrorTroll + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } + break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable_noeeprom(); + } + break; + } + } + return false; + case RGB_MOD: + if (record->event.pressed) { + switch (rgb_matrix_get_mode()) { + case RGB_MATRIX_SOLID_MULTISPLASH: + rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); + return false; + default: + rgb_matrix_step(); + return false; + } + } + return false; + case RGB_RMOD: + if (record->event.pressed) { + switch (rgb_matrix_get_mode()) { + case RGB_MATRIX_SOLID_COLOR: + rgb_matrix_mode(RGB_MATRIX_SOLID_MULTISPLASH); + return false; + default: + rgb_matrix_step_reverse(); + return false; + } + } + return false; + } + + return process_record_user(keycode, record); +} + +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(30, 0, 75, 75); + } else if (!(rgb_matrix_get_flags() & LED_FLAG_INDICATOR)) { + rgb_matrix_set_color(30, RGB_OFF); + } + return true; +} + +void keyboard_post_init_kb(void) { + if (!(rgb_matrix_get_flags() & LED_FLAG_ALL)) { + rgb_matrix_set_color_all(0, 0, 0); + } else { + rgb_matrix_mode_noeeprom(RGB_MATRIX_CUSTOM_STARTUP_SWIRL_ANIM); + } + + keyboard_post_init_user(); +} +#endif diff --git a/keyboards/horrortroll/nyx/rev1/readme.md b/keyboards/horrortroll/nyx/rev1/readme.md new file mode 100644 index 000000000000..7fdbd0ed8f3b --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/readme.md @@ -0,0 +1,27 @@ +# Nyx + +![Nyx](https://i.imgur.com/I202xevh.png) + +A 65% keyboard, which controlled by an RP2040 chipset. The keyboard feature RGB Matrix. + +* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll) +* Hardware Supported: RP2040 +* Hardware Availability: Private prototype (only 5 PCB available) + +Make example for this keyboard (after setting up your build environment): + + make horrortroll/nyx/rev1:default + +Flashing example for this keyboard: + + make horrortroll/nyx/rev1:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Esc key) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/horrortroll/nyx/rev1/rgb_matrix_kb.inc b/keyboards/horrortroll/nyx/rev1/rgb_matrix_kb.inc new file mode 100644 index 000000000000..0912e3d956ae --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/rgb_matrix_kb.inc @@ -0,0 +1,7 @@ +RGB_MATRIX_EFFECT(STARTUP_SWIRL_ANIM) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +#include "lib/startup_swirl_anim.h" + +#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS diff --git a/keyboards/horrortroll/nyx/rev1/rules.mk b/keyboards/horrortroll/nyx/rev1/rules.mk new file mode 100644 index 000000000000..942ef4c5dbde --- /dev/null +++ b/keyboards/horrortroll/nyx/rev1/rules.mk @@ -0,0 +1 @@ +RGB_MATRIX_CUSTOM_KB = yes diff --git a/keyboards/horrortroll/readme.md b/keyboards/horrortroll/readme.md index 67347a3c1623..64bcdf0c654e 100644 --- a/keyboards/horrortroll/readme.md +++ b/keyboards/horrortroll/readme.md @@ -1,17 +1,18 @@ # Welcome to my Keyboard Firmwares ## Keyboards Released by me: - | Keyboard name | MCU | Layout | Vendor ID | Product ID | Features | - | ---------------- | ------------- | ------------ | --------- | ---------- | -------------------------------------------- | - | Handwired K552 | STM32F103RCT6 | TKL | 0x7516 | 0x5000 | Hotswap, RGB Underglow, OLED 128x32 | - | Paws 60 | ATMEGA32U4 | 60% | 0x7516 | 0x5001 | Hotswap | + | Keyboard name | MCU | Layout | Vendor ID | Product ID | Features | + | -------------- | ------------- | ------ | --------- | ---------- | ----------------------------------- | + | Handwired K552 | STM32F103RCT6 | TKL | 0x7516 | 0x5000 | Hotswap, RGB Underglow, OLED 128x32 | + | Paws 60 | ATMEGA32U4 | 60% | 0x7516 | 0x5001 | Hotswap | + | Nyx | RP2040 | 65% | 0x7516 | 0x5005 | Hotswap, RGB Matrix | ## Keyboards Completed has Collaboration with me: - | Keyboard name | MCU | Layout | Vendor ID | Product ID | Features | - | ------------------ | ------------- | ------------ | --------- | ---------- | ---------------------------------- | - | Lemon40 | ATMEGA32U4 | 40% Alice | 0x7516 | 0x6000 | Solder, RGB Underglow, OLED 128x32 | - | Caticorn (Solder) | RP2040 | TKL | 0x7516 | 0x6001 | Solder | - | Caticorn (Hotswap) | RP2040 | TKL | 0x7516 | 0x6002 | Hotswap | + | Keyboard name | MCU | Layout | Vendor ID | Product ID | Features | + | ------------------ | ---------- | --------- | --------- | ---------- | ---------------------------------- | + | Lemon40 | ATMEGA32U4 | 40% Alice | 0x7516 | 0x6000 | Solder, RGB Underglow, OLED 128x32 | + | Caticorn (Solder) | RP2040 | TKL | 0x7516 | 0x6001 | Solder | + | Caticorn (Hotswap) | RP2040 | TKL | 0x7516 | 0x6002 | Hotswap | ## Keyboard Rewrited by me: | Keyboard name | MCU | Layout | Vendor ID | Product ID | Features | diff --git a/keyboards/hotdox/keymaps/imchipwood/keymap.c b/keyboards/hotdox/keymaps/imchipwood/keymap.c deleted file mode 100644 index 497a038ad333..000000000000 --- a/keyboards/hotdox/keymaps/imchipwood/keymap.c +++ /dev/null @@ -1,151 +0,0 @@ -/* Copyright 2021 imchipwood - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "imchipwood.h" - -// Layer names -enum custom_layers { - _QWERTY, - _NUM, - _MED -}; - -// Layer definitions -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_ergodox_pretty( -/* Keymap 0: Basic layer - * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | ESC | |BkTick| 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | Q | W | E | R | T | MEH | | | Y | U | I | O | P | [ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSlsh | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | - * |--------+------+------+------+------+------|MO(2) | |MO(2) |------+------+------+------+------+--------| - * | LSHIFT | Z | X | C | V | B | | | | N | M | , | . | / |SHFT/CAP| - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |RCTRL | LALT | GUI |L/HOME|R/END | | Up | Down | LEFT |RIGHT |PRSCR | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | DEL | INS | | Ctrl | Alt | - * ,------|------|------| |------+--------+------. - * | | | Home | | PgUp | | | - * |Enter |MO(1) |------| |------| Bksp |Space | - * | | | End | | PgDn | | | - * `--------------------' `----------------------' - */ -// Left hand Right hand -// ,------------------------------------------------------------------------------------------. ,------------------------------------------------------------------------------------------. - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_GRV, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MEH, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, -// |------------+------------+------------+------------+------------+------------+ | | +------------+------------+------------+------------+------------+------------| - KC_BSLS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(_MED), MO(_MED), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_RSFT_CAPS), -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_LCTL, KC_LALT, KC_LGUI, TD(TD_LOME), TD(TD_REND), KC_UP, KC_DOWN, KC_LEFT, KC_RGHT, KC_PSCR, -// `---------------------------------------------------------------' `----------------------------------------------------------------' -// ,-------------------------. ,-------------------------. - KC_DEL, KC_INS, KC_TRNS, KC_TRNS, -// ,------------+------------+------------| |------------+------------+------------. - KC_TRNS, KC_TRNS, -// | | +------------| |------------+ | | - KC_ENT, MO(_NUM), KC_TRNS, KC_TRNS, KC_BSPC, KC_SPC -// `--------------------------------------' `--------------------------------------' - ), - [_NUM] = LAYOUT_ergodox_pretty( -/* Keymap 1: Numpad, function keys, and some convenience keys - * ,---------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | | F12 | F6 | F7 | F8 | F9 | F10 | F11 | - * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| - * | | | up | | | | | | | 7 | 8 | 9 | * | / | ] | - * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | left | down |right | | |------| |------| 4 | 5 | 6 | + | - | | - * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | 1 | 2 | 3 | = | up | enter | - * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | PgUp | PgDn | | 0 | . | left | down |right | - * `-----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| Del | Esc | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// Left hand Right hand -// ,------------------------------------------------------------------------------------------. ,------------------------------------------------------------------------------------------. - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, TD(CTL_F5), KC_TRNS, KC_F12, KC_F6, TD(ALT_F7), KC_F8, KC_F9, KC_F10, KC_F11, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_PAST, KC_PSLS, KC_RBRC, -// |------------+------------+------------+------------+------------+------------+ | | +------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_PPLS, KC_PMNS, KC_TRNS, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_PEQL, KC_UP, KC_PENT, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGDN, KC_0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, -// `---------------------------------------------------------------' `----------------------------------------------------------------' -// ,-------------------------. ,-------------------------. - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, -// ,------------+------------+------------| |------------+------------+------------. - KC_TRNS, KC_TRNS, -// | | +------------| |------------+ | | - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_ESC -// `--------------------------------------' `--------------------------------------' - ), - [_MED] = LAYOUT_ergodox_pretty( -/* Keymap 2: Media and mouse keys - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | Mute | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | MsUp | | | | | | | MP7 | MP8 | MP9 | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | |MsLeft|MsDown|MsRght| | |------| |------| MP4 | MP5 | MP6 | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | MP1 | MP2 | MP3 | |VolUp | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | | | | Prev |VolDn | Next | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * |QK_BOOT | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * |MPENT | |------| |------| |Play | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// Left hand Right hand -// ,------------------------------------------------------------------------------------------. ,------------------------------------------------------------------------------------------. - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_P7), MEH(KC_P8), MEH(KC_P9), KC_TRNS, KC_TRNS, KC_TRNS, -// |------------+------------+------------+------------+------------+------------+ | | +------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, MEH(KC_P4), MEH(KC_P5), MEH(KC_P6), KC_TRNS, KC_TRNS, KC_TRNS, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MEH(KC_P1), MEH(KC_P2), MEH(KC_P3), KC_TRNS, KC_VOLU, KC_TRNS, -// |------------+------------+------------+------------+------------+------------+------------| |------------+------------+------------+------------+------------+------------+------------| - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, -// `---------------------------------------------------------------' `----------------------------------------------------------------' -// ,-------------------------. ,-------------------------. - QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, -// ,------------+------------+------------| |------------+------------+------------. - KC_TRNS, KC_TRNS, -// | | +------------| |------------+ | | - MEH(KC_PENT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY -// `--------------------------------------' `--------------------------------------' - ) -}; diff --git a/keyboards/hotdox/keymaps/ninjonas/README.md b/keyboards/hotdox/keymaps/ninjonas/README.md deleted file mode 100644 index be733fde2dfd..000000000000 --- a/keyboards/hotdox/keymaps/ninjonas/README.md +++ /dev/null @@ -1,106 +0,0 @@ -# ninjonas Keymap for [ErgoDox (HotDox)](https://www.alpacakeyboards.com/) - -## Setup -- Ensure you've cloned the [qmk](https://github.com/qmk/qmk_firmware) repo -- Create directory `ninjonas` on `/keyboards/hotdox/keymaps/` -- Run `copy_keymap.sh`. This copies the contents of this repo into `%qmk_firmware%/ninjonas/` directory -- To push your keymap to your keyboard run this command `make clean hotdox:ninjonas:dfu` - - this compiles your keymap and creates a `hotdox_ninjonas.hex` file and will atempt to flash your board - - if you get the following message: - ``` - dfu-programmer: no device present. - Error: Bootloader not found. Trying again in 5s. - ``` - - Press the reset button underneath your ErgoDox keyboard - - The following messages should show up and your board has successfuly been flashed - ``` - Bootloader Version: 0x00 (0) - Erasing flash... Success - Checking memory from 0x0 to 0x6FFF... Empty. - Checking memory from 0x0 to 0x5D7F... Empty. - 0% 100% Programming 0x5D80 bytes... - [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success - 0% 100% Reading 0x7000 bytes... - [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success - Validating... Success - 0x5D80 bytes written into 0x7000 bytes memory (83.48%). - ``` - - The alterenative is follow the steps on [Hotdox flashing guide](https://www.alpacakeyboards.com/flash/hot-dox-ergodox-76-flashing-instructions) - -## Keymap -This keymap is designed based off my typing habits and is subject to change. Information about custom user macros and tap dances can be found [here](https://github.com/ninjonas/qmk-yonas/tree/master/users/ninjonas). - -### QWERTY -```c -/* QWERTY - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Play | |K_LOCK | 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+------+--------| - * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Esc | A | S | D | F | G |------| |-------| H | J | K | L | ; | ' | - * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | = | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------' - * | | | Alt | Cmd | Ctl | | BkSP | Del |LOWER | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Up | Down | | Left | Right| - * ,------|------|------| |------+------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Del |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `--------------------' - */ -``` - -### LOWER -```c -/* LOWER - * - * ,--------------------------------------------------. ,----------------------------------------------------. - * | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------| - * | | |KC_BRU| Play | Mute | | | | | PgUp | Home | Up | End | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | |KC_BRD| Next |VolUp | |------| |-------| PgDn | Left | Down |Right |K_LOCK | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | | Prev |VolDn | | | | | | | | | | | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------' - * | | | | | | | | | |M_CODE | | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -``` - -### RAISE -```c -/* RAISE - * - * ,--------------------------------------------------. ,----------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------| - * | | | MS_1 | MS_U | MS_2 | WH_U | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | MS_L | MS_D | MS_R | WH_D |------| |-------| | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | | | | | | | | | | | | | | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -``` \ No newline at end of file diff --git a/keyboards/hotdox/keymaps/ninjonas/keymap.c b/keyboards/hotdox/keymaps/ninjonas/keymap.c deleted file mode 100644 index 2f9609c5c50a..000000000000 --- a/keyboards/hotdox/keymaps/ninjonas/keymap.c +++ /dev/null @@ -1,348 +0,0 @@ -/* Copyright 2019 @ninjonas - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "ninjonas.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* QWERTY - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Play | |K_LOCK | 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+------+--------| - * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Esc | A | S | D | F | G |------| |-------| H | J | K | L | ; | ' | - * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | = | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------' - * | | | Alt | Cmd | Ctl | | BkSP | Del |LOWER | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Up | Down | | Left | Right| - * ,------|------|------| |------+------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Del |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `--------------------' - */ - [_QWERTY] = LAYOUT_ergodox_wrapper( - // LEFT HAND - _____________________NUM_LEFT_______________________, KC_MPLY, - _____________________QWERTY_L1______________________, XXXXXXX, - _____________________QWERTY_L2______________________, - _____________________QWERTY_L3______________________, T_LBRC, - XXXXXXX, XXXXXXX, ________MOD_LEFT_________, - // LEFT THUMB - KC_UP, KC_DOWN, - KC_HOME, - LT_RAI, KC_BSPC, - KC_END, - - //RIGHT HAND - K_LOCK, _____________________NUM_RIGHT______________________, - XXXXXXX,_____________________QWERTY_R1______________________, - _____________________QWERTY_R2______________________, - T_RBRC, _____________________QWERTY_R3______________________, - ________MOD_RIGHT________, XXXXXXX, XXXXXXX, - // RIGHT THUMB - KC_LEFT, KC_RGHT, - KC_PGUP, - KC_PGDN, - MT_DEL, LT_LOW - ), - -/* DVORAK - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Play | |K_LOCK | 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+------+--------| - * | Tab | ' | , | . | P | Y | | | | F | G | C | R | L | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Esc | A | O | E | U | I |------| |-------| D | H | T | N | S | / | - * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------| - * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | = | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------' - * | | | Alt | Cmd | Ctl | | BkSP | Del |LOWER | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Up | Down | | Left | Right| - * ,------|------|------| |------+------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Del |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `--------------------' - */ - [_DVORAK] = LAYOUT_ergodox_wrapper( - // LEFT HAND - _____________________NUM_LEFT_______________________, KC_MPLY, - _____________________DVORAK_L1______________________, XXXXXXX, - _____________________DVORAK_L2______________________, - _____________________DVORAK_L3______________________, T_LBRC, - XXXXXXX, XXXXXXX, ________MOD_LEFT_________, - // LEFT THUMB - KC_UP, KC_DOWN, - KC_HOME, - LT_RAI, KC_BSPC, - KC_END, - - //RIGHT HAND - K_LOCK, _____________________NUM_RIGHT______________________, - XXXXXXX,_____________________DVORAK_R1______________________, - _____________________DVORAK_R2______________________, - T_RBRC, _____________________DVORAK_R3______________________, - ________MOD_RIGHT________, XXXXXXX, XXXXXXX, - // RIGHT THUMB - KC_LEFT, KC_RGHT, - KC_PGUP, - KC_PGDN, - MT_DEL, LT_LOW - ), - -/* COLEMAK - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Play | |K_LOCK | 6 | 7 | 8 | 9 | 0 | - | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+------+--------| - * | Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Esc | A | R | S | T | D |------| |-------| H | N | E | I | O | ' | - * |--------+------+------+------+------+------| [ | | ] |------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | | | | K | M | , | . | / | = | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+------+--------' - * | | | Alt | Cmd | Ctl | | BkSP | Del |LOWER | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Up | Down | | Left | Right| - * ,------|------|------| |------+------+------. - * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Del |Enter | - * | |ace | End | | PgDn | | | - * `--------------------' `--------------------' - */ - [_COLEMAK] = LAYOUT_ergodox_wrapper( - // LEFT HAND - _____________________NUM_LEFT_______________________, KC_MPLY, - _____________________COLEMAK_L1_____________________, XXXXXXX, - _____________________COLEMAK_L2_____________________, - _____________________COLEMAK_L3_____________________, T_LBRC, - XXXXXXX, XXXXXXX, ________MOD_LEFT_________, - // LEFT THUMB - KC_UP, KC_DOWN, - KC_HOME, - LT_RAI, KC_BSPC, - KC_END, - - //RIGHT HAND - K_LOCK, _____________________NUM_RIGHT______________________, - XXXXXXX,_____________________COLEMAK_R1_____________________, - _____________________COLEMAK_R2_____________________, - T_RBRC, _____________________COLEMAK_R3_____________________, - ________MOD_RIGHT________, XXXXXXX, XXXXXXX, - // RIGHT THUMB - KC_LEFT, KC_RGHT, - KC_PGUP, - KC_PGDN, - MT_DEL, LT_LOW - ), - -/* LOWER - * - * ,--------------------------------------------------. ,----------------------------------------------------. - * | F11 | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F12 | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------| - * | | |KC_BRU| Play | Mute | | | | | PgUp | Home | Up | End | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | |KC_BRD| Next |VolUp | |------| |-------| PgDn | Left | Down |Right |K_LOCK | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | | Prev |VolDn | | | | | | | | | | | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------' - * | | | | | | | | | |M_CODE | | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ - [_LOWER] = LAYOUT_ergodox_wrapper( - //LEFT HAND - _____________________FUNC_LEFT______________________, _______, - _____________________LOWER_L1_______________________, _______, - _____________________LOWER_L2_______________________, - _____________________LOWER_L3_______________________, _______, - _______, _______, _______, _______, _______, - // LEFT THUMB - _______, _______, - _______, - _______, _______, - _______, - - //RIGHT HAND - _______, _____________________FUNC_RIGHT_____________________, - _______, _____________________LOWER_R1_______________________, - _____________________LOWER_R2_______________________, - _______, _____________________LOWER_R3_______________________, - _______, _______, _______, M_CODE, _______, - // RIGHT THUMB - _______, _______, - _______, - _______, - _______, _______ - ), - -/* RAISE - * - * ,--------------------------------------------------. ,----------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------| - * | | | MS_1 | MS_U | MS_2 | WH_U | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | MS_L | MS_D | MS_R | WH_D |------| |-------| | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | | | | | | | | | | | | | | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ - [_RAISE] = LAYOUT_ergodox_wrapper( - //LEFT HAND - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, _____________MOUSE_1______________, XXXXXXX, - XXXXXXX, XXXXXXX, _____________MOUSE_2______________, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - // LEFT THUMB - _______, _______, - _______, - _______, _______, - _______, - - //RIGHT HAND - 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, - // RIGHT THUMB - _______, _______, - _______, - _______, - _______, _______ - ), - -/* ADJUST - * - * ,--------------------------------------------------. ,----------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------| - * | M_MAKE |QK_BOOT | | | | | | | | | | |COLMAK|DVORAK |QWERTY | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | M_VRSN |M_MALL| | | | |------| |-------| | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | M_FLSH | | | | | | | | | | | | | | | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ - [_ADJUST] = LAYOUT_ergodox_wrapper( - //LEFT HAND - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - _____________________ADJUST_L1______________________, XXXXXXX, - _____________________ADJUST_L1______________________, - _____________________ADJUST_L1______________________, XXXXXXX, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - // LEFT THUMB - _______, _______, - _______, - _______, _______, - _______, - - //RIGHT HAND - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, _____________________ADJUST_R1______________________, - _____________________ADJUST_R1______________________, - XXXXXXX, _____________________ADJUST_R1______________________, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - // RIGHT THUMB - _______, _______, - _______, - _______, - _______, _______ - ), -/* Keymap XX: TEMPLATE - * - * ,--------------------------------------------------. ,----------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------| - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | | | | |------| |-------| | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------| - * | | | | | | | | | | | | | | | | - * `--------+------+------+------+------+-------------' `--------------+------+------+------+-------+--------' - * | | | | | | | | | | | | - * `----------------------------------' `-----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' -[_XXLAYER] = LAYOUT_ergodox_wrapper( - //LEFT HAND - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - // LEFT THUMB - _______, _______, - _______, - _______, _______, - _______, - - //RIGHT HAND - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, - // RIGHT THUMB - _______, _______, - _______, - _______, - _______, _______ - ), - - */ -}; \ No newline at end of file diff --git a/keyboards/hotdox/rules.mk b/keyboards/hotdox/rules.mk index 1088cbc14bab..8e11eeabe084 100644 --- a/keyboards/hotdox/rules.mk +++ b/keyboards/hotdox/rules.mk @@ -15,5 +15,5 @@ RGBLIGHT_ENABLE = no # project specific files SRC = matrix.c \ - i2c_master.c \ left.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/hotdox76v2/config.h b/keyboards/hotdox76v2/config.h index f469aa475f88..3d80775073f8 100644 --- a/keyboards/hotdox76v2/config.h +++ b/keyboards/hotdox76v2/config.h @@ -30,11 +30,6 @@ #define RGB_MATRIX_CENTER \ { 112, 32 } -#define SPLIT_TRANSPORT_MIRROR -#define SPLIT_MODS_ENABLE -#define SPLIT_LAYER_STATE_ENABLE -#define SPLIT_LED_STATE_ENABLE -#define SPLIT_OLED_ENABLE #define SPLIT_TRANSACTION_IDS_KB KEYBOARD_CURRENT_ALPA_SYNC #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN diff --git a/keyboards/hotdox76v2/info.json b/keyboards/hotdox76v2/info.json index c66bd5eb8a5c..a42bdb3a7993 100644 --- a/keyboards/hotdox76v2/info.json +++ b/keyboards/hotdox76v2/info.json @@ -27,7 +27,16 @@ }, "split": { "enabled": true, - "soft_serial_pin": "D2" + "soft_serial_pin": "D2", + "transport": { + "sync": { + "indicators": true, + "layer_state": true, + "matrix_state": true, + "modifiers": true, + "oled": true + } + } }, "ws2812": { "pin": "D3" diff --git a/keyboards/hs60/v1/config.h b/keyboards/hs60/v1/config.h index 62c800b9bc9a..c86446439025 100644 --- a/keyboards/hs60/v1/config.h +++ b/keyboards/hs60/v1/config.h @@ -41,10 +41,9 @@ along with this program. If not, see . // #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 215 -#define DRIVER_ADDR_1 0b1110100 -#define DRIVER_ADDR_2 0b1110101 +#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND +#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SCL -#define DRIVER_COUNT 2 #define DRIVER_1_LED_TOTAL 30 #ifdef HS60_ANSI diff --git a/keyboards/hs60/v1/v1.c b/keyboards/hs60/v1/v1.c index 6c5f03f428fb..50f6215a02dc 100644 --- a/keyboards/hs60/v1/v1.c +++ b/keyboards/hs60/v1/v1.c @@ -91,7 +91,7 @@ void raw_hid_receive( uint8_t *data, uint8_t length ) #ifdef HS60_ANSI -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location @@ -199,7 +199,7 @@ led_config_t g_led_config = { { #else -const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { +const is31fl3731_led_t PROGMEM g_is31fl3731_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations * driver * | R location diff --git a/keyboards/hs60/v2/ansi/config.h b/keyboards/hs60/v2/ansi/config.h index 614b44d4d4c0..e96c36313cbc 100644 --- a/keyboards/hs60/v2/ansi/config.h +++ b/keyboards/hs60/v2/ansi/config.h @@ -53,8 +53,8 @@ along with this program. If not, see . #define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 } #define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 } -#define DRIVER_COUNT 2 -#define RGB_MATRIX_LED_COUNT 64 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_LED_COUNT 64 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/hs60/v2/ansi/keymaps/stanrc85/config.h b/keyboards/hs60/v2/ansi/keymaps/stanrc85/config.h deleted file mode 100644 index bf39aae3a240..000000000000 --- a/keyboards/hs60/v2/ansi/keymaps/stanrc85/config.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -// disable backlight after timeout in minutes, 0 = no timeout -#undef RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT -#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 20 - -#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 -#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 -#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 -#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 -#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 - -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0010000000000001 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001 //Setting \ key to "MOD" instead of "ALPHA" for lighting -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0010000000000001 -#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011110000000111 - -#undef RGB_BACKLIGHT_CAPS_LOCK_INDICATOR -#undef RGB_BACKLIGHT_LAYER_1_INDICATOR -#undef RGB_BACKLIGHT_LAYER_2_INDICATOR -#undef RGB_BACKLIGHT_LAYER_3_INDICATOR - -#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 200, .s = 255 }, .index = 3-1 } //purple -#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 100, .s = 255 }, .index = 60-1 } //green -#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 150, .s = 255 }, .index = 60-1 } //blue -#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 60-1 } //white - -#undef RGB_BACKLIGHT_BRIGHTNESS -#define RGB_BACKLIGHT_BRIGHTNESS 175 - -#undef RGB_BACKLIGHT_COLOR_1 -#undef RGB_BACKLIGHT_COLOR_2 - -#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 } -#define RGB_BACKLIGHT_COLOR_2 { .h = 150, .s = 255 } - -#define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c b/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c deleted file mode 100644 index 13fb7f005b3d..000000000000 --- a/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Copyright 2018 Stanrc85 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "stanrc85.h" - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QWERTY] = LAYOUT_60_ansi( - TD_TESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, LT_SPCF, KC_RALT, TD_TWIN, MO(_FN2_60), TD_TCTL), - - [_DEFAULT] = LAYOUT_60_ansi( - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, - KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1_60), MO(_FN2_60), KC_RCTL), - - [_FN1_60] = LAYOUT_60_ansi( - KC_TILD, 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, - _______, _______, CA_QUOT, KC_VOLU, CA_SCLN, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_PSCR, _______, _______, KC_INS, - KC_CAPS, _______, KC_MUTE, KC_VOLD, KC_MPLY, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, - _______, KC_RDP, _______, _______, _______, _______, _______, _______, KC_WBAK, KC_WFWD, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______), - - [_FN2_60] = LAYOUT_60_ansi( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR, - _______, EF_INC, ES_INC, S1_INC, H1_INC, S2_INC, H2_INC, BR_INC, _______, _______, _______, _______, _______, QK_BOOT, - _______, EF_DEC, ES_DEC, S1_DEC, H1_DEC, S2_DEC, H2_DEC, BR_DEC, _______, _______, _______, _______, KC_MAKE, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT)) -}; - -// Backlight specific keys: -// EF_INC, EF_DEC, // next/previous backlight effect -// H1_INC, H1_DEC, // Color 1 hue increase/decrease -// S1_INC, S1_DEC, // Color 1 saturation increase/decrease -// H2_INC, H2_DEC, // Color 2 hue increase/decrease -// S2_INC, S2_DEC, // Color 2 saturation increase/decrease -// BR_INC, BR_DEC, // backlight brightness increase/decrease - -bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { - return true; -} diff --git a/keyboards/hs60/v2/ansi/keymaps/stanrc85/readme.md b/keyboards/hs60/v2/ansi/keymaps/stanrc85/readme.md deleted file mode 100644 index 430d363f3762..000000000000 --- a/keyboards/hs60/v2/ansi/keymaps/stanrc85/readme.md +++ /dev/null @@ -1,48 +0,0 @@ - - -# Stanrc85's Standard ANSI 60% Layout - -## Keymap Notes -- Layer 0 is default QWERTY layout with additional custom features: - - SpaceFN to function layer 2 on `Space` - - `CTRL` when held and `ESC` when tapped on `CAPS LOCK` - - Tap Dance on `Fn1` for `CTRL+ALT+DEL` and `WIN+L` - - Tap Dance on `ESC` for `ESC` and ` ` ` - -![Base QWERTY Layer](https://imgur.com/lGcyLJx.png) - -- Layer 1 is default QWERTY with no custom features used mostly for gaming - - Enabled by `Fn2+CAPS` from base layer - -![Default ANSI Layer](https://imgur.com/M7T9PNT.png) - -- Layer 2 is Function layer: - - F keys - - Arrows - - Volume and Media controls - - AutoHotkey shortcuts based on [Speaker Control](https://github.com/stanrc85/Speaker-Control) script - - AHK Mic is used to mute/unmute microphone - - AHK Speaker switches audio output between headphones and speakers - -![Function Layer](https://imgur.com/YPl0JrU.png) - -- Layer 3 is Backlight control and RESET - - `Fn2+CAPS` used to toggle Default QWERTY layer on and off - -![RGB and RESET Layer](https://imgur.com/mMHoJPa.png) - -### Build -To build the firmware file associated with this keymap, simply run `make your_keyboard:stanrc85`. diff --git a/keyboards/hs60/v2/ansi/rules.mk b/keyboards/hs60/v2/ansi/rules.mk index a231765dffa8..bc8cb00131d2 100644 --- a/keyboards/hs60/v2/ansi/rules.mk +++ b/keyboards/hs60/v2/ansi/rules.mk @@ -22,5 +22,5 @@ CIE1931_CURVE = yes SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ drivers/led/issi/is31fl3733.c \ - quantum/color.c \ - i2c_master.c + quantum/color.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/hs60/v2/hhkb/config.h b/keyboards/hs60/v2/hhkb/config.h index e8346160683f..6a6fa375bcaa 100644 --- a/keyboards/hs60/v2/hhkb/config.h +++ b/keyboards/hs60/v2/hhkb/config.h @@ -53,8 +53,8 @@ along with this program. If not, see . #define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 } #define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 } -#define DRIVER_COUNT 2 -#define RGB_MATRIX_LED_COUNT 64 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_LED_COUNT 64 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/hs60/v2/hhkb/rules.mk b/keyboards/hs60/v2/hhkb/rules.mk index a231765dffa8..bc8cb00131d2 100644 --- a/keyboards/hs60/v2/hhkb/rules.mk +++ b/keyboards/hs60/v2/hhkb/rules.mk @@ -22,5 +22,5 @@ CIE1931_CURVE = yes SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ drivers/led/issi/is31fl3733.c \ - quantum/color.c \ - i2c_master.c + quantum/color.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/hs60/v2/iso/config.h b/keyboards/hs60/v2/iso/config.h index 7421f1bf125a..5f1a55b1d112 100644 --- a/keyboards/hs60/v2/iso/config.h +++ b/keyboards/hs60/v2/iso/config.h @@ -50,8 +50,8 @@ along with this program. If not, see . #define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 } #define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 } -#define DRIVER_COUNT 2 -#define RGB_MATRIX_LED_COUNT 64 +#define IS31FL3733_I2C_ADDRESS_1 IS31FL3733_I2C_ADDRESS_GND_GND +#define IS31FL3733_LED_COUNT 64 // These define which keys in the matrix are alphas/mods // Used for backlight effects so colors are different for diff --git a/keyboards/hs60/v2/iso/rules.mk b/keyboards/hs60/v2/iso/rules.mk index a231765dffa8..bc8cb00131d2 100644 --- a/keyboards/hs60/v2/iso/rules.mk +++ b/keyboards/hs60/v2/iso/rules.mk @@ -22,5 +22,5 @@ CIE1931_CURVE = yes SRC = keyboards/wilba_tech/wt_main.c \ keyboards/wilba_tech/wt_rgb_backlight.c \ drivers/led/issi/is31fl3733.c \ - quantum/color.c \ - i2c_master.c + quantum/color.c +I2C_DRIVER_REQUIRED = yes diff --git a/keyboards/hs60/v2/v2.c b/keyboards/hs60/v2/v2.c index f817ef19e799..45b1f54d5f55 100644 --- a/keyboards/hs60/v2/v2.c +++ b/keyboards/hs60/v2/v2.c @@ -15,5 +15,82 @@ */ #ifndef RGB_BACKLIGHT_HS60 -#error RGB_BACKLIGHT_HS60 not defined, recheck config.h +# error RGB_BACKLIGHT_HS60 not defined, recheck config.h +#else +# include "drivers/led/issi/is31fl3733.h" +#endif + +#if defined(RGB_MATRIX_ENABLE) || defined(RGB_BACKLIGHT_HS60) +const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, B_1, A_1, C_1}, //LA1 + {0, E_1, D_1, F_1}, //LA2 + {0, H_1, G_1, I_1}, //LA3 + {0, K_1, J_1, L_1}, //LA4 + {0, B_2, A_2, C_2}, //LA5 + {0, E_2, D_2, F_2}, //LA6 + {0, H_2, G_2, I_2}, //LA7 + {0, K_2, J_2, L_2}, //LA8 + {0, B_3, A_3, C_3}, //LA9 + {0, E_3, D_3, F_3}, //LA10 + {0, H_3, G_3, I_3}, //LA11 + {0, K_3, J_3, L_3}, //LA12 + {0, B_4, A_4, C_4}, //LA13 + {0, E_4, D_4, F_4}, //LA14 + {0, H_4, G_4, I_4}, //LA15 + {0, K_4, J_4, L_4}, //LA16 + {0, B_5, A_5, C_5}, //LA17 + {0, E_5, D_5, F_5}, //LA18 + {0, H_5, G_5, I_5}, //LA19 + {0, K_5, J_5, L_5}, //LA20 + {0, B_6, A_6, C_6}, //LA21 + {0, E_6, D_6, F_6}, //LA22 + {0, H_6, G_6, I_6}, //LA23 + {0, K_6, J_6, L_6}, //LA24 + {0, B_7, A_7, C_7}, //LA25 + {0, E_7, D_7, F_7}, //LA26 + {0, H_7, G_7, I_7}, //LA27 + {0, K_7, J_7, L_7}, //LA28 + {0, B_8, A_8, C_8}, //LA29 + {0, E_8, D_8, F_8}, //LA30 + {0, H_8, G_8, I_8}, //LA31 + {0, K_8, J_8, L_8}, //LA32 + {0, B_9, A_9, C_9}, //LA33 + {0, E_9, D_9, F_9}, //LA34 + {0, H_9, G_9, I_9}, //LA35 + {0, K_9, J_9, L_9}, //LA36 + {0, B_10, A_10, C_10}, //LA37 + {0, E_10, D_10, F_10}, //LA38 + {0, H_10, G_10, I_10}, //LA39 + {0, K_10, J_10, L_10}, //LA40 + {0, B_11, A_11, C_11}, //LA41 + {0, E_11, D_11, F_11}, //LA42 + {0, H_11, G_11, I_11}, //LA43 + {0, K_11, J_11, L_11}, //LA44 + {0, B_12, A_12, C_12}, //LA45 + {0, E_12, D_12, F_12}, //LA46 + {0, H_12, G_12, I_12}, //LA47 + {0, K_12, J_12, L_12}, //LA48 + {0, B_13, A_13, C_13}, //LA49 + {0, E_13, D_13, F_13}, //LA50 + {0, H_13, G_13, I_13}, //LA51 + {0, K_13, J_13, L_13}, //LA52 + {0, B_14, A_14, C_14}, //LA53 + {0, E_14, D_14, F_14}, //LA54 + {0, H_14, G_14, I_14}, //LA55 + {0, K_14, J_14, L_14}, //LA56 + {0, B_15, A_15, C_15}, //LA57 + {0, E_15, D_15, F_15}, //LA58 + {0, H_15, G_15, I_15}, //LA59 + {0, K_15, J_15, L_15}, //LA60 + {0, B_16, A_16, C_16}, //LA61 + {0, E_16, D_16, F_16}, //LA62 + {0, H_16, G_16, I_16}, //LA63 + {0, K_16, J_16, L_16}, //LA64 +}; #endif diff --git a/keyboards/ibm/model_m/mschwingen/mschwingen.c b/keyboards/ibm/model_m/mschwingen/mschwingen.c index b764660e2174..8e3810cd234f 100644 --- a/keyboards/ibm/model_m/mschwingen/mschwingen.c +++ b/keyboards/ibm/model_m/mschwingen/mschwingen.c @@ -39,26 +39,26 @@ static uint8_t isRecording = 0; # if RGBLED_NUM < 3 # error we need at least 3 RGB LEDs! # endif -static cRGB led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}}; +static rgb_led_t led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}}; # define BRIGHT 32 # define DIM 6 -static const cRGB black = {.r = 0, .g = 0, .b = 0}; +static const rgb_led_t black = {.r = 0, .g = 0, .b = 0}; -static const __attribute__((unused)) cRGB green = {.r = 0, .g = BRIGHT, .b = 0}; -static const __attribute__((unused)) cRGB lgreen = {.r = 0, .g = DIM, .b = 0}; +static const __attribute__((unused)) rgb_led_t green = {.r = 0, .g = BRIGHT, .b = 0}; +static const __attribute__((unused)) rgb_led_t lgreen = {.r = 0, .g = DIM, .b = 0}; -static const __attribute__((unused)) cRGB red = {.r = BRIGHT, .g = 0, .b = 0}; -static const __attribute__((unused)) cRGB lred = {.r = DIM, .g = 0, .b = 0}; +static const __attribute__((unused)) rgb_led_t red = {.r = BRIGHT, .g = 0, .b = 0}; +static const __attribute__((unused)) rgb_led_t lred = {.r = DIM, .g = 0, .b = 0}; -static const __attribute__((unused)) cRGB blue = {.r = 0, .g = 0, .b = BRIGHT}; -static const __attribute__((unused)) cRGB lblue = {.r = 0, .g = 0, .b = DIM}; +static const __attribute__((unused)) rgb_led_t blue = {.r = 0, .g = 0, .b = BRIGHT}; +static const __attribute__((unused)) rgb_led_t lblue = {.r = 0, .g = 0, .b = DIM}; -static const __attribute__((unused)) cRGB turq = {.r = 0, .g = BRIGHT, .b = BRIGHT}; -static const __attribute__((unused)) cRGB lturq = {.r = 0, .g = DIM, .b = DIM}; +static const __attribute__((unused)) rgb_led_t turq = {.r = 0, .g = BRIGHT, .b = BRIGHT}; +static const __attribute__((unused)) rgb_led_t lturq = {.r = 0, .g = DIM, .b = DIM}; -static const __attribute__((unused)) cRGB white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT}; +static const __attribute__((unused)) rgb_led_t white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT}; static led_t led_state; static uint8_t layer; diff --git a/keyboards/ibm/model_m/mschwingen/rules.mk b/keyboards/ibm/model_m/mschwingen/rules.mk index 5ccab87d9b62..7d81ffe326b5 100644 --- a/keyboards/ibm/model_m/mschwingen/rules.mk +++ b/keyboards/ibm/model_m/mschwingen/rules.mk @@ -19,8 +19,8 @@ DYNAMIC_MACRO_ENABLE = yes UART_DEBUG = no SRC += matrix.c -QUANTUM_LIB_SRC += uart.c \ - spi_master.c +UART_DRIVER_REQUIRED = yes +SPI_DRIVER_REQUIRED = yes OPT_DEFS += -DSLEEP_LED_ENABLE # we need our own sleep callbacks to turn of WS2812 LEDs diff --git a/keyboards/ibm/model_m/yugo_m/config.h b/keyboards/ibm/model_m/yugo_m/config.h index 2b7fc4d15756..0e6881ded3a2 100644 --- a/keyboards/ibm/model_m/yugo_m/config.h +++ b/keyboards/ibm/model_m/yugo_m/config.h @@ -36,7 +36,3 @@ along with this program. If not, see . //#define NO_ACTION_LAYER //#define NO_ACTION_TAPPING //#define NO_ACTION_ONESHOT - -/* redefine available (emulated) EEPROM as 4 kB rather than the default 2 kB to let VIA use more of the on-chip Flash of the STM32F303 to store 4 layers (since 4 layers * 8 rows * 16 columns * 2 = 1024 bytes but the default max available is 1023 bytes due to ATMEGA32U4 etc. only having 1 kB of EEPROM) */ -#define WEAR_LEVELING_BACKING_SIZE 4096 -#define WEAR_LEVELING_LOGICAL_SIZE 2048 diff --git a/keyboards/ibm/model_m/yugo_m/info.json b/keyboards/ibm/model_m/yugo_m/info.json index 6e3a0b39c61a..f4d9cc1d944c 100644 --- a/keyboards/ibm/model_m/yugo_m/info.json +++ b/keyboards/ibm/model_m/yugo_m/info.json @@ -13,6 +13,11 @@ "rows": ["B8", "B7", "B6", "B5", "B4", "B3", "A15", "A14"] }, "diode_direction": "ROW2COL", + "eeprom": { + "wear_leveling": { + "backing_size": 4096 + } + }, "processor": "STM32F303", "bootloader": "stm32-dfu", "board": "QMK_PROTON_C", diff --git a/keyboards/yugo_m/model_m_101/keymaps/an_achronism_106/keymap.c b/keyboards/ibm/model_m/yugo_m/keymaps/an_achronism_106/keymap.c similarity index 100% rename from keyboards/yugo_m/model_m_101/keymaps/an_achronism_106/keymap.c rename to keyboards/ibm/model_m/yugo_m/keymaps/an_achronism_106/keymap.c diff --git a/keyboards/yugo_m/model_m_101/keymaps/an_achronism_106/readme.md b/keyboards/ibm/model_m/yugo_m/keymaps/an_achronism_106/readme.md similarity index 100% rename from keyboards/yugo_m/model_m_101/keymaps/an_achronism_106/readme.md rename to keyboards/ibm/model_m/yugo_m/keymaps/an_achronism_106/readme.md diff --git a/keyboards/yugo_m/model_m_101/keymaps/via/keymap.c b/keyboards/ibm/model_m/yugo_m/keymaps/via/keymap.c similarity index 100% rename from keyboards/yugo_m/model_m_101/keymaps/via/keymap.c rename to keyboards/ibm/model_m/yugo_m/keymaps/via/keymap.c diff --git a/keyboards/ibm/model_m/yugo_m/keymaps/via/rules.mk b/keyboards/ibm/model_m/yugo_m/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/ibm/model_m/yugo_m/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/yugo_m/model_m_101/matrix_diagram.md b/keyboards/ibm/model_m/yugo_m/matrix_diagram.md similarity index 100% rename from keyboards/yugo_m/model_m_101/matrix_diagram.md rename to keyboards/ibm/model_m/yugo_m/matrix_diagram.md diff --git a/keyboards/idank/spankbd/config.h b/keyboards/idank/spankbd/config.h new file mode 100644 index 000000000000..e926de7f5f8a --- /dev/null +++ b/keyboards/idank/spankbd/config.h @@ -0,0 +1,6 @@ +// Copyright 2023 Idan Kamara (@idank) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define MASTER_RIGHT diff --git a/keyboards/idank/spankbd/info.json b/keyboards/idank/spankbd/info.json new file mode 100644 index 000000000000..fc9dce46313e --- /dev/null +++ b/keyboards/idank/spankbd/info.json @@ -0,0 +1,76 @@ +{ + "url": "https://github.com/idank/spankbd", + "maintainer": "idank", + "keyboard_name": "Span", + "manufacturer": "holykeebs", + "development_board": "promicro", + "usb": { + "vid": "0xC3AC", + "pid": "0x3140", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": [ "F4", "F5", "F6", "F7", "B1" ], + "rows": [ "D4", "C6", "D7", "E6" ] + }, + "diode_direction": "COL2ROW", + "split": { + "enabled": true, + "soft_serial_pin": "D2" + }, + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.25}, + {"matrix": [0, 1], "x": 1, "y": 0.125}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0.125}, + {"matrix": [0, 4], "x": 4, "y": 0.375}, + + {"matrix": [4, 4], "x": 8, "y": 0.375}, + {"matrix": [4, 3], "x": 9, "y": 0.125}, + {"matrix": [4, 2], "x": 10, "y": 0}, + {"matrix": [4, 1], "x": 11, "y": 0.125}, + {"matrix": [4, 0], "x": 12, "y": 0.25}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1, "y": 1.125}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.125}, + {"matrix": [1, 4], "x": 4, "y": 1.375}, + + {"matrix": [5, 4], "x": 8, "y": 1.375}, + {"matrix": [5, 3], "x": 9, "y": 1.125}, + {"matrix": [5, 2], "x": 10, "y": 1}, + {"matrix": [5, 1], "x": 11, "y": 1.125}, + {"matrix": [5, 0], "x": 12, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.125}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2.125}, + {"matrix": [2, 4], "x": 4, "y": 2.375}, + + {"matrix": [6, 4], "x": 8, "y": 2.375}, + {"matrix": [6, 3], "x": 9, "y": 2.125}, + {"matrix": [6, 2], "x": 10, "y": 2}, + {"matrix": [6, 1], "x": 11, "y": 2.125}, + {"matrix": [6, 0], "x": 12, "y": 2.25}, + + {"matrix": [3, 2], "x": 2, "y": 3.5}, + {"matrix": [3, 3], "x": 3.25, "y": 3.625, "w": 1.5}, + {"matrix": [3, 4], "x": 5, "y": 3.125, "h": 2}, + + {"matrix": [7, 4], "x": 7, "y": 3.125, "h": 2}, + {"matrix": [7, 3], "x": 8.25, "y": 3.625, "w": 1.5}, + {"matrix": [7, 2], "x": 10, "y": 3.5} + ] + } + } +} diff --git a/keyboards/idank/spankbd/keymaps/default/keymap.json b/keyboards/idank/spankbd/keymaps/default/keymap.json new file mode 100644 index 000000000000..10bb42e1089f --- /dev/null +++ b/keyboards/idank/spankbd/keymaps/default/keymap.json @@ -0,0 +1,125 @@ +{ + "version": 1, + "notes": "Span default keymap", + "documentation": "\"This file is a QMK Configurator export. You can import this at . It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: \n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n", + "keyboard": "idank/spankbd", + "keymap": "default", + "layout": "LAYOUT_split_3x5_3", + "layers": [ + [ + "KC_Q", + "KC_W", + "KC_E", + "KC_R", + "KC_T", + "KC_Y", + "KC_U", + "KC_I", + "KC_O", + "KC_P", + "LCTL_T(KC_A)", + "KC_S", + "KC_D", + "KC_F", + "KC_G", + "KC_H", + "KC_J", + "KC_K", + "KC_L", + "LCTL_T(KC_SCLN)", + "RSFT_T(KC_Z)", + "KC_X", + "KC_C", + "KC_V", + "KC_B", + "KC_N", + "KC_M", + "KC_COMM", + "KC_DOT", + "RSFT_T(KC_SLSH)", + "LGUI_T(KC_ESC)", + "LALT_T(KC_ENT)", + "LT(1,KC_SPC)", + "LT(2,KC_SPC)", + "KC_LSFT", + "RSFT_T(KC_TAB)" + ], + [ + "KC_EXLM", + "KC_AT", + "KC_LCBR", + "KC_RCBR", + "KC_PIPE", + "KC_GRV", + "KC_TILD", + "KC_TRNS", + "KC_TRNS", + "KC_BSLS", + "KC_HASH", + "KC_DLR", + "KC_LPRN", + "KC_RPRN", + "KC_BTN2", + "KC_PPLS", + "KC_MINS", + "KC_SLSH", + "KC_ASTR", + "KC_QUOT", + "KC_PERC", + "KC_CIRC", + "KC_LBRC", + "KC_RBRC", + "KC_BTN1", + "KC_AMPR", + "KC_EQL", + "KC_COMM", + "KC_DOT", + "KC_MINS", + "KC_BSPC", + "KC_SCLN", + "KC_TRNS", + "KC_TRNS", + "KC_SCLN", + "KC_DEL" + ], + [ + "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_LEFT", + "KC_DOWN", + "KC_UP", + "KC_RGHT", + "KC_VOLU", + "KC_F6", + "KC_F7", + "KC_F8", + "KC_F9", + "KC_F10", + "KC_MS_L", + "KC_MS_D", + "KC_MS_U", + "KC_MS_R", + "KC_VOLD", + "KC_F11", + "KC_F12", + "KC_TRNS", + "KC_TRNS", + "KC_MPLY", + "KC_MNXT" + ] + ], + "author": "idank" +} diff --git a/keyboards/idank/spankbd/keymaps/via/keymap.c b/keyboards/idank/spankbd/keymaps/via/keymap.c new file mode 100644 index 000000000000..763631f59de8 --- /dev/null +++ b/keyboards/idank/spankbd/keymaps/via/keymap.c @@ -0,0 +1,81 @@ +// Copyright 2023 Idan Kamara (@idank) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum { + _ALPHA, // default + _SPECIAL, // special characters + _NUMBERS // numbers/function/motion +}; + +#define KC_CTL_A MT(MOD_LCTL, KC_A) // Tap for A, hold for Control +#define KC_CTL_CL MT(MOD_LCTL, KC_SCLN) // Tap for colon, hold for Control +#define KC_SFT_Z MT(MOD_RSFT, KC_Z) // Tap for Z, hold for Shift +#define KC_SFT_SL MT(MOD_RSFT, KC_SLSH) // Tap for slash, hold for Shift + +#define KC_GUI_ESC MT(MOD_LGUI, KC_ESC) // Tap for Esc, hold for GUI (Meta, Command, Win) +#define KC_ALT_ENT MT(MOD_LALT, KC_ENT) // Tap for Enter, hold for Alt (Option) +#define KC_SPE_SPC LT(_SPECIAL, KC_SPC) // Tap for Space, hold for Special layer +#define KC_NUM_SPC LT(_NUMBERS, KC_SPC) // Tap for Space, hold for Numbers layer +#define KC_SFT_TAB MT(MOD_RSFT, KC_TAB) // Tap for Tab, hold for Right Shift + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Alpha layer + * + * ,-------------------------------. ,-------------------------------. + * | Q | W | E | R | T | | Y | U | I | O | P | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | CTRL A| S | D | F | G | | H | J | K | L |CTRL ; | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | SHFT Z| X | C | V | B | | N | M | < | > |SHFT / | + * `-------------------------------' `-------------------------------' + * .------------------------------. .----------------------. + * | ESC META | ENT ALT | SPC SPE | | SPC NUM | SHFT | TAB | + * '------------------------------' '----------------------' + */ + [_ALPHA] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_CTL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_CTL_CL, + KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SFT_SL, + KC_GUI_ESC, KC_ALT_ENT, KC_SPE_SPC, KC_NUM_SPC, KC_LSFT, KC_SFT_TAB), + + /* Keymap 1: Special characters layer + * + * ,-------------------------------. ,-------------------------------. + * | ! | @ | { | } | | | | ` | ~ | | | \ | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | # | $ | ( | ) | RMB | | + | - | / | * | ' | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | % | ^ | [ | ] | LMB | | & | = | , | . | - | + * `-------------------------------' `-------------------------------' + * .------------------. .-----------------. + * | BSPC | ; | = | | = | ; | DEL | + * '------------------' '-----------------' + */ + [_SPECIAL] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_BSLS, + KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_BTN2, KC_PLUS, KC_MINS, KC_SLSH, KC_ASTR, KC_QUOT, + KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_BTN1, KC_AMPR, KC_EQL, KC_COMM, KC_DOT, KC_MINS, + KC_BSPC, KC_SCLN, KC_EQL, KC_EQL, KC_SCLN, KC_DEL), + + /* Keymap 2: Numbers/Function/Motion layer + * + * ,-------------------------------. ,-------------------------------. + * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F1 | F2 | F3 | F4 | F5 | | LFT | DWN | UP | RGT | VOLUP | + * |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------| + * | F6 | F7 | F8 | F9 | F10 | | MLFT| MDWN| MUP | MRGT| VOLDN | + * `-------------------------------' `-------------------------------' + * .-----------------. .-----------------. + * | F11 | F12 | | | | PLY | SKP | + * '-----------------' '-----------------' + */ + [_NUMBERS] = LAYOUT_split_3x5_3( + 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_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, + KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_VOLD, + KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT) +}; + diff --git a/keyboards/ymdk/melody96/keymaps/via/rules.mk b/keyboards/idank/spankbd/keymaps/via/rules.mk similarity index 100% rename from keyboards/ymdk/melody96/keymaps/via/rules.mk rename to keyboards/idank/spankbd/keymaps/via/rules.mk diff --git a/keyboards/idank/spankbd/readme.md b/keyboards/idank/spankbd/readme.md new file mode 100644 index 000000000000..3d09ccbe42d5 --- /dev/null +++ b/keyboards/idank/spankbd/readme.md @@ -0,0 +1,28 @@ +# Span + +*Span is a 3x5+3 split keyboard, with 2u, 1.5u, 1u thumb clusters.* + +The keyboard layout Span uses is derived from GergoPlex, a keyboard that was originally available on gboards.ca +(now defunct). + +* Keyboard Maintainer: [@idank](https://github.com/idank) +* Hardware Supported: [spankbd](https://github.com/idank/spankbd) +* Hardware Availability: *[holykeebs](https://holykeebs.com)* + +Make example for this keyboard (after setting up your build environment): + + make idank/spankbd:default + +Flashing example for this keyboard: + + make idank/spankbd:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard. +* **Physical reset button**: Briefly press the button on the front of the PCB. Double tap for pro micro, 1 second press for Sea Picro / RP2040s. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. diff --git a/keyboards/idank/spankbd/rules.mk b/keyboards/idank/spankbd/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/idank/spankbd/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/idank/spankbd/spankbd.c b/keyboards/idank/spankbd/spankbd.c new file mode 100644 index 000000000000..7bfd41d2d83d --- /dev/null +++ b/keyboards/idank/spankbd/spankbd.c @@ -0,0 +1,29 @@ +// Copyright 2023 Idan Kamara (@idank) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef OLED_ENABLE + +__attribute__((weak)) void oled_render_logo(void) { + // [span) logo + static const char PROGMEM raw_logo[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,192,192,192,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 1, 1, 1, 64,240,248,248,248,184, 56,120,120, 0, 0, 0,248,248,248,248, 56, 56,120,248,240,240,192, 0, 0, 24,120, 56, 56, 56,120,248,248,240,224, 0, 0,248,248,248,248, 56, 56,120,248,248,240,192, 0, 1, 7,127,255,255,252,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 96,121,123,115,119,119,127,127, 63, 30, 0, 0,255,255,255,255,112,112,120,127,127, 63, 15, 0, 28, 62,127,127,127,115,115,127,127,127,127, 0, 0,127,127,127,127, 0, 0, 0,127,127,127,127, 0, 0,192,252,255,255,127, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 7, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + oled_write_raw_P(raw_logo, sizeof(raw_logo)); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + oled_render_logo(); + + return false; +} + +#endif diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/rverst/keymap.c b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/keymap.c deleted file mode 100644 index 595e76cbb3bd..000000000000 --- a/keyboards/idobao/id80/v2/ansi/keymaps/rverst/keymap.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright 2021 Robert Verst @rverst - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General 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 "rverst.h" - -//#define CLOSED_CASE // no underglow RGB visible - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = LAYOUT_ansi( - KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , MO(4) , KC_DEL , - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, 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_PGDN, - KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [1] = LAYOUT_ansi( - RV_SNAP, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_TRNS, KC_MUTE, - RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , RV_RT , RV_TM , KC_TRNS, RV_UUML, KC_TRNS, RV_OUML, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD, - KC_CAPS, RV_AUML, RV_SZ , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, KC_TRNS, RV_SINC, KC_PENT, - KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT - ), - [2] = LAYOUT_ansi( - KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_TRNS, MO(4) , KC_MUTE, - KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_VOLU, - 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_BSLS, KC_VOLD, - KC_ESC , KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT, KC_ENT, - KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP, - KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(3) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT - ), - [3] = LAYOUT_ansi( - RV_SNAP, KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , KC_F21 , KC_F22 , KC_F23 , KC_F24 , KC_TRNS, KC_MUTE, - RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, RV_UUML, KC_TRNS, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD, - KC_CAPS, RV_AUML, RV_RT , RV_SZ , RV_TM , KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , KC_TRNS, RV_OUML, RV_SINC, KC_PENT, - KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT - ), - [4] = LAYOUT_ansi( - DB_TOGG, RV_SM0 , RV_SM1 , RV_SM2 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , DF(0) , DF(2) , KC_TRNS, MO(5) , - RV_SAYM, RV_SM3 , RV_SM4 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , - KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , - KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , - KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , RGB_TOG, - KC_NO , KC_NO , GUI_ON , KC_NO , KC_NO , RCG_SWP, RGB_RMOD,RGB_M_P, RGB_MOD - ), - [5] = LAYOUT_ansi( - QK_BOOT, RV_SM0S, RV_SM1S, RV_SM2S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS, - KC_NO , RV_SM3S, RV_SM4S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , - KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , - KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , 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 , GUI_OFF, KC_NO , KC_NO , RCG_NRM, KC_NO , KC_NO , KC_NO - ) -}; -// clang-format on - -void keyboard_post_init_keymap(void) { -#ifdef CLOSED_CASE - if (rgblight_is_enabled()) { - rgblight_disable(); - } -#endif -} diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/rverst/readme.md b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/readme.md deleted file mode 100644 index 66dd2b528732..000000000000 --- a/keyboards/idobao/id80/v2/ansi/keymaps/rverst/readme.md +++ /dev/null @@ -1,23 +0,0 @@ -# IDOBAO ID80 - -This is my layout for the IDOBAO ID80. It depends of my [user files](../../../../users/rverst) -and the main goal is to give an convenient and unified access to some special keys -(umlauts, ß, €) for different operating systems (Mac, Windows and Linux). - -## Overview - -- Layer 0 is the base US-ANSI layout with Mac-style system keys and a OSL-Key for Layer 1 right of the space bar. -- Layer 1 has the special keys and some media-functions like mute, volume up/down etc. -- Layer 2 and 3 are basically the same as Layer 0 and 1 but in Colemak-Layout -- Layer 4 and 5 has some functions like switching the keyboard mode, switching the default layer etc. - - -## Keyboard modes - -- *F1:* Mac Unicode mode (use 'Unicode Hex Input' as input source) -- *F2:* Windows Unicode mode (use [WinCompse](https://github.com/SamHocevar/wincompose) software) -- *F3:* Linux Unicode mode (not tested yet but should work out of the box) -- *1:* Mac legacy mode (uses option-sequences, e.g. `