Merge remote-tracking branch 'upstream/develop' into community-modules
This commit is contained in:
commit
520b5bf980
144 changed files with 8799 additions and 1059 deletions
36
Makefile
36
Makefile
|
|
@ -113,6 +113,29 @@ endef
|
|||
# Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST
|
||||
TRY_TO_MATCH_RULE_FROM_LIST = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER,$1))$(RULE_FOUND)
|
||||
|
||||
# As TRY_TO_MATCH_RULE_FROM_LIST_HELPER, but with additional
|
||||
# resolution of DEFAULT_FOLDER and keyboard_aliases.hjson for provided rule
|
||||
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB
|
||||
# Split on ":", padding with empty strings to avoid indexing issues
|
||||
TOKEN1:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[0])" $$(RULE))
|
||||
TOKENr:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[1])" $$(RULE))
|
||||
|
||||
TOKEN1:=$$(shell $(QMK_BIN) resolve-alias --allow-unknown $$(TOKEN1))
|
||||
|
||||
FOUNDx:=$$(shell echo $1 | tr " " "\n" | grep -Fx $$(TOKEN1))
|
||||
ifneq ($$(FOUNDx),)
|
||||
RULE := $$(TOKENr)
|
||||
RULE_FOUND := true
|
||||
MATCHED_ITEM := $$(TOKEN1)
|
||||
else
|
||||
RULE_FOUND := false
|
||||
MATCHED_ITEM :=
|
||||
endif
|
||||
endef
|
||||
|
||||
# Make it easier to call TRY_TO_MATCH_RULE_FROM_LIST_KB
|
||||
TRY_TO_MATCH_RULE_FROM_LIST_KB = $(eval $(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER_KB,$1))$(RULE_FOUND)
|
||||
|
||||
define ALL_IN_LIST_LOOP
|
||||
OLD_RULE$1 := $$(RULE)
|
||||
$$(eval $$(call $1,$$(ITEM$1)))
|
||||
|
|
@ -138,7 +161,7 @@ define PARSE_RULE
|
|||
$$(eval $$(call PARSE_TEST))
|
||||
# If the rule starts with the name of a known keyboard, then continue
|
||||
# the parsing from PARSE_KEYBOARD
|
||||
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST,$$(shell $(QMK_BIN) list-keyboards --no-resolve-defaults)),true)
|
||||
else ifeq ($$(call TRY_TO_MATCH_RULE_FROM_LIST_KB,$$(shell $(QMK_BIN) list-keyboards)),true)
|
||||
KEYBOARD_RULE=$$(MATCHED_ITEM)
|
||||
$$(eval $$(call PARSE_KEYBOARD,$$(MATCHED_ITEM)))
|
||||
else
|
||||
|
|
@ -170,17 +193,6 @@ define PARSE_KEYBOARD
|
|||
# include the correct makefile to determine the actual name of it
|
||||
CURRENT_KB := $1
|
||||
|
||||
# KEYBOARD_FOLDERS := $$(subst /, , $(CURRENT_KB))
|
||||
|
||||
DEFAULT_FOLDER := $$(CURRENT_KB)
|
||||
|
||||
# We assume that every rules.mk will contain the full default value
|
||||
$$(eval include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk)
|
||||
ifneq ($$(DEFAULT_FOLDER),$$(CURRENT_KB))
|
||||
$$(eval include $(ROOT_DIR)/keyboards/$$(DEFAULT_FOLDER)/rules.mk)
|
||||
endif
|
||||
CURRENT_KB := $$(DEFAULT_FOLDER)
|
||||
|
||||
# 5/4/3/2/1
|
||||
KEYBOARD_FOLDER_PATH_1 := $$(CURRENT_KB)
|
||||
KEYBOARD_FOLDER_PATH_2 := $$(patsubst %/,%,$$(dir $$(KEYBOARD_FOLDER_PATH_1)))
|
||||
|
|
|
|||
|
|
@ -944,6 +944,8 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
|
|||
|
||||
OPT_DEFS += -DWS2812_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
|
||||
|
||||
COMMON_VPATH += $(DRIVER_PATH)/led
|
||||
|
||||
SRC += ws2812.c ws2812_$(strip $(WS2812_DRIVER)).c
|
||||
|
||||
ifeq ($(strip $(PLATFORM)), CHIBIOS)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"vite": "^5.2.14",
|
||||
"vite": "^5.4.12",
|
||||
"vitepress": "^1.1.0",
|
||||
"vitepress-plugin-tabs": "^0.5.0",
|
||||
"vue": "^3.4.24"
|
||||
|
|
|
|||
|
|
@ -178,205 +178,220 @@
|
|||
"@docsearch/css" "3.6.0"
|
||||
algoliasearch "^4.19.1"
|
||||
|
||||
"@esbuild/aix-ppc64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537"
|
||||
integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==
|
||||
"@esbuild/aix-ppc64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
|
||||
integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
|
||||
|
||||
"@esbuild/android-arm64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9"
|
||||
integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==
|
||||
"@esbuild/android-arm64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
|
||||
integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
|
||||
|
||||
"@esbuild/android-arm@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995"
|
||||
integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==
|
||||
"@esbuild/android-arm@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
|
||||
integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
|
||||
|
||||
"@esbuild/android-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98"
|
||||
integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==
|
||||
"@esbuild/android-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
|
||||
integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
|
||||
|
||||
"@esbuild/darwin-arm64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb"
|
||||
integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==
|
||||
"@esbuild/darwin-arm64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
|
||||
integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
|
||||
|
||||
"@esbuild/darwin-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0"
|
||||
integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==
|
||||
"@esbuild/darwin-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
|
||||
integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911"
|
||||
integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==
|
||||
"@esbuild/freebsd-arm64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
|
||||
integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
|
||||
|
||||
"@esbuild/freebsd-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c"
|
||||
integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==
|
||||
"@esbuild/freebsd-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
|
||||
integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
|
||||
|
||||
"@esbuild/linux-arm64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5"
|
||||
integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==
|
||||
"@esbuild/linux-arm64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
|
||||
integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
|
||||
|
||||
"@esbuild/linux-arm@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c"
|
||||
integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==
|
||||
"@esbuild/linux-arm@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
|
||||
integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
|
||||
|
||||
"@esbuild/linux-ia32@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa"
|
||||
integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==
|
||||
"@esbuild/linux-ia32@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
|
||||
integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
|
||||
|
||||
"@esbuild/linux-loong64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5"
|
||||
integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==
|
||||
"@esbuild/linux-loong64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
|
||||
integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
|
||||
|
||||
"@esbuild/linux-mips64el@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa"
|
||||
integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==
|
||||
"@esbuild/linux-mips64el@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
|
||||
integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
|
||||
|
||||
"@esbuild/linux-ppc64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20"
|
||||
integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==
|
||||
"@esbuild/linux-ppc64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
|
||||
integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
|
||||
|
||||
"@esbuild/linux-riscv64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300"
|
||||
integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==
|
||||
"@esbuild/linux-riscv64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
|
||||
integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
|
||||
|
||||
"@esbuild/linux-s390x@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685"
|
||||
integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==
|
||||
"@esbuild/linux-s390x@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
|
||||
integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
|
||||
|
||||
"@esbuild/linux-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff"
|
||||
integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==
|
||||
"@esbuild/linux-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
|
||||
integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
|
||||
|
||||
"@esbuild/netbsd-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6"
|
||||
integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==
|
||||
"@esbuild/netbsd-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
|
||||
integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
|
||||
|
||||
"@esbuild/openbsd-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf"
|
||||
integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==
|
||||
"@esbuild/openbsd-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
|
||||
integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
|
||||
|
||||
"@esbuild/sunos-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f"
|
||||
integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==
|
||||
"@esbuild/sunos-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
|
||||
integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
|
||||
|
||||
"@esbuild/win32-arm64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90"
|
||||
integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==
|
||||
"@esbuild/win32-arm64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
|
||||
integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
|
||||
|
||||
"@esbuild/win32-ia32@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23"
|
||||
integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==
|
||||
"@esbuild/win32-ia32@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
|
||||
integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
|
||||
|
||||
"@esbuild/win32-x64@0.20.2":
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc"
|
||||
integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==
|
||||
"@esbuild/win32-x64@0.21.5":
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
|
||||
integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.15":
|
||||
version "1.4.15"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz#8b613b9725e8f9479d142970b106b6ae878610d5"
|
||||
integrity sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==
|
||||
"@rollup/rollup-android-arm-eabi@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.31.0.tgz#d4dd60da0075a6ce9a6c76d71b8204f3e1822285"
|
||||
integrity sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==
|
||||
|
||||
"@rollup/rollup-android-arm64@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz#654ca1049189132ff602bfcf8df14c18da1f15fb"
|
||||
integrity sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==
|
||||
"@rollup/rollup-android-arm64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.31.0.tgz#25c4d33259a7a2ccd2f52a5ffcc0bb3ab3f0729d"
|
||||
integrity sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==
|
||||
|
||||
"@rollup/rollup-darwin-arm64@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz#6d241d099d1518ef0c2205d96b3fa52e0fe1954b"
|
||||
integrity sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==
|
||||
"@rollup/rollup-darwin-arm64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.31.0.tgz#d137dff254b19163a6b52ac083a71cd055dae844"
|
||||
integrity sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==
|
||||
|
||||
"@rollup/rollup-darwin-x64@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz#42bd19d292a57ee11734c980c4650de26b457791"
|
||||
integrity sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==
|
||||
"@rollup/rollup-darwin-x64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.31.0.tgz#58ff20b5dacb797d3adca19f02a21c532f9d55bf"
|
||||
integrity sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz#f23555ee3d8fe941c5c5fd458cd22b65eb1c2232"
|
||||
integrity sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==
|
||||
"@rollup/rollup-freebsd-arm64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.31.0.tgz#96ce1a241c591ec3e068f4af765d94eddb24e60c"
|
||||
integrity sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz#f3bbd1ae2420f5539d40ac1fde2b38da67779baa"
|
||||
integrity sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==
|
||||
"@rollup/rollup-freebsd-x64@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.31.0.tgz#e59e7ede505be41f0b4311b0b943f8eb44938467"
|
||||
integrity sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz#7abe900120113e08a1f90afb84c7c28774054d15"
|
||||
integrity sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==
|
||||
"@rollup/rollup-linux-arm-gnueabihf@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.31.0.tgz#e455ca6e4ff35bd46d62201c153352e717000a7b"
|
||||
integrity sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz#9e655285c8175cd44f57d6a1e8e5dedfbba1d820"
|
||||
integrity sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==
|
||||
"@rollup/rollup-linux-arm-musleabihf@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.31.0.tgz#bc1a93d807d19e70b1e343a5bfea43723bcd6327"
|
||||
integrity sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==
|
||||
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz#9a79ae6c9e9d8fe83d49e2712ecf4302db5bef5e"
|
||||
integrity sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==
|
||||
"@rollup/rollup-linux-arm64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.31.0.tgz#f38bf843f1dc3d5de680caf31084008846e3efae"
|
||||
integrity sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz#67ac70eca4ace8e2942fabca95164e8874ab8128"
|
||||
integrity sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==
|
||||
"@rollup/rollup-linux-arm64-musl@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.31.0.tgz#b3987a96c18b7287129cf735be2dbf83e94d9d05"
|
||||
integrity sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz#9f883a7440f51a22ed7f99e1d070bd84ea5005fc"
|
||||
integrity sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==
|
||||
"@rollup/rollup-linux-loongarch64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.31.0.tgz#0f0324044e71c4f02e9f49e7ec4e347b655b34ee"
|
||||
integrity sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz#70116ae6c577fe367f58559e2cffb5641a1dd9d0"
|
||||
integrity sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.31.0.tgz#809479f27f1fd5b4eecd2aa732132ad952d454ba"
|
||||
integrity sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==
|
||||
|
||||
"@rollup/rollup-linux-x64-musl@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz#f473f88219feb07b0b98b53a7923be716d1d182f"
|
||||
integrity sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==
|
||||
"@rollup/rollup-linux-riscv64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.31.0.tgz#7bc75c4f22db04d3c972f83431739cfa41c6a36e"
|
||||
integrity sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz#4349482d17f5d1c58604d1c8900540d676f420e0"
|
||||
integrity sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==
|
||||
"@rollup/rollup-linux-s390x-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.31.0.tgz#cfe8052345c55864d83ae343362cf1912480170e"
|
||||
integrity sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz#a6fc39a15db618040ec3c2a24c1e26cb5f4d7422"
|
||||
integrity sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==
|
||||
"@rollup/rollup-linux-x64-gnu@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.31.0.tgz#c6b048f1e25f3fea5b4bd246232f4d07a159c5a0"
|
||||
integrity sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@4.22.4":
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz#3dd5d53e900df2a40841882c02e56f866c04d202"
|
||||
integrity sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==
|
||||
"@rollup/rollup-linux-x64-musl@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.31.0.tgz#615273ac52d1a201f4de191cbd3389016a9d7d80"
|
||||
integrity sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.31.0.tgz#32ed85810c1b831c648eca999d68f01255b30691"
|
||||
integrity sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.31.0.tgz#d47effada68bcbfdccd30c4a788d42e4542ff4d3"
|
||||
integrity sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@4.31.0":
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.31.0.tgz#7a2d89a82cf0388d60304964217dd7beac6de645"
|
||||
integrity sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==
|
||||
|
||||
"@shikijs/core@1.3.0", "@shikijs/core@^1.3.0":
|
||||
version "1.3.0"
|
||||
|
|
@ -390,10 +405,10 @@
|
|||
dependencies:
|
||||
shiki "1.3.0"
|
||||
|
||||
"@types/estree@1.0.5":
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
|
||||
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
|
||||
"@types/estree@1.0.6":
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
|
||||
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
|
||||
|
||||
"@types/linkify-it@*":
|
||||
version "3.0.5"
|
||||
|
|
@ -589,34 +604,34 @@ entities@^4.5.0:
|
|||
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
|
||||
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
|
||||
|
||||
esbuild@^0.20.1:
|
||||
version "0.20.2"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1"
|
||||
integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==
|
||||
esbuild@^0.21.3:
|
||||
version "0.21.5"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
|
||||
integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==
|
||||
optionalDependencies:
|
||||
"@esbuild/aix-ppc64" "0.20.2"
|
||||
"@esbuild/android-arm" "0.20.2"
|
||||
"@esbuild/android-arm64" "0.20.2"
|
||||
"@esbuild/android-x64" "0.20.2"
|
||||
"@esbuild/darwin-arm64" "0.20.2"
|
||||
"@esbuild/darwin-x64" "0.20.2"
|
||||
"@esbuild/freebsd-arm64" "0.20.2"
|
||||
"@esbuild/freebsd-x64" "0.20.2"
|
||||
"@esbuild/linux-arm" "0.20.2"
|
||||
"@esbuild/linux-arm64" "0.20.2"
|
||||
"@esbuild/linux-ia32" "0.20.2"
|
||||
"@esbuild/linux-loong64" "0.20.2"
|
||||
"@esbuild/linux-mips64el" "0.20.2"
|
||||
"@esbuild/linux-ppc64" "0.20.2"
|
||||
"@esbuild/linux-riscv64" "0.20.2"
|
||||
"@esbuild/linux-s390x" "0.20.2"
|
||||
"@esbuild/linux-x64" "0.20.2"
|
||||
"@esbuild/netbsd-x64" "0.20.2"
|
||||
"@esbuild/openbsd-x64" "0.20.2"
|
||||
"@esbuild/sunos-x64" "0.20.2"
|
||||
"@esbuild/win32-arm64" "0.20.2"
|
||||
"@esbuild/win32-ia32" "0.20.2"
|
||||
"@esbuild/win32-x64" "0.20.2"
|
||||
"@esbuild/aix-ppc64" "0.21.5"
|
||||
"@esbuild/android-arm" "0.21.5"
|
||||
"@esbuild/android-arm64" "0.21.5"
|
||||
"@esbuild/android-x64" "0.21.5"
|
||||
"@esbuild/darwin-arm64" "0.21.5"
|
||||
"@esbuild/darwin-x64" "0.21.5"
|
||||
"@esbuild/freebsd-arm64" "0.21.5"
|
||||
"@esbuild/freebsd-x64" "0.21.5"
|
||||
"@esbuild/linux-arm" "0.21.5"
|
||||
"@esbuild/linux-arm64" "0.21.5"
|
||||
"@esbuild/linux-ia32" "0.21.5"
|
||||
"@esbuild/linux-loong64" "0.21.5"
|
||||
"@esbuild/linux-mips64el" "0.21.5"
|
||||
"@esbuild/linux-ppc64" "0.21.5"
|
||||
"@esbuild/linux-riscv64" "0.21.5"
|
||||
"@esbuild/linux-s390x" "0.21.5"
|
||||
"@esbuild/linux-x64" "0.21.5"
|
||||
"@esbuild/netbsd-x64" "0.21.5"
|
||||
"@esbuild/openbsd-x64" "0.21.5"
|
||||
"@esbuild/sunos-x64" "0.21.5"
|
||||
"@esbuild/win32-arm64" "0.21.5"
|
||||
"@esbuild/win32-ia32" "0.21.5"
|
||||
"@esbuild/win32-x64" "0.21.5"
|
||||
|
||||
estree-walker@^2.0.2:
|
||||
version "2.0.2"
|
||||
|
|
@ -662,7 +677,7 @@ mitt@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
|
||||
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
|
||||
|
||||
nanoid@^3.3.7:
|
||||
nanoid@^3.3.8:
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
|
||||
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
|
||||
|
|
@ -672,19 +687,19 @@ perfect-debounce@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
|
||||
integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
|
||||
|
||||
picocolors@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
||||
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||
picocolors@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
|
||||
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
|
||||
|
||||
postcss@^8.4.38:
|
||||
version "8.4.38"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
|
||||
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
|
||||
postcss@^8.4.38, postcss@^8.4.43:
|
||||
version "8.5.1"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214"
|
||||
integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==
|
||||
dependencies:
|
||||
nanoid "^3.3.7"
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.2.0"
|
||||
nanoid "^3.3.8"
|
||||
picocolors "^1.1.1"
|
||||
source-map-js "^1.2.1"
|
||||
|
||||
preact@^10.0.0:
|
||||
version "10.20.2"
|
||||
|
|
@ -696,29 +711,32 @@ rfdc@^1.3.1:
|
|||
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f"
|
||||
integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==
|
||||
|
||||
rollup@^4.13.0:
|
||||
version "4.22.4"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.4.tgz#4135a6446671cd2a2453e1ad42a45d5973ec3a0f"
|
||||
integrity sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==
|
||||
rollup@^4.20.0:
|
||||
version "4.31.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.31.0.tgz#b84af969a0292cb047dce2c0ec5413a9457597a4"
|
||||
integrity sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==
|
||||
dependencies:
|
||||
"@types/estree" "1.0.5"
|
||||
"@types/estree" "1.0.6"
|
||||
optionalDependencies:
|
||||
"@rollup/rollup-android-arm-eabi" "4.22.4"
|
||||
"@rollup/rollup-android-arm64" "4.22.4"
|
||||
"@rollup/rollup-darwin-arm64" "4.22.4"
|
||||
"@rollup/rollup-darwin-x64" "4.22.4"
|
||||
"@rollup/rollup-linux-arm-gnueabihf" "4.22.4"
|
||||
"@rollup/rollup-linux-arm-musleabihf" "4.22.4"
|
||||
"@rollup/rollup-linux-arm64-gnu" "4.22.4"
|
||||
"@rollup/rollup-linux-arm64-musl" "4.22.4"
|
||||
"@rollup/rollup-linux-powerpc64le-gnu" "4.22.4"
|
||||
"@rollup/rollup-linux-riscv64-gnu" "4.22.4"
|
||||
"@rollup/rollup-linux-s390x-gnu" "4.22.4"
|
||||
"@rollup/rollup-linux-x64-gnu" "4.22.4"
|
||||
"@rollup/rollup-linux-x64-musl" "4.22.4"
|
||||
"@rollup/rollup-win32-arm64-msvc" "4.22.4"
|
||||
"@rollup/rollup-win32-ia32-msvc" "4.22.4"
|
||||
"@rollup/rollup-win32-x64-msvc" "4.22.4"
|
||||
"@rollup/rollup-android-arm-eabi" "4.31.0"
|
||||
"@rollup/rollup-android-arm64" "4.31.0"
|
||||
"@rollup/rollup-darwin-arm64" "4.31.0"
|
||||
"@rollup/rollup-darwin-x64" "4.31.0"
|
||||
"@rollup/rollup-freebsd-arm64" "4.31.0"
|
||||
"@rollup/rollup-freebsd-x64" "4.31.0"
|
||||
"@rollup/rollup-linux-arm-gnueabihf" "4.31.0"
|
||||
"@rollup/rollup-linux-arm-musleabihf" "4.31.0"
|
||||
"@rollup/rollup-linux-arm64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-arm64-musl" "4.31.0"
|
||||
"@rollup/rollup-linux-loongarch64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-powerpc64le-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-riscv64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-s390x-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-x64-gnu" "4.31.0"
|
||||
"@rollup/rollup-linux-x64-musl" "4.31.0"
|
||||
"@rollup/rollup-win32-arm64-msvc" "4.31.0"
|
||||
"@rollup/rollup-win32-ia32-msvc" "4.31.0"
|
||||
"@rollup/rollup-win32-x64-msvc" "4.31.0"
|
||||
fsevents "~2.3.2"
|
||||
|
||||
shiki@1.3.0, shiki@^1.3.0:
|
||||
|
|
@ -733,6 +751,11 @@ source-map-js@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
|
||||
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
|
||||
|
||||
source-map-js@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
||||
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
||||
|
||||
speakingurl@^14.0.1:
|
||||
version "14.0.1"
|
||||
resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53"
|
||||
|
|
@ -743,14 +766,14 @@ tabbable@^6.2.0:
|
|||
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
|
||||
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
|
||||
|
||||
vite@^5.2.14, vite@^5.2.9:
|
||||
version "5.2.14"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.14.tgz#fd5f60facf6b5f90ec7da6323c467a365d380c3d"
|
||||
integrity sha512-TFQLuwWLPms+NBNlh0D9LZQ+HXW471COABxw/9TEUBrjuHMo9BrYBPrN/SYAwIuVL+rLerycxiLT41t4f5MZpA==
|
||||
vite@^5.2.9, vite@^5.4.12:
|
||||
version "5.4.12"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.12.tgz#627d12ff06de3942557dfe8632fd712a12a072c7"
|
||||
integrity sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA==
|
||||
dependencies:
|
||||
esbuild "^0.20.1"
|
||||
postcss "^8.4.38"
|
||||
rollup "^4.13.0"
|
||||
esbuild "^0.21.3"
|
||||
postcss "^8.4.43"
|
||||
rollup "^4.20.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.3"
|
||||
|
||||
|
|
|
|||
|
|
@ -200,6 +200,7 @@
|
|||
"SPLIT_WPM_ENABLE": {"info_key": "split.transport.sync.wpm", "value_type": "flag"},
|
||||
|
||||
// Tapping
|
||||
"CHORDAL_HOLD": {"info_key": "tapping.chordal_hold", "value_type": "flag"},
|
||||
"HOLD_ON_OTHER_KEY_PRESS": {"info_key": "tapping.hold_on_other_key_press", "value_type": "flag"},
|
||||
"HOLD_ON_OTHER_KEY_PRESS_PER_KEY": {"info_key": "tapping.hold_on_other_key_press_per_key", "value_type": "flag"},
|
||||
"PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "flag"},
|
||||
|
|
|
|||
|
|
@ -1575,6 +1575,12 @@
|
|||
"1upkeyboards/sweet16": {
|
||||
"target": "1upkeyboards/sweet16/v1"
|
||||
},
|
||||
"25keys/aleth42": {
|
||||
"target": "25keys/aleth42/rev1"
|
||||
},
|
||||
"25keys/zinc": {
|
||||
"target": "25keys/zinc/rev1"
|
||||
},
|
||||
"40percentclub/i75": {
|
||||
"target": "40percentclub/i75/promicro"
|
||||
},
|
||||
|
|
@ -1599,6 +1605,9 @@
|
|||
"atreyu": {
|
||||
"target": "atreyu/rev1"
|
||||
},
|
||||
"biacco42/ergo42": {
|
||||
"target": "biacco42/ergo42/rev1"
|
||||
},
|
||||
"binepad/bn009": {
|
||||
"target": "binepad/bn009/r2"
|
||||
},
|
||||
|
|
@ -1641,6 +1650,9 @@
|
|||
"deltasplit75": {
|
||||
"target": "deltasplit75/v2"
|
||||
},
|
||||
"drhigsby/ogurec": {
|
||||
"target": "drhigsby/ogurec/left_pm"
|
||||
},
|
||||
"duck/octagon": {
|
||||
"target": "duck/octagon/v2"
|
||||
},
|
||||
|
|
@ -1731,6 +1743,9 @@
|
|||
"handwired/unk": {
|
||||
"target": "handwired/unk/rev1"
|
||||
},
|
||||
"handwired/xealous": {
|
||||
"target": "handwired/xealous/rev1"
|
||||
},
|
||||
"hillside/46": {
|
||||
"target": "hillside/46/0_1"
|
||||
},
|
||||
|
|
@ -1752,9 +1767,15 @@
|
|||
"inett_studio/sq80": {
|
||||
"target": "inett_studio/sq80/hotswap_layout_i"
|
||||
},
|
||||
"input_club/infinity60": {
|
||||
"target": "input_club/infinity60/led"
|
||||
},
|
||||
"jacky_studio/bear_65": {
|
||||
"target": "jacky_studio/bear_65/rev1"
|
||||
},
|
||||
"jacky_studio/piggy60/rev1": {
|
||||
"target": "jacky_studio/piggy60/rev1/solder"
|
||||
},
|
||||
"jadookb/jkb65": {
|
||||
"target": "jadookb/jkb65/r1"
|
||||
},
|
||||
|
|
@ -1770,12 +1791,18 @@
|
|||
"junco": {
|
||||
"target": "junco/rev1"
|
||||
},
|
||||
"kakunpc/angel17": {
|
||||
"target": "kakunpc/angel17/rev1"
|
||||
},
|
||||
"kakunpc/business_card": {
|
||||
"target": "kakunpc/business_card/beta"
|
||||
},
|
||||
"kakunpc/suihankey": {
|
||||
"target": "kakunpc/suihankey/rev1"
|
||||
},
|
||||
"kakunpc/suihankey/split": {
|
||||
"target": "kakunpc/suihankey/split/rev1"
|
||||
},
|
||||
"kapcave/paladinpad": {
|
||||
"target": "kapcave/paladinpad/rev2"
|
||||
},
|
||||
|
|
@ -1818,6 +1845,12 @@
|
|||
"keycapsss/kimiko": {
|
||||
"target": "keycapsss/kimiko/rev2"
|
||||
},
|
||||
"keyhive/navi10": {
|
||||
"target": "keyhive/navi10/rev3"
|
||||
},
|
||||
"keyhive/uno": {
|
||||
"target": "keyhive/uno/rev1"
|
||||
},
|
||||
"kin80": {
|
||||
"target": "kin80/blackpill401"
|
||||
},
|
||||
|
|
@ -1848,6 +1881,9 @@
|
|||
"lime": {
|
||||
"target": "lime/rev1"
|
||||
},
|
||||
"maple_computing/christmas_tree": {
|
||||
"target": "maple_computing/christmas_tree/v2017"
|
||||
},
|
||||
"maple_computing/ivy": {
|
||||
"target": "maple_computing/ivy/rev1"
|
||||
},
|
||||
|
|
@ -1863,6 +1899,9 @@
|
|||
"marksard/rhymestone": {
|
||||
"target": "marksard/rhymestone/rev1"
|
||||
},
|
||||
"marksard/treadstone32": {
|
||||
"target": "marksard/treadstone32/rev1"
|
||||
},
|
||||
"marksard/treadstone48": {
|
||||
"target": "marksard/treadstone48/rev1"
|
||||
},
|
||||
|
|
@ -1887,6 +1926,9 @@
|
|||
"mechlovin/adelais/standard_led/avr": {
|
||||
"target": "mechlovin/adelais/standard_led/avr/rev1"
|
||||
},
|
||||
"mechlovin/hannah65/rev1": {
|
||||
"target": "mechlovin/hannah65/rev1/haus"
|
||||
},
|
||||
"mechlovin/infinity87/rev1": {
|
||||
"target": "mechlovin/infinity87/rev1/standard"
|
||||
},
|
||||
|
|
@ -1983,6 +2025,15 @@
|
|||
"qwertyydox": {
|
||||
"target": "qwertyydox/rev1"
|
||||
},
|
||||
"rate/pistachio": {
|
||||
"target": "rate/pistachio/rev2"
|
||||
},
|
||||
"recompile_keys/choco60": {
|
||||
"target": "recompile_keys/choco60/rev1"
|
||||
},
|
||||
"recompile_keys/nomu30": {
|
||||
"target": "recompile_keys/nomu30/rev1"
|
||||
},
|
||||
"redox/rev1": {
|
||||
"target": "redox/rev1/base"
|
||||
},
|
||||
|
|
@ -2022,6 +2073,27 @@
|
|||
"rura66": {
|
||||
"target": "rura66/rev1"
|
||||
},
|
||||
"salicylic_acid3/7skb": {
|
||||
"target": "salicylic_acid3/7skb/rev1"
|
||||
},
|
||||
"salicylic_acid3/getta25": {
|
||||
"target": "salicylic_acid3/getta25/rev1"
|
||||
},
|
||||
"salicylic_acid3/jisplit89": {
|
||||
"target": "salicylic_acid3/jisplit89/rev1"
|
||||
},
|
||||
"salicylic_acid3/naked48": {
|
||||
"target": "salicylic_acid3/naked48/rev1"
|
||||
},
|
||||
"salicylic_acid3/naked60": {
|
||||
"target": "salicylic_acid3/naked60/rev1"
|
||||
},
|
||||
"salicylic_acid3/naked64": {
|
||||
"target": "salicylic_acid3/naked64/rev1"
|
||||
},
|
||||
"salicylic_acid3/setta21": {
|
||||
"target": "salicylic_acid3/setta21/rev1"
|
||||
},
|
||||
"sawnsprojects/okayu": {
|
||||
"target": "sawnsprojects/okayu/stm32f072"
|
||||
},
|
||||
|
|
@ -2031,6 +2103,9 @@
|
|||
"sofle": {
|
||||
"target": "sofle/rev1"
|
||||
},
|
||||
"spaceholdings/nebula68b": {
|
||||
"target": "spaceholdings/nebula68b/solder"
|
||||
},
|
||||
"spacetime": {
|
||||
"target": "spacetime/rev1"
|
||||
},
|
||||
|
|
@ -2049,6 +2124,9 @@
|
|||
"splitkb/aurora/sweep": {
|
||||
"target": "splitkb/aurora/sweep/rev1"
|
||||
},
|
||||
"splitkb/kyria": {
|
||||
"target": "splitkb/kyria/rev3"
|
||||
},
|
||||
"splitkb/kyria/rev1": {
|
||||
"target": "splitkb/kyria/rev1/base"
|
||||
},
|
||||
|
|
@ -2064,12 +2142,18 @@
|
|||
"takashiski/hecomi": {
|
||||
"target": "takashiski/hecomi/alpha"
|
||||
},
|
||||
"takashiski/namecard2x4": {
|
||||
"target": "takashiski/namecard2x4/rev2"
|
||||
},
|
||||
"themadnoodle/noodlepad": {
|
||||
"target": "themadnoodle/noodlepad/v1"
|
||||
},
|
||||
"tkw/grandiceps": {
|
||||
"target": "tkw/grandiceps/rev1"
|
||||
},
|
||||
"tominabox1/le_chiffre": {
|
||||
"target": "tominabox1/le_chiffre/rev1"
|
||||
},
|
||||
"tominabox1/littlefoot_lx": {
|
||||
"target": "tominabox1/littlefoot_lx/rev1"
|
||||
},
|
||||
|
|
@ -2100,6 +2184,9 @@
|
|||
"yosino58": {
|
||||
"target": "yosino58/rev1"
|
||||
},
|
||||
"ymdk/yd60mq": {
|
||||
"target": "ymdk/yd60mq/12led"
|
||||
},
|
||||
"yushakobo/navpad/10": {
|
||||
"target": "yushakobo/navpad/10/rev1"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -423,7 +423,11 @@
|
|||
"h": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"w": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"y": {"$ref": "qmk.definitions.v1#/key_unit"}
|
||||
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"hand": {
|
||||
"type": "string",
|
||||
"enum": ["L", "R", "*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -922,6 +926,7 @@
|
|||
"tapping": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"chordal_hold": {"type": "boolean"},
|
||||
"force_hold": {"type": "boolean"},
|
||||
"force_hold_per_key": {"type": "boolean"},
|
||||
"ignore_mod_tap_interrupt": {"type": "boolean"},
|
||||
|
|
|
|||
|
|
@ -723,23 +723,26 @@ Now open your dev environment and live a squiggly-free life.
|
|||
|
||||
## `qmk docs`
|
||||
|
||||
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 5173.
|
||||
This command starts a local HTTP server which you can use for browsing or improving the docs, and provides live reload capability whilst editing. Default port is 8936.
|
||||
Use the `-b`/`--browser` flag to automatically open the local webserver in your default browser.
|
||||
|
||||
This command requires `node` and `yarn` to be installed as prerequisites, and provides live reload capability whilst editing.
|
||||
Requires `node` and `yarn` to be installed as prerequisites.
|
||||
|
||||
**Usage**:
|
||||
|
||||
```
|
||||
usage: qmk docs [-h]
|
||||
usage: qmk docs [-h] [-b] [-p PORT]
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-h, --help show this help message and exit
|
||||
-b, --browser Open the docs in the default browser.
|
||||
-p, --port PORT Port number to use.
|
||||
```
|
||||
|
||||
## `qmk generate-docs`
|
||||
|
||||
This command allows you to generate QMK documentation locally. It can be uses for general browsing or improving the docs.
|
||||
Use the `-s`/`--serve` flag to also serve the static site once built. Default port is 4173.
|
||||
This command generates QMK documentation for production.
|
||||
Use the `-s`/`--serve` flag to also serve the static site on port 4173 once built. Note that this does not provide live reloading; use `qmk docs` instead for development purposes.
|
||||
|
||||
This command requires `node` and `yarn` to be installed as prerequisites, and requires the operating system to support symlinks.
|
||||
|
||||
|
|
|
|||
|
|
@ -106,10 +106,10 @@ enum my_keycodes {
|
|||
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
|
||||
|
||||
```
|
||||
qmk docs
|
||||
qmk docs -b
|
||||
```
|
||||
|
||||
and navigating to `http://localhost:5173/`.
|
||||
Which should automatically open your browser; otherwise, navigate to `http://localhost:8936/`.
|
||||
|
||||
## Keyboards
|
||||
|
||||
|
|
|
|||
|
|
@ -16,17 +16,22 @@ You can then call the I2C API by including `i2c_master.h` in your code.
|
|||
|
||||
## I2C Addressing {#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
|
||||
the lower bit (indicating read/write) will be done by the respective functions. Almost all I2C addresses listed
|
||||
on datasheets and the internet will be represented as 7 bits occupying the lower 7 bits and will need to be
|
||||
shifted to the left (more significant) by one bit. This is easy to do via the bitwise shift operator `<< 1`.
|
||||
I2C addresses listed on datasheets and the internet are usually represented as a 7-bit value. The eighth bit (the least significant bit) controls whether the operation is a read or a write.
|
||||
|
||||
You can either do this on each call to the functions below, or once in your definition of the address. For example, if your device has an address of `0x18`:
|
||||
All of the address parameters expected by the driver API should therefore be pushed to the upper 7 bits of the address byte; the driver will take care of setting the read/write bit as appropriate.
|
||||
|
||||
This is easy to do via the bitwise left shift operator. For example, if your device has an address of `0x18` you might create a define for convenience:
|
||||
|
||||
```c
|
||||
#define MY_I2C_ADDRESS (0x18 << 1)
|
||||
```
|
||||
|
||||
Or, you can shift the address ahead of time:
|
||||
|
||||
```c
|
||||
#define MY_I2C_ADDRESS 0x30
|
||||
```
|
||||
|
||||
See https://www.robot-electronics.co.uk/i2c-tutorial for more information about I2C addressing and other technical details.
|
||||
|
||||
## AVR Configuration {#avr-configuration}
|
||||
|
|
@ -39,12 +44,12 @@ The following defines can be used to configure the I2C master driver:
|
|||
|
||||
No further setup is required - just connect the `SDA` and `SCL` pins of your I2C devices to the matching pins on the MCU:
|
||||
|
||||
|MCU |`SCL`|`SDA`|
|
||||
|------------------|-----|-----|
|
||||
|ATmega16/32U4 |`D0` |`D1` |
|
||||
|AT90USB64/128 |`D0` |`D1` |
|
||||
|ATmega32A |`C0` |`C1` |
|
||||
|ATmega328/P |`C5` |`C4` |
|
||||
|MCU |`SCL`|`SDA`|
|
||||
|-------------|-----|-----|
|
||||
|ATmega16/32U4|`D0` |`D1` |
|
||||
|AT90USB64/128|`D0` |`D1` |
|
||||
|ATmega32A |`C0` |`C1` |
|
||||
|ATmega328/P |`C5` |`C4` |
|
||||
|
||||
::: tip
|
||||
The ATmega16/32U2 does not possess I2C functionality, and so cannot use this driver.
|
||||
|
|
@ -52,7 +57,7 @@ The ATmega16/32U2 does not possess I2C functionality, and so cannot use this dri
|
|||
|
||||
## ChibiOS/ARM Configuration {#arm-configuration}
|
||||
|
||||
You'll need to determine which pins can be used for I2C -- a an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.
|
||||
You'll need to determine which pins can be used for I2C -- as an example, STM32 parts generally have multiple I2C peripherals, labeled I2C1, I2C2, I2C3 etc.
|
||||
|
||||
To enable I2C, modify your board's `halconf.h` to enable I2C, then modify your board's `mcuconf.h` to enable the peripheral you've chosen:
|
||||
|
||||
|
|
@ -83,15 +88,19 @@ To enable I2C, modify your board's `halconf.h` to enable I2C, then modify your b
|
|||
|
||||
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
|
||||
|
||||
|`config.h` Overrride |Description |Default|
|
||||
|------------------------|--------------------------------------------------------------|-------|
|
||||
|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`|
|
||||
|`I2C1_SCL_PIN` |The pin definition for SCL |`B6` |
|
||||
|`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` |
|
||||
|`I2C1_SDA_PIN` |The pin definition for SDA |`B7` |
|
||||
|`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` |
|
||||
|`config.h` Override|Description |Default|
|
||||
|-------------------|-------------------------------------------------------------|-------|
|
||||
|`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc.|`I2CD1`|
|
||||
|`I2C1_SCL_PIN` |The pin to use for SCL |`B6` |
|
||||
|`I2C1_SCL_PAL_MODE`|The alternate function mode for SCL |`4` |
|
||||
|`I2C1_SDA_PIN` |The pin to use for SDA |`B7` |
|
||||
|`I2C1_SDA_PAL_MODE`|The alternate function mode for SDA |`4` |
|
||||
|
||||
The following configuration values depend on the specific MCU in use.
|
||||
::: tip
|
||||
Currently only a single I2C peripheral is supported, therefore the `I2C1_*` defines are used for configuration regardless of the selected peripheral.
|
||||
:::
|
||||
|
||||
The following configuration values are dependent on the ChibiOS I2C LLD, which is dictated by the microcontroller.
|
||||
|
||||
### I2Cv1 {#arm-configuration-i2cv1}
|
||||
|
||||
|
|
@ -158,7 +167,7 @@ Send multiple bytes to the selected I2C device.
|
|||
- `const uint8_t* data`
|
||||
A pointer to the data to transmit.
|
||||
- `uint16_t length`
|
||||
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
- `uint16_t timeout`
|
||||
The time in milliseconds to wait for a response from the target device.
|
||||
|
||||
|
|
@ -168,6 +177,29 @@ Send multiple bytes to the selected I2C device.
|
|||
|
||||
---
|
||||
|
||||
### `i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout)` {#api-i2c-transmit-p}
|
||||
|
||||
Send multiple bytes from PROGMEM to the selected I2C device.
|
||||
|
||||
On ARM devices, this function is simply an alias for `i2c_transmit(address, data, length, timeout)`.
|
||||
|
||||
#### Arguments {#api-i2c-transmit-p-arguments}
|
||||
|
||||
- `uint8_t address`
|
||||
The 7-bit I2C address of the device.
|
||||
- `const uint8_t* data`
|
||||
A pointer to the data to transmit.
|
||||
- `uint16_t length`
|
||||
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
- `uint16_t timeout`
|
||||
The time in milliseconds to wait for a response from the target device.
|
||||
|
||||
#### Return Value {#api-i2c-transmit-p-return}
|
||||
|
||||
`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
|
||||
---
|
||||
|
||||
### `i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)` {#api-i2c-receive}
|
||||
|
||||
Receive multiple bytes from the selected I2C device.
|
||||
|
|
@ -177,9 +209,9 @@ Receive multiple bytes from the selected I2C device.
|
|||
- `uint8_t address`
|
||||
The 7-bit I2C address of the device.
|
||||
- `uint8_t* data`
|
||||
A pointer to the buffer to read into.
|
||||
A pointer to a buffer to read into.
|
||||
- `uint16_t length`
|
||||
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
- `uint16_t timeout`
|
||||
The time in milliseconds to wait for a response from the target device.
|
||||
|
||||
|
|
@ -191,7 +223,7 @@ Receive multiple bytes from the selected I2C device.
|
|||
|
||||
### `i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout)` {#api-i2c-write-register}
|
||||
|
||||
Writes to a register with an 8-bit address on the I2C device.
|
||||
Write to a register with an 8-bit address on the I2C device.
|
||||
|
||||
#### Arguments {#api-i2c-write-register-arguments}
|
||||
|
||||
|
|
@ -202,7 +234,7 @@ Writes to a register with an 8-bit address on the I2C device.
|
|||
- `const uint8_t* data`
|
||||
A pointer to the data to transmit.
|
||||
- `uint16_t length`
|
||||
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
- `uint16_t timeout`
|
||||
The time in milliseconds to wait for a response from the target device.
|
||||
|
||||
|
|
@ -214,7 +246,7 @@ Writes to a register with an 8-bit address on the I2C device.
|
|||
|
||||
### `i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout)` {#api-i2c-write-register16}
|
||||
|
||||
Writes to a register with a 16-bit address (big endian) on the I2C device.
|
||||
Write to a register with a 16-bit address (big endian) on the I2C device.
|
||||
|
||||
#### Arguments {#api-i2c-write-register16-arguments}
|
||||
|
||||
|
|
@ -237,7 +269,7 @@ Writes to a register with a 16-bit address (big endian) on the I2C device.
|
|||
|
||||
### `i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` {#api-i2c-read-register}
|
||||
|
||||
Reads from a register with an 8-bit address on the I2C device.
|
||||
Read from a register with an 8-bit address on the I2C device.
|
||||
|
||||
#### Arguments {#api-i2c-read-register-arguments}
|
||||
|
||||
|
|
@ -260,7 +292,7 @@ Reads from a register with an 8-bit address on the I2C device.
|
|||
|
||||
### `i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` {#api-i2c-read-register16}
|
||||
|
||||
Reads from a register with a 16-bit address (big endian) on the I2C device.
|
||||
Read from a register with a 16-bit address (big endian) on the I2C device.
|
||||
|
||||
#### Arguments {#api-i2c-read-register16-arguments}
|
||||
|
||||
|
|
@ -283,16 +315,16 @@ Reads from a register with a 16-bit address (big endian) on the I2C device.
|
|||
|
||||
### `i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout)` {#api-i2c-ping-address}
|
||||
|
||||
Pings the I2C bus for a specific address.
|
||||
Ping the I2C bus for a specific address.
|
||||
|
||||
On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the requested address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsuccessful response to ping attempt).
|
||||
On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the given address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsuccessful response to ping attempt).
|
||||
|
||||
This function is weakly defined, meaning it can be overridden if necessary for your particular use case.
|
||||
|
||||
#### Arguments {#api-i2c-ping-address-arguments}
|
||||
|
||||
- `uint8_t address`
|
||||
The 7-bit I2C address of the device (ie. without the read/write bit - this will be set automatically).
|
||||
The 7-bit I2C address of the device.
|
||||
- `uint16_t timeout`
|
||||
The time in milliseconds to wait for a response from the target device.
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ Start an SPI transaction.
|
|||
#### Arguments {#api-spi-start-arguments}
|
||||
|
||||
- `pin_t slavePin`
|
||||
The QMK pin to assert as the slave select pin, eg. `B4`.
|
||||
The GPIO pin connected to the desired device's `SS` line.
|
||||
- `bool lsbFirst`
|
||||
Determines the endianness of the transmission. If `true`, the least significant bit of each byte is sent first.
|
||||
- `uint8_t mode`
|
||||
|
|
@ -106,7 +106,7 @@ Start an SPI transaction.
|
|||
|
||||
#### Return Value {#api-spi-start-return}
|
||||
|
||||
`false` if the supplied parameters are invalid or the SPI peripheral is already in use, or `true`.
|
||||
`true` if the operation was successful, otherwise `false` if the supplied parameters are invalid or the SPI peripheral is already in use.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -131,7 +131,7 @@ Read a byte from the selected SPI device.
|
|||
|
||||
#### Return Value {#api-spi-read-return}
|
||||
|
||||
`SPI_STATUS_TIMEOUT` if the timeout period elapses, or the byte read from the device.
|
||||
`SPI_STATUS_TIMEOUT` if the timeout period elapses, otherwise the byte read from the device.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -159,7 +159,7 @@ Receive multiple bytes from the selected SPI device.
|
|||
#### Arguments {#api-spi-receive-arguments}
|
||||
|
||||
- `uint8_t *data`
|
||||
A pointer to the buffer to read into.
|
||||
A pointer to a buffer to read into.
|
||||
- `uint16_t length`
|
||||
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
|
||||
|
|
|
|||
|
|
@ -45,17 +45,17 @@ To enable UART, modify your board's `mcuconf.h` to enable the peripheral you've
|
|||
|
||||
Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303.
|
||||
|
||||
| `config.h` override | Description | Default Value |
|
||||
| --------------------------- | --------------------------------------------------------------- | ------------- |
|
||||
| `#define UART_DRIVER` | USART peripheral to use - USART1 -> `SD1`, USART2 -> `SD2` etc. | `SD1` |
|
||||
| `#define UART_TX_PIN` | The pin to use for TX | `A9` |
|
||||
| `#define UART_TX_PAL_MODE` | The alternate function mode for TX | `7` |
|
||||
| `#define UART_RX_PIN` | The pin to use for RX | `A10` |
|
||||
| `#define UART_RX_PAL_MODE` | The alternate function mode for RX | `7` |
|
||||
| `#define UART_CTS_PIN` | The pin to use for CTS | `A11` |
|
||||
| `#define UART_CTS_PAL_MODE` | The alternate function mode for CTS | `7` |
|
||||
| `#define UART_RTS_PIN` | The pin to use for RTS | `A12` |
|
||||
| `#define UART_RTS_PAL_MODE` | The alternate function mode for RTS | `7` |
|
||||
|`config.h` Override|Description |Default|
|
||||
|-------------------|---------------------------------------------------------------|-------|
|
||||
|`UART_DRIVER` |USART peripheral to use - USART1 -> `SD1`, USART2 -> `SD2` etc.|`SD1` |
|
||||
|`UART_TX_PIN` |The pin to use for TX |`A9` |
|
||||
|`UART_TX_PAL_MODE` |The alternate function mode for TX |`7` |
|
||||
|`UART_RX_PIN` |The pin to use for RX |`A10` |
|
||||
|`UART_RX_PAL_MODE` |The alternate function mode for RX |`7` |
|
||||
|`UART_CTS_PIN` |The pin to use for CTS |`A11` |
|
||||
|`UART_CTS_PAL_MODE`|The alternate function mode for CTS |`7` |
|
||||
|`UART_RTS_PIN` |The pin to use for RTS |`A12` |
|
||||
|`UART_RTS_PAL_MODE`|The alternate function mode for RTS |`7` |
|
||||
|
||||
## API {#api}
|
||||
|
||||
|
|
@ -111,7 +111,7 @@ Receive multiple bytes.
|
|||
#### Arguments {#api-uart-receive-arguments}
|
||||
|
||||
- `uint8_t *data`
|
||||
A pointer to the buffer to read into.
|
||||
A pointer to a buffer to read into.
|
||||
- `uint16_t length`
|
||||
The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
|
||||
|
|
@ -123,4 +123,4 @@ Return whether the receive buffer contains data. Call this function to determine
|
|||
|
||||
#### Return Value {#api-uart-available-return}
|
||||
|
||||
`true` if the receive buffer length is non-zero.
|
||||
`true` if there is data available to read.
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ If you own a board from one of the following vendors already, consider asking th
|
|||
| mmd / Smartmmd / i-game.tech | Ambiguity on PRs -- marketing says wireless, PR author said wired-only, then included wireless code anyway. Seemingly intentionally deceptive. |
|
||||
| MyKeyClub | Community-supported JRIS75, vendor was contacted by community members and refused to cooperate. |
|
||||
| owlab | Selling wired based on QMK without sources, just `via.json` provided. Ambiguous as to whether or not wireless firmware is based on QMK, given that their configuration tool looks very similar to VIA. |
|
||||
| pressplayid | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided |
|
||||
| qwertykeys | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided. |
|
||||
| Redragon | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
|
||||
| Royal Kludge | PRs for fake boards in order to attain VIA compatibility identified. Lots of other keyboards with `via.json` but no corresponding sources, attempted upstreaming crippled firmware without wireless. Wireless code for some provided, pending core cleanup for QMK upstreaming. PRs including different manufacturer names as well. |
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ You can create `info.json` files at every level under `qmk_firmware/keyboards/<k
|
|||
* The delay between keydown and keyup for tap events in milliseconds.
|
||||
* Default: `0` (no delay)
|
||||
* `tapping`
|
||||
* `chordal_hold` <Badge type="info">Boolean</Badge>
|
||||
* Default: `false`
|
||||
* `hold_on_other_key_press` <Badge type="info">Boolean</Badge>
|
||||
* Default: `false`
|
||||
* `hold_on_other_key_press_per_key` <Badge type="info">Boolean</Badge>
|
||||
|
|
@ -328,6 +330,8 @@ The ISO enter key is represented by a 1.25u×2uh key. Renderers which utilize in
|
|||
* `h` <Badge type="info">KeyUnit</Badge>
|
||||
* The height of the key, in key units.
|
||||
* Default: `1` (1u)
|
||||
* `hand` <Badge type="info">String</Badge>
|
||||
* The handedness of the key for Chordal Hold, either `"L"` (left hand), `"R"` (right hand), or `"*"` (either or exempted handedness).
|
||||
* `label` <Badge type="info">String</Badge>
|
||||
* What to name the key. This is *not* a key assignment as in the keymap, but should usually correspond to the keycode for the first layer of the default keymap.
|
||||
* Example: `"Escape"`
|
||||
|
|
|
|||
163
docs/tap_hold.md
163
docs/tap_hold.md
|
|
@ -425,6 +425,169 @@ uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) {
|
|||
If `QUICK_TAP_TERM` is set higher than `TAPPING_TERM`, it will default to `TAPPING_TERM`.
|
||||
:::
|
||||
|
||||
## Chordal Hold
|
||||
|
||||
Chordal Hold is intended to be used together with either Permissive Hold or Hold
|
||||
On Other Key Press. Chordal Hold is enabled by adding to your `config.h`:
|
||||
|
||||
```c
|
||||
#define CHORDAL_HOLD
|
||||
```
|
||||
|
||||
Chordal Hold implements, by default, an "opposite hands" rule. Suppose a
|
||||
tap-hold key is pressed and then, before the tapping term, another key is
|
||||
pressed. With Chordal Hold, the tap-hold key is settled as tapped if the two
|
||||
keys are on the same hand.
|
||||
|
||||
Otherwise, if the keys are on opposite hands, Chordal Hold introduces no new
|
||||
behavior. Hold On Other Key Press or Permissive Hold may be used together with
|
||||
Chordal Hold to configure the behavior in the opposite hands case. With Hold On
|
||||
Other Key Press, an opposite hands chord is settled immediately as held. Or with
|
||||
Permissive Hold, an opposite hands chord is settled as held provided the other
|
||||
key is pressed and released (nested press) before releasing the tap-hold key.
|
||||
|
||||
Chordal Hold may be useful to avoid accidental modifier activation with
|
||||
mod-taps, particularly in rolled keypresses when using home row mods.
|
||||
|
||||
Notes:
|
||||
|
||||
* Chordal Hold has no effect after the tapping term.
|
||||
|
||||
* Combos are exempt from the opposite hands rule, since "handedness" is
|
||||
ill-defined in this case. Even so, Chordal Hold's behavior involving combos
|
||||
may be customized through the `get_chordal_hold()` callback.
|
||||
|
||||
An example of a sequence that is affected by “chordal hold”:
|
||||
|
||||
- `SFT_T(KC_A)` Down
|
||||
- `KC_C` Down
|
||||
- `KC_C` Up
|
||||
- `SFT_T(KC_A)` Up
|
||||
|
||||
```
|
||||
TAPPING_TERM
|
||||
+---------------------------|--------+
|
||||
| +----------------------+ | |
|
||||
| | SFT_T(KC_A) | | |
|
||||
| +----------------------+ | |
|
||||
| +--------------+ | |
|
||||
| | KC_C | | |
|
||||
| +--------------+ | |
|
||||
+---------------------------|--------+
|
||||
```
|
||||
|
||||
If the two keys are on the same hand, then this will produce `ac` with
|
||||
`SFT_T(KC_A)` settled as tapped the moment that `KC_C` is pressed.
|
||||
|
||||
If the two keys are on opposite hands and the `HOLD_ON_OTHER_KEY_PRESS` option
|
||||
enabled, this will produce `C` with `SFT_T(KC_A)` settled as held when `KC_C` is
|
||||
pressed.
|
||||
|
||||
Or if the two keys are on opposite hands and the `PERMISSIVE_HOLD` option is
|
||||
enabled, this will produce `C` with `SFT_T(KC_A)` settled as held when that
|
||||
`KC_C` is released.
|
||||
|
||||
### Chordal Hold Handedness
|
||||
|
||||
Determining whether keys are on the same or opposite hands involves defining the
|
||||
"handedness" of each key position. By default, if nothing is specified,
|
||||
handedness is guessed based on keyboard geometry.
|
||||
|
||||
Handedness may be specified with `chordal_hold_layout`. In keymap.c, define
|
||||
`chordal_hold_layout` in the following form:
|
||||
|
||||
```c
|
||||
const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM =
|
||||
LAYOUT(
|
||||
'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R',
|
||||
'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R',
|
||||
'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R',
|
||||
'L', 'L', 'L', 'R', 'R', 'R'
|
||||
);
|
||||
```
|
||||
|
||||
Use the same `LAYOUT` macro as used to define your keymap layers. Each entry is
|
||||
a character indicating the handedness of one key, either `'L'` for left, `'R'`
|
||||
for right, or `'*'` to exempt keys from the "opposite hands rule." A key with
|
||||
`'*'` handedness may settle as held in chords with any other key. This could be
|
||||
used perhaps on thumb keys or other places where you want to allow same-hand
|
||||
chords.
|
||||
|
||||
Keyboard makers may specify handedness in keyboard.json. Under `"layouts"`,
|
||||
specify the handedness of a key by adding a `"hand"` field with a value of
|
||||
either `"L"`, `"R"`, or `"*"`. Note that if `"layouts"` contains multiple
|
||||
layouts, only the first one is read. For example:
|
||||
|
||||
```json
|
||||
{"matrix": [5, 6], "x": 0, "y": 5.5, "w": 1.25, "hand", "*"},
|
||||
```
|
||||
|
||||
Alternatively, handedness may be defined functionally with
|
||||
`chordal_hold_handedness()`. For example, in keymap.c define:
|
||||
|
||||
```c
|
||||
char chordal_hold_handedness(keypos_t key) {
|
||||
if (key.col == 0 || key.col == MATRIX_COLS - 1) {
|
||||
return '*'; // Exempt the outer columns.
|
||||
}
|
||||
// On split keyboards, typically, the first half of the rows are on the
|
||||
// left, and the other half are on the right.
|
||||
return key.row < MATRIX_ROWS / 2 ? 'L' : 'R';
|
||||
}
|
||||
```
|
||||
|
||||
Given the matrix position of a key, the function should return `'L'`, `'R'`, or
|
||||
`'*'`. Adapt the logic in this function according to the keyboard's matrix.
|
||||
|
||||
::: warning
|
||||
Note the matrix may have irregularities around larger keys, around the edges of
|
||||
the board, and around thumb clusters. You may find it helpful to use [this
|
||||
debugging example](faq_debug#which-matrix-position-is-this-keypress) to
|
||||
correspond physical keys to matrix positions.
|
||||
:::
|
||||
|
||||
::: tip If you define both `chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS]` and
|
||||
`chordal_hold_handedness(keypos_t key)` for handedness, the latter takes
|
||||
precedence.
|
||||
:::
|
||||
|
||||
|
||||
### Per-chord customization
|
||||
|
||||
Beyond the per-key configuration possible through handedness, Chordal Hold may
|
||||
be configured at a *per-chord* granularity for detailed tuning. In keymap.c,
|
||||
define `get_chordal_hold()`. Returning `true` allows the chord to be held, while
|
||||
returning `false` settles as tapped.
|
||||
|
||||
For example:
|
||||
|
||||
```c
|
||||
bool get_chordal_hold(uint16_t tap_hold_keycode, keyrecord_t* tap_hold_record,
|
||||
uint16_t other_keycode, keyrecord_t* other_record) {
|
||||
// Exceptionally allow some one-handed chords for hotkeys.
|
||||
switch (tap_hold_keycode) {
|
||||
case LCTL_T(KC_Z):
|
||||
if (other_keycode == KC_C || other_keycode == KC_V) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
||||
case RCTL_T(KC_SLSH):
|
||||
if (other_keycode == KC_N) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// Otherwise defer to the opposite hands rule.
|
||||
return get_chordal_hold_default(tap_hold_record, other_record);
|
||||
}
|
||||
```
|
||||
|
||||
As shown in the last line above, you may use
|
||||
`get_chordal_hold_default(tap_hold_record, other_record)` to get the default tap
|
||||
vs. hold decision according to the opposite hands rule.
|
||||
|
||||
|
||||
## Retro Tapping
|
||||
|
||||
To enable `retro tapping`, add the following to your `config.h`:
|
||||
|
|
|
|||
141
drivers/i2c_master.h
Normal file
141
drivers/i2c_master.h
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* \file
|
||||
*
|
||||
* \defgroup i2c_master I2C Master API
|
||||
*
|
||||
* \brief API to communicate with I2C devices.
|
||||
* \{
|
||||
*/
|
||||
|
||||
typedef int16_t i2c_status_t;
|
||||
|
||||
#define I2C_STATUS_SUCCESS (0)
|
||||
#define I2C_STATUS_ERROR (-1)
|
||||
#define I2C_STATUS_TIMEOUT (-2)
|
||||
|
||||
#define I2C_TIMEOUT_IMMEDIATE (0)
|
||||
#define I2C_TIMEOUT_INFINITE (0xFFFF)
|
||||
|
||||
/**
|
||||
* \brief Initialize the I2C driver. This function must be called only once, before any of the below functions can be called.
|
||||
*
|
||||
* This function is weakly defined, meaning it can be overridden if necessary for your particular use case.
|
||||
*/
|
||||
void i2c_init(void);
|
||||
|
||||
/**
|
||||
* \brief Send multiple bytes to the selected I2C device.
|
||||
*
|
||||
* \param address The 7-bit I2C address of the device.
|
||||
* \param data A pointer to the data to transmit.
|
||||
* \param length The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
|
||||
#if defined(__AVR__) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* \brief Send multiple bytes from PROGMEM to the selected I2C device.
|
||||
*
|
||||
* On ARM devices, this function is simply an alias for i2c_transmit(address, data, length, timeout).
|
||||
*
|
||||
* \param address The 7-bit I2C address of the device.
|
||||
* \param data A pointer to the data to transmit.
|
||||
* \param length The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_transmit_P(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
#else
|
||||
# define i2c_transmit_P(address, data, length, timeout) i2c_transmit(address, data, length, timeout)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Receive multiple bytes from the selected I2C device.
|
||||
*
|
||||
* \param address The 7-bit I2C address of the device.
|
||||
* \param data A pointer to a buffer to read into.
|
||||
* \param length The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
|
||||
/**
|
||||
* \brief Write to a register with an 8-bit address on the I2C device.
|
||||
*
|
||||
* \param devaddr The 7-bit I2C address of the device.
|
||||
* \param regaddr The register address to write to.
|
||||
* \param data A pointer to the data to transmit.
|
||||
* \param length The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_write_register(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
|
||||
/**
|
||||
* \brief Write to a register with a 16-bit address (big endian) on the I2C device.
|
||||
*
|
||||
* \param devaddr The 7-bit I2C address of the device.
|
||||
* \param regaddr The register address to write to.
|
||||
* \param data A pointer to the data to transmit.
|
||||
* \param length The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_write_register16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
|
||||
/**
|
||||
* \brief Read from a register with an 8-bit address on the I2C device.
|
||||
*
|
||||
* \param devaddr The 7-bit I2C address of the device.
|
||||
* \param regaddr The register address to read from.
|
||||
* \param data A pointer to a buffer to read into.
|
||||
* \param length The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_read_register(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
|
||||
/**
|
||||
* \brief Read from a register with a 16-bit address (big endian) on the I2C device.
|
||||
*
|
||||
* \param devaddr The 7-bit I2C address of the device.
|
||||
* \param regaddr The register address to read from.
|
||||
* \param data A pointer to a buffer to read into.
|
||||
* \param length The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_read_register16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout);
|
||||
|
||||
/**
|
||||
* \brief Ping the I2C bus for a specific address.
|
||||
*
|
||||
* On ChibiOS a "best effort" attempt is made by reading a single byte from register 0 at the given address. This should generally work except for I2C devices that do not not respond to a register 0 read request, which will result in a false negative result (unsuccessful response to ping attempt).
|
||||
*
|
||||
* This function is weakly defined, meaning it can be overridden if necessary for your particular use case.
|
||||
*
|
||||
* \param address The 7-bit I2C address of the device.
|
||||
* \param timeout The time in milliseconds to wait for a response from the target device.
|
||||
*
|
||||
* \return `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`.
|
||||
*/
|
||||
i2c_status_t i2c_ping_address(uint8_t address, uint16_t timeout);
|
||||
|
||||
/** \} */
|
||||
116
drivers/spi_master.h
Normal file
116
drivers/spi_master.h
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "gpio.h"
|
||||
|
||||
/**
|
||||
* \file
|
||||
*
|
||||
* \defgroup spi_master SPI Master API
|
||||
*
|
||||
* \brief API to communicate with SPI devices.
|
||||
* \{
|
||||
*/
|
||||
|
||||
// Hardware SS pin is defined in the header so that user code can refer to it
|
||||
#ifdef __AVR__
|
||||
# if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
|
||||
# define SPI_SS_PIN B0
|
||||
# elif defined(__AVR_ATmega32A__)
|
||||
# define SPI_SS_PIN B4
|
||||
# elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
|
||||
# define SPI_SS_PIN B2
|
||||
# endif
|
||||
#endif
|
||||
|
||||
typedef int16_t spi_status_t;
|
||||
|
||||
#define SPI_STATUS_SUCCESS (0)
|
||||
#define SPI_STATUS_ERROR (-1)
|
||||
#define SPI_STATUS_TIMEOUT (-2)
|
||||
|
||||
#define SPI_TIMEOUT_IMMEDIATE (0)
|
||||
#define SPI_TIMEOUT_INFINITE (0xFFFF)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct spi_start_config_t {
|
||||
pin_t slave_pin;
|
||||
bool lsb_first;
|
||||
uint8_t mode;
|
||||
uint16_t divisor;
|
||||
bool cs_active_low;
|
||||
} spi_start_config_t;
|
||||
|
||||
/**
|
||||
* \brief Initialize the SPI driver. This function must be called only once, before any of the below functions can be called.
|
||||
*/
|
||||
void spi_init(void);
|
||||
|
||||
/**
|
||||
* \brief Start an SPI transaction.
|
||||
*
|
||||
* \param slavePin The GPIO pin connected to the desired device's `SS` line.
|
||||
* \param lsbFirst Determines the endianness of the transmission. If `true`, the least significant bit of each byte is sent first.
|
||||
* \param mode The SPI mode to use.
|
||||
* \param divisor The SPI clock divisor.
|
||||
*
|
||||
* \return `true` if the operation was successful, otherwise `false` if the supplied parameters are invalid or the SPI peripheral is already in use.
|
||||
*/
|
||||
bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor);
|
||||
|
||||
bool spi_start_extended(spi_start_config_t *start_config);
|
||||
|
||||
/**
|
||||
* \brief Write a byte to the selected SPI device.
|
||||
*
|
||||
* \param data The byte to write.
|
||||
*
|
||||
* \return `SPI_STATUS_TIMEOUT` if the timeout period elapses, or `SPI_STATUS_SUCCESS`.
|
||||
*/
|
||||
spi_status_t spi_write(uint8_t data);
|
||||
|
||||
/**
|
||||
* \brief Read a byte from the selected SPI device.
|
||||
*
|
||||
* \return `SPI_STATUS_TIMEOUT` if the timeout period elapses, otherwise the byte read from the device.
|
||||
*/
|
||||
spi_status_t spi_read(void);
|
||||
|
||||
/**
|
||||
* \brief Send multiple bytes to the selected SPI device.
|
||||
*
|
||||
* \param data A pointer to the data to write from.
|
||||
* \param length The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
*
|
||||
* \return `SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
|
||||
*/
|
||||
spi_status_t spi_transmit(const uint8_t *data, uint16_t length);
|
||||
|
||||
/**
|
||||
* \brief Receive multiple bytes from the selected SPI device.
|
||||
*
|
||||
* \param data A pointer to a buffer to read into.
|
||||
* \param length The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
*
|
||||
* \return `SPI_STATUS_TIMEOUT` if the timeout period elapses, `SPI_STATUS_ERROR` if some other error occurs, otherwise `SPI_STATUS_SUCCESS`.
|
||||
*/
|
||||
spi_status_t spi_receive(uint8_t *data, uint16_t length);
|
||||
|
||||
/**
|
||||
* \brief End the current SPI transaction. This will deassert the slave select pin and reset the endianness, mode and divisor configured by `spi_start()`.
|
||||
*
|
||||
*/
|
||||
void spi_stop(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/** \} */
|
||||
62
drivers/uart.h
Normal file
62
drivers/uart.h
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* \file
|
||||
*
|
||||
* \defgroup uart UART API
|
||||
*
|
||||
* \brief API to communicate with UART devices.
|
||||
* \{
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Initialize the UART driver. This function must be called only once, before any of the below functions can be called.
|
||||
*
|
||||
* \param baud The baud rate to transmit and receive at. This may depend on the device you are communicating with. Common values are 1200, 2400, 4800, 9600, 19200, 38400, 57600, and 115200.
|
||||
*/
|
||||
void uart_init(uint32_t baud);
|
||||
|
||||
/**
|
||||
* \brief Transmit a single byte.
|
||||
*
|
||||
* \param data The byte to write.
|
||||
*/
|
||||
void uart_write(uint8_t data);
|
||||
|
||||
/**
|
||||
* \brief Receive a single byte.
|
||||
*
|
||||
* \return The byte read from the receive buffer. This function will block if the buffer is empty (ie. no data to read).
|
||||
*/
|
||||
uint8_t uart_read(void);
|
||||
|
||||
/**
|
||||
* \brief Transmit multiple bytes.
|
||||
*
|
||||
* \param data A pointer to the data to write from.
|
||||
* \param length The number of bytes to write. Take care not to overrun the length of `data`.
|
||||
*/
|
||||
void uart_transmit(const uint8_t *data, uint16_t length);
|
||||
|
||||
/**
|
||||
* \brief Receive multiple bytes.
|
||||
*
|
||||
* \param data A pointer to a buffer to read into.
|
||||
* \param length The number of bytes to read. Take care not to overrun the length of `data`.
|
||||
*/
|
||||
void uart_receive(uint8_t *data, uint16_t length);
|
||||
|
||||
/**
|
||||
* \brief Return whether the receive buffer contains data. Call this function to determine if `uart_read()` will return data immediately.
|
||||
*
|
||||
* \return true if there is data available to read.
|
||||
*/
|
||||
bool uart_available(void);
|
||||
|
||||
/** \} */
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = 25keys/aleth42/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = 25keys/zinc/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = aeboards/ext65/rev2
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = biacco42/ergo42/rev1
|
||||
663
keyboards/clap_studio/flame60/keyboard.json
Normal file
663
keyboards/clap_studio/flame60/keyboard.json
Normal file
|
|
@ -0,0 +1,663 @@
|
|||
{
|
||||
"manufacturer": "Clap_Studio",
|
||||
"keyboard_name": "Flame60",
|
||||
"maintainer": "Freather",
|
||||
"bootloader": "atmel-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B0", "B1", "B2", "B3", "B7", "D3", "D2", "D1", "D0", "B5", "B4", "D7", "D6", "D4"],
|
||||
"rows": ["F4", "F1", "D5", "B6", "F5"]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"url": "https://www.instagram.com/clap__studio__/",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x464C",
|
||||
"vid": "0x434C"
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT_60_tsangan_hhkb": "LAYOUT_60_ansi_tsangan_split_bs_rshift"
|
||||
},
|
||||
"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": [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, 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, 12], "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": [
|
||||
{"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, 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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 1], "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, 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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 1], "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, 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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 1], "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_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, 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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 1], "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_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, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 12], "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, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 12], "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, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 12], "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, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 12], "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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
35
keyboards/clap_studio/flame60/keymaps/default/keymap.c
Normal file
35
keyboards/clap_studio/flame60/keymaps/default/keymap.c
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
|
||||
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
|
||||
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
|
||||
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
|
||||
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
|
||||
* │Ctrl│GUI │Alt │ │ Alt│ GUI│ Fn │Ctrl│
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
[0] = 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, KC_RGUI, MO(1), KC_RCTL
|
||||
),
|
||||
|
||||
[1] = 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, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
27
keyboards/clap_studio/flame60/readme.md
Normal file
27
keyboards/clap_studio/flame60/readme.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Flame60
|
||||
|
||||

|
||||
|
||||
The Flame60 consists of a screwless exterior, flex cut pcb and plate to ensure a soft typing experience.
|
||||
|
||||
* Keyboard Maintainer: [CMM.Studio Freather](https://github.com/frankBTHID)
|
||||
* Hardware Supported: Atmega32u4
|
||||
* Hardware Availability: [CLAP.STUDIO (Instagram)](https://www.instagram.com/clap__studio__/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make clap_studio/flame60:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make clap_studio/flame60: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
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = custommk/genesis/rev2
|
||||
99
keyboards/cxt_studio/12e3/keyboard.json
Normal file
99
keyboards/cxt_studio/12e3/keyboard.json
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
{
|
||||
"manufacturer": "cxt_studio",
|
||||
"keyboard_name": "cxt_studio 12E3",
|
||||
"maintainer": "muge",
|
||||
"bootloader": "atmel-dfu",
|
||||
"diode_direction": "ROW2COL",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "F7"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D4", "D7", "B4", "B5"],
|
||||
"rows": ["C7", "C6", "D6", "F4"]
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "F5", "pin_b": "F6"},
|
||||
{"pin_a": "E6", "pin_b": "F0"},
|
||||
{"pin_a": "B3", "pin_b": "B2", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"breathing": 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
|
||||
},
|
||||
"default": {
|
||||
"animation": "solid_reactive_simple"
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"flags": 4, "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"flags": 4, "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"flags": 4, "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"flags": 4, "matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"flags": 4, "matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"flags": 4, "matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"flags": 4, "matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"flags": 4, "matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"flags": 4, "matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"flags": 4, "matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"flags": 4, "matrix": [2, 0], "x": 0, "y": 2}
|
||||
]
|
||||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x12E3",
|
||||
"vid": "0x0215"
|
||||
},
|
||||
"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": [3, 2], "x": 4, "y": 0},
|
||||
{"matrix": [3, 3], "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": [3, 1], "x": 4, "y": 1, "w": 2, "h": 2},
|
||||
|
||||
{"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
40
keyboards/cxt_studio/12e3/keymaps/default/keymap.c
Normal file
40
keyboards/cxt_studio/12e3/keymaps/default/keymap.c
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum my_layers {
|
||||
_BASE,
|
||||
_RGBL,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = LAYOUT(
|
||||
KC_PSCR, KC_CUT, KC_COPY, KC_PSTE, MS_BTN3, RM_TOGG,
|
||||
KC_CALC, KC_UNDO, KC_MPLY, KC_MNXT, KC_MUTE,
|
||||
MO(1), KC_LGUI, KC_DEL, KC_APP
|
||||
),
|
||||
|
||||
[_RGBL] = LAYOUT(
|
||||
RM_NEXT, RM_SATU, KC_INS, KC_DEL, _______, _______,
|
||||
RM_PREV, RM_SATD, KC_PGUP, KC_HOME, _______,
|
||||
_______, QK_BOOT, KC_PGDN, KC_END
|
||||
),
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
// Encoders: Left, Right, Big
|
||||
[_BASE] = {
|
||||
ENCODER_CCW_CW(MS_WHLD, MS_WHLU),
|
||||
ENCODER_CCW_CW(KC_PGDN, KC_PGUP),
|
||||
ENCODER_CCW_CW(KC_VOLD, KC_VOLU)
|
||||
},
|
||||
[_RGBL] = {
|
||||
ENCODER_CCW_CW(RM_HUED, RM_HUEU),
|
||||
ENCODER_CCW_CW(RM_SPDD, RM_SPDU),
|
||||
ENCODER_CCW_CW(RM_VALD, RM_VALU)
|
||||
},
|
||||
};
|
||||
#endif
|
||||
1
keyboards/cxt_studio/12e3/keymaps/default/rules.mk
Normal file
1
keyboards/cxt_studio/12e3/keymaps/default/rules.mk
Normal file
|
|
@ -0,0 +1 @@
|
|||
ENCODER_MAP_ENABLE = yes
|
||||
27
keyboards/cxt_studio/12e3/readme.md
Normal file
27
keyboards/cxt_studio/12e3/readme.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# cxt_studio/12e3
|
||||
|
||||

|
||||
|
||||
3x4 ortho layout, with 3 encoders.
|
||||
|
||||
* Keyboard Maintainer: [muge](https://github.com/muge)
|
||||
* Hardware Supported: CXT Studio 12E3
|
||||
* Hardware Availability: AliExpress, Taobao
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cxt_studio/12e3:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cxt_studio/12e3: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, located under the large encoder, on the right side
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. It is included in the default layout
|
||||
|
|
@ -22,8 +22,11 @@
|
|||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#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
|
||||
|
||||
#define AW20216S_CS_PIN_1 A15
|
||||
#define AW20216S_CS_PIN_2 B15
|
||||
|
|
|
|||
|
|
@ -22,8 +22,11 @@
|
|||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#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
|
||||
|
||||
#define AW20216S_CS_PIN_1 A15
|
||||
#define AW20216S_CS_PIN_2 B15
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = drhigsby/ogurec/left_pm
|
||||
|
|
@ -22,8 +22,11 @@
|
|||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#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
|
||||
|
||||
#define AW20216S_CS_PIN_1 A15
|
||||
#define AW20216S_CS_PIN_2 B15
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* scan matrix
|
||||
*/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <avr/io.h>
|
||||
#include "wait.h"
|
||||
#include "print.h"
|
||||
#include "debug.h"
|
||||
#include "util.h"
|
||||
#include "matrix.h"
|
||||
#include "split_util.h"
|
||||
#include "timer.h"
|
||||
|
||||
// Copy this code to split_common/matrix.c,
|
||||
// and call it instead of the unoptimized col_reader. Scan-rate jumps from 1200->1920
|
||||
// Also remove the sleep_us(30), not necessary for this keyboard.
|
||||
// In usb_descriptor.c, set .PollingIntervalMS = 0x01
|
||||
#define ROW_SHIFTER ((uint8_t)1)
|
||||
inline static matrix_row_t optimized_col_reader(void) {
|
||||
//MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 }
|
||||
return (PINB & (1 << 6) ? 0 : (ROW_SHIFTER << 0)) |
|
||||
(PINB & (1 << 2) ? 0 : (ROW_SHIFTER << 1)) |
|
||||
(PINB & (1 << 3) ? 0 : (ROW_SHIFTER << 2)) |
|
||||
(PINB & (1 << 1) ? 0 : (ROW_SHIFTER << 3)) |
|
||||
(PINF & (1 << 7) ? 0 : (ROW_SHIFTER << 4)) |
|
||||
(PINF & (1 << 6) ? 0 : (ROW_SHIFTER << 5)) |
|
||||
(PINF & (1 << 5) ? 0 : (ROW_SHIFTER << 6)) |
|
||||
(PINF & (1 << 4) ? 0 : (ROW_SHIFTER << 7));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -18,6 +18,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
#pragma once
|
||||
|
||||
#define USE_I2C
|
||||
#define SCL_CLOCK 800000UL
|
||||
|
||||
//#define DEBUG_MATRIX_SCAN_RATE //Use this to determine scan-rate.
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define AUDIO_PIN C6
|
||||
#define STARTUP_SONG SONG(STARTUP_SOUND)
|
||||
#define NO_MUSIC_MODE
|
||||
#define TONE_QWERTY SONG(Q__NOTE(_E4));
|
||||
#define TONE_NUMPAD SONG(Q__NOTE(_D4));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
SRC += matrix.c
|
||||
|
||||
DEFAULT_FOLDER = handwired/xealous/rev1
|
||||
|
|
@ -19,9 +19,12 @@
|
|||
#include "uart.h"
|
||||
#include "print.h"
|
||||
#include "sendchar.h"
|
||||
#include "ws2812.h"
|
||||
#include "sleep_led.h"
|
||||
|
||||
#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812
|
||||
#include "ws2812.h"
|
||||
#endif
|
||||
|
||||
#ifdef UART_DEBUG
|
||||
# undef sendchar
|
||||
static int8_t capture_sendchar(uint8_t c) {
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = input_club/infinity60/led
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = jacky_studio/piggy60/rev1/solder
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = jacky_studio/piggy60/rev1/solder
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = jones/v1
|
||||
|
|
@ -22,8 +22,11 @@
|
|||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#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
|
||||
|
||||
#define AW20216S_CS_PIN_1 A15
|
||||
#define AW20216S_CS_PIN_2 B15
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = kakunpc/angel17/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = kakunpc/suihankey/split/rev1
|
||||
31
keyboards/keychron/c3_pro/ansi/red/config.h
Normal file
31
keyboards/keychron/c3_pro/ansi/red/config.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Indication led */
|
||||
#define LED_MAC_OS_PIN A4
|
||||
#define LED_WIN_OS_PIN A5
|
||||
#define LED_OS_PIN_ON_STATE 1
|
||||
|
||||
/* LED Matrix Driver Configuration */
|
||||
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
|
||||
|
||||
/* Use first 7 channels of LED driver */
|
||||
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_7_CHANNEL
|
||||
|
||||
/* Set LED driver current */
|
||||
#define SNLED27351_CURRENT_TUNE { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50 }
|
||||
242
keyboards/keychron/c3_pro/ansi/red/keyboard.json
Normal file
242
keyboards/keychron/c3_pro/ansi/red/keyboard.json
Normal file
|
|
@ -0,0 +1,242 @@
|
|||
|
||||
{
|
||||
"keyboard_name": "Keychron C3 Pro Red",
|
||||
"features": {
|
||||
"led_matrix": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "A3"
|
||||
},
|
||||
"led_matrix": {
|
||||
"animations": {
|
||||
"band_pinwheel": true,
|
||||
"band_spiral": true,
|
||||
"breathing": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_up_down": true,
|
||||
"dual_beacon": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_splash": true,
|
||||
"wave_left_right": true,
|
||||
"wave_up_down": true
|
||||
},
|
||||
"driver": "snled27351",
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 2], "x": 26, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 3], "x": 39, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 4], "x": 52, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 5], "x": 65, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 6], "x": 84, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 7], "x": 97, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 8], "x": 110, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 9], "x": 123, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 10], "x": 143, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 11], "x": 156, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 12], "x": 169, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 13], "x": 182, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 14], "x": 198, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 15], "x": 211, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 16], "x": 224, "y": 0, "flags": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 16, "flags": 1},
|
||||
{"matrix": [1, 1], "x": 13, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 26, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 39, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 52, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 65, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 78, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 91, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 104, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 9], "x": 117, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 10], "x": 130, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 11], "x": 143, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 12], "x": 156, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 13], "x": 175, "y": 16, "flags": 1},
|
||||
{"matrix": [1, 14], "x": 198, "y": 16, "flags": 1},
|
||||
{"matrix": [1, 15], "x": 211, "y": 16, "flags": 1},
|
||||
{"matrix": [1, 16], "x": 224, "y": 16, "flags": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 3, "y": 28, "flags": 1},
|
||||
{"matrix": [2, 1], "x": 19, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 32, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 45, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 58, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 71, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 84, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 97, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 110, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 9], "x": 123, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 10], "x": 136, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 11], "x": 149, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 12], "x": 162, "y": 28, "flags": 4},
|
||||
{"matrix": [2, 13], "x": 178, "y": 28, "flags": 1},
|
||||
{"matrix": [2, 14], "x": 198, "y": 28, "flags": 1},
|
||||
{"matrix": [2, 15], "x": 211, "y": 28, "flags": 1},
|
||||
{"matrix": [2, 16], "x": 224, "y": 28, "flags": 1},
|
||||
|
||||
{"matrix": [3, 0], "x": 5, "y": 40, "flags": 8},
|
||||
{"matrix": [3, 1], "x": 23, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 36, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 49, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 75, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 88, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 101, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 114, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 126, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 10], "x": 139, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 11], "x": 152, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 13], "x": 173, "y": 40, "flags": 1},
|
||||
|
||||
{"matrix": [4, 0], "x": 8, "y": 52, "flags": 1},
|
||||
{"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": 1},
|
||||
{"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
|
||||
|
||||
{"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 10], "x": 131, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 11], "x": 148, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 12], "x": 164, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 13], "x": 180, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 16], "x": 224, "y": 64, "flags": 1},
|
||||
|
||||
{"x": 0, "y": 0, "flags": 1},
|
||||
{"x": 0, "y": 16, "flags": 1},
|
||||
{"x": 0, "y": 28, "flags": 1},
|
||||
{"x": 0, "y": 40, "flags": 1},
|
||||
{"x": 0, "y": 52, "flags": 1},
|
||||
{"x": 0, "y": 64, "flags": 1},
|
||||
{"x": 224, "y": 0, "flags": 1},
|
||||
{"x": 224, "y": 16, "flags": 1},
|
||||
{"x": 224, "y": 28, "flags": 1},
|
||||
{"x": 224, "y": 40, "flags": 1},
|
||||
{"x": 224, "y": 52, "flags": 1},
|
||||
{"x": 224, "y": 64, "flags": 1}
|
||||
],
|
||||
"sleep": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0", "A1", "A2"],
|
||||
"rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.1",
|
||||
"pid": "0x0430"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_tkl_ansi": {
|
||||
"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.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, 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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
60
keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c
Normal file
60
keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers{
|
||||
MAC_BASE,
|
||||
MAC_FN,
|
||||
WIN_BASE,
|
||||
WIN_FN,
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[MAC_BASE] = LAYOUT_tkl_ansi(
|
||||
KC_ESC, KC_BRID, KC_BRIU, _______, _______, LM_BRID, LM_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_TRNS, 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_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN),KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[MAC_FN] = LAYOUT_tkl_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, _______, _______, BL_STEP,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_TOGG, BL_STEP, LM_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_OSSW, _______, LM_BRID, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[WIN_BASE] = 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_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[WIN_FN] = LAYOUT_tkl_ansi(
|
||||
_______, KC_BRID, KC_BRIU, _______, _______, LM_BRID, LM_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_STEP,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_TOGG, BL_STEP, LM_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_OSSW, _______, LM_BRID, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
};
|
||||
|
||||
132
keyboards/keychron/c3_pro/ansi/red/red.c
Normal file
132
keyboards/keychron/c3_pro/ansi/red/red.c
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
/* Copyright 2023 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef LED_MATRIX_ENABLE
|
||||
// clang-format off
|
||||
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
|
||||
/* Refer to SNLED27351 manual for these locations
|
||||
* driver
|
||||
* | LED address
|
||||
* | | */
|
||||
{0, CB6_CA1},
|
||||
{0, CB6_CA3},
|
||||
{0, CB6_CA4},
|
||||
{0, CB6_CA5},
|
||||
{0, CB6_CA6},
|
||||
{0, CB6_CA7},
|
||||
{0, CB6_CA8},
|
||||
{0, CB6_CA9},
|
||||
{0, CB6_CA10},
|
||||
{0, CB6_CA11},
|
||||
{0, CB6_CA12},
|
||||
{0, CB6_CA13},
|
||||
{0, CB6_CA14},
|
||||
{0, CB6_CA15},
|
||||
{0, CB6_CA16},
|
||||
{0, CB3_CA13},
|
||||
|
||||
{0, CB5_CA1},
|
||||
{0, CB5_CA2},
|
||||
{0, CB5_CA3},
|
||||
{0, CB5_CA4},
|
||||
{0, CB5_CA5},
|
||||
{0, CB5_CA6},
|
||||
{0, CB5_CA7},
|
||||
{0, CB5_CA8},
|
||||
{0, CB5_CA9},
|
||||
{0, CB5_CA10},
|
||||
{0, CB5_CA11},
|
||||
{0, CB5_CA12},
|
||||
{0, CB5_CA13},
|
||||
{0, CB5_CA14},
|
||||
{0, CB5_CA15},
|
||||
{0, CB5_CA16},
|
||||
{0, CB3_CA15},
|
||||
|
||||
{0, CB4_CA1},
|
||||
{0, CB4_CA2},
|
||||
{0, CB4_CA3},
|
||||
{0, CB4_CA4},
|
||||
{0, CB4_CA5},
|
||||
{0, CB4_CA6},
|
||||
{0, CB4_CA7},
|
||||
{0, CB4_CA8},
|
||||
{0, CB4_CA9},
|
||||
{0, CB4_CA10},
|
||||
{0, CB4_CA11},
|
||||
{0, CB4_CA12},
|
||||
{0, CB4_CA13},
|
||||
{0, CB4_CA14},
|
||||
{0, CB4_CA15},
|
||||
{0, CB4_CA16},
|
||||
{0, CB3_CA16},
|
||||
|
||||
{0, CB3_CA1},
|
||||
{0, CB3_CA2},
|
||||
{0, CB3_CA3},
|
||||
{0, CB3_CA4},
|
||||
{0, CB3_CA5},
|
||||
{0, CB3_CA6},
|
||||
{0, CB3_CA7},
|
||||
{0, CB3_CA8},
|
||||
{0, CB3_CA9},
|
||||
{0, CB3_CA10},
|
||||
{0, CB3_CA11},
|
||||
{0, CB3_CA12},
|
||||
{0, CB3_CA14},
|
||||
|
||||
{0, CB2_CA1},
|
||||
{0, CB2_CA3},
|
||||
{0, CB2_CA4},
|
||||
{0, CB2_CA5},
|
||||
{0, CB2_CA6},
|
||||
{0, CB2_CA7},
|
||||
{0, CB2_CA8},
|
||||
{0, CB2_CA9},
|
||||
{0, CB2_CA10},
|
||||
{0, CB2_CA11},
|
||||
{0, CB2_CA12},
|
||||
{0, CB2_CA14},
|
||||
{0, CB2_CA16},
|
||||
|
||||
{0, CB1_CA1},
|
||||
{0, CB1_CA2},
|
||||
{0, CB1_CA3},
|
||||
{0, CB1_CA7},
|
||||
{0, CB1_CA11},
|
||||
{0, CB1_CA12},
|
||||
{0, CB1_CA13},
|
||||
{0, CB1_CA14},
|
||||
{0, CB1_CA15},
|
||||
{0, CB1_CA16},
|
||||
{0, CB2_CA15},
|
||||
|
||||
{0, CB7_CA1},
|
||||
{0, CB7_CA2},
|
||||
{0, CB7_CA3},
|
||||
{0, CB7_CA4},
|
||||
{0, CB7_CA5},
|
||||
{0, CB7_CA6},
|
||||
{0, CB7_CA12},
|
||||
{0, CB7_CA11},
|
||||
{0, CB7_CA10},
|
||||
{0, CB7_CA9},
|
||||
{0, CB7_CA8},
|
||||
{0, CB7_CA7},
|
||||
};
|
||||
#endif
|
||||
29
keyboards/keychron/c3_pro/ansi/rgb/config.h
Normal file
29
keyboards/keychron/c3_pro/ansi/rgb/config.h
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Enable indicator LED*/
|
||||
#define LED_MAC_OS_PIN A6
|
||||
#define LED_WIN_OS_PIN A7
|
||||
#define LED_OS_PIN_ON_STATE 1
|
||||
|
||||
/* RGB Matrix Driver Configuration */
|
||||
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_VDDIO
|
||||
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_GND
|
||||
|
||||
/* Set LED driver current */
|
||||
#define SNLED27351_CURRENT_TUNE { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }
|
||||
249
keyboards/keychron/c3_pro/ansi/rgb/keyboard.json
Normal file
249
keyboards/keychron/c3_pro/ansi/rgb/keyboard.json
Normal file
|
|
@ -0,0 +1,249 @@
|
|||
{
|
||||
"keyboard_name": "Keychron C3 Pro RGB",
|
||||
"features": {
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "A5"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C6", "C7", "C8", "A14", "B7", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4"],
|
||||
"rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"band_spiral_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,
|
||||
"jellybean_raindrops": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "snled27351",
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 2], "x": 20, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 3], "x": 30, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 4], "x": 40, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 5], "x": 50, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 6], "x": 65, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 7], "x": 75, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 8], "x": 85, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 9], "x": 95, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 10], "x": 110, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 11], "x": 120, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 12], "x": 130, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 13], "x": 140, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 14], "x": 155, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 15], "x": 165, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 16], "x": 175, "y": 0, "flags": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 10, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 20, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 30, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 40, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 50, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 60, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 70, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 80, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 9], "x": 90, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 10], "x": 100, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 11], "x": 110, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 12], "x": 120, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 13], "x": 135, "y": 15, "flags": 1},
|
||||
{"matrix": [1, 14], "x": 155, "y": 15, "flags": 1},
|
||||
{"matrix": [1, 15], "x": 165, "y": 15, "flags": 1},
|
||||
{"matrix": [1, 16], "x": 175, "y": 15, "flags": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
|
||||
{"matrix": [2, 1], "x": 16, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 26, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 36, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 47, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 57, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 68, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 78, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 89, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 9], "x": 99, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 10], "x": 109, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 11], "x": 120, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 12], "x": 130, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 13], "x": 143, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 14], "x": 155, "y": 27, "flags": 1},
|
||||
{"matrix": [2, 15], "x": 165, "y": 27, "flags": 1},
|
||||
{"matrix": [2, 16], "x": 175, "y": 27, "flags": 1},
|
||||
|
||||
{"matrix": [3, 0], "x": 4, "y": 40, "flags": 8},
|
||||
{"matrix": [3, 1], "x": 18, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 29, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 39, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 50, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 60, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 70, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 81, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 91, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 102, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 10], "x": 112, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 11], "x": 123, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 13], "x": 143, "y": 40, "flags": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 7, "y": 52, "flags": 1},
|
||||
{"matrix": [4, 2], "x": 23, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 34, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 44, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 55, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 65, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 7], "x": 76, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 8], "x": 86, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 9], "x": 96, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 10], "x": 107, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 11], "x": 117, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 13], "x": 137, "y": 52, "flags": 1},
|
||||
{"matrix": [4, 15], "x": 165, "y": 52, "flags": 1},
|
||||
|
||||
{"matrix": [5, 0], "x": 1, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 2], "x": 27, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 6], "x": 67, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 10], "x": 104, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 11], "x": 116, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 12], "x": 128, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 13], "x": 140, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 14], "x": 155, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 15], "x": 165, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 16], "x": 175, "y": 64, "flags": 1},
|
||||
|
||||
{"x": 0, "y": 0, "flags": 1},
|
||||
{"x": 0, "y": 16, "flags": 1},
|
||||
{"x": 0, "y": 28, "flags": 1},
|
||||
{"x": 0, "y": 40, "flags": 1},
|
||||
{"x": 0, "y": 52, "flags": 1},
|
||||
{"x": 0, "y": 64, "flags": 1},
|
||||
{"x": 224, "y": 0, "flags": 1},
|
||||
{"x": 224, "y": 16, "flags": 1},
|
||||
{"x": 224, "y": 28, "flags": 1},
|
||||
{"x": 224, "y": 40, "flags": 1},
|
||||
{"x": 224, "y": 52, "flags": 1},
|
||||
{"x": 224, "y": 64, "flags": 1}
|
||||
],
|
||||
"sleep": true
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.1",
|
||||
"pid": "0x0433"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_tkl_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "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, 5], "x": 6.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 10, "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.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, 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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
64
keyboards/keychron/c3_pro/ansi/rgb/keymaps/default/keymap.c
Normal file
64
keyboards/keychron/c3_pro/ansi/rgb/keymaps/default/keymap.c
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
|
||||
enum layers{
|
||||
MAC_BASE,
|
||||
MAC_FN,
|
||||
WIN_BASE,
|
||||
WIN_FN,
|
||||
};
|
||||
|
||||
#define KC_TASK LGUI(KC_TAB)
|
||||
#define KC_FLXP LGUI(KC_E)
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[MAC_BASE] = LAYOUT_tkl_ansi(
|
||||
KC_ESC, KC_BRID, KC_BRIU, _______, _______, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_TRNS, RM_NEXT,
|
||||
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_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_APP, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT ),
|
||||
|
||||
[MAC_FN] = LAYOUT_tkl_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, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
RM_TOGG, RM_NEXT, RM_VALU, RM_HUEU, RM_SATU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_OSSW, RM_PREV, RM_VALD, RM_HUED, RM_SATD, RM_SPDD, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
|
||||
|
||||
[WIN_BASE] = 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_SCROLL_LOCK,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_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, MO(WIN_FN),KC_APP, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT ),
|
||||
|
||||
[WIN_FN] = LAYOUT_tkl_ansi(
|
||||
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_NEXT,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
RM_TOGG, RM_NEXT, RM_VALU, RM_HUEU, RM_SATU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_OSSW, RM_PREV, RM_VALD, RM_HUED, RM_SATD, RM_SPDD, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
|
||||
};
|
||||
135
keyboards/keychron/c3_pro/ansi/rgb/rgb.c
Normal file
135
keyboards/keychron/c3_pro/ansi/rgb/rgb.c
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// clang-format off
|
||||
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
|
||||
/* Refer to SNLED27351 manual for these locations
|
||||
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
* | | | B location
|
||||
* | | | | */
|
||||
{0, CB7_CA1, CB9_CA1, CB8_CA1},
|
||||
{0, CB7_CA3, CB9_CA3, CB8_CA3},
|
||||
{0, CB7_CA4, CB9_CA4, CB8_CA4},
|
||||
{0, CB7_CA5, CB9_CA5, CB8_CA5},
|
||||
{0, CB7_CA6, CB9_CA6, CB8_CA6},
|
||||
{0, CB7_CA7, CB9_CA7, CB8_CA7},
|
||||
{0, CB7_CA8, CB9_CA8, CB8_CA8},
|
||||
{0, CB7_CA9, CB9_CA9, CB8_CA9},
|
||||
{0, CB7_CA10, CB9_CA10, CB8_CA10},
|
||||
{0, CB7_CA11, CB9_CA11, CB8_CA11},
|
||||
{0, CB7_CA12, CB9_CA12, CB8_CA12},
|
||||
{0, CB7_CA13, CB9_CA13, CB8_CA13},
|
||||
{0, CB7_CA14, CB9_CA14, CB8_CA14},
|
||||
{0, CB7_CA15, CB9_CA15, CB8_CA15},
|
||||
{0, CB7_CA16, CB9_CA16, CB8_CA16},
|
||||
{1, CB7_CA16, CB9_CA16, CB8_CA16},
|
||||
|
||||
{0, CB4_CA1, CB6_CA1, CB5_CA1},
|
||||
{0, CB4_CA2, CB6_CA2, CB5_CA2},
|
||||
{0, CB4_CA3, CB6_CA3, CB5_CA3},
|
||||
{0, CB4_CA4, CB6_CA4, CB5_CA4},
|
||||
{0, CB4_CA5, CB6_CA5, CB5_CA5},
|
||||
{0, CB4_CA6, CB6_CA6, CB5_CA6},
|
||||
{0, CB4_CA7, CB6_CA7, CB5_CA7},
|
||||
{0, CB4_CA8, CB6_CA8, CB5_CA8},
|
||||
{0, CB4_CA9, CB6_CA9, CB5_CA9},
|
||||
{0, CB4_CA10, CB6_CA10, CB5_CA10},
|
||||
{0, CB4_CA11, CB6_CA11, CB5_CA11},
|
||||
{0, CB4_CA12, CB6_CA12, CB5_CA12},
|
||||
{0, CB4_CA13, CB6_CA13, CB5_CA13},
|
||||
{0, CB4_CA14, CB6_CA14, CB5_CA14},
|
||||
{0, CB4_CA15, CB6_CA15, CB5_CA15},
|
||||
{0, CB4_CA16, CB6_CA16, CB5_CA16},
|
||||
{1, CB7_CA13, CB9_CA13, CB8_CA13},
|
||||
|
||||
{0, CB1_CA1, CB3_CA1, CB2_CA1},
|
||||
{0, CB1_CA2, CB3_CA2, CB2_CA2},
|
||||
{0, CB1_CA3, CB3_CA3, CB2_CA3},
|
||||
{0, CB1_CA4, CB3_CA4, CB2_CA4},
|
||||
{0, CB1_CA5, CB3_CA5, CB2_CA5},
|
||||
{0, CB1_CA6, CB3_CA6, CB2_CA6},
|
||||
{0, CB1_CA7, CB3_CA7, CB2_CA7},
|
||||
{0, CB1_CA8, CB3_CA8, CB2_CA8},
|
||||
{0, CB1_CA9, CB3_CA9, CB2_CA9},
|
||||
{0, CB1_CA10, CB3_CA10, CB2_CA10},
|
||||
{0, CB1_CA11, CB3_CA11, CB2_CA11},
|
||||
{0, CB1_CA12, CB3_CA12, CB2_CA12},
|
||||
{0, CB1_CA13, CB3_CA13, CB2_CA13},
|
||||
{0, CB1_CA14, CB3_CA14, CB2_CA14},
|
||||
{0, CB1_CA15, CB3_CA15, CB2_CA15},
|
||||
{0, CB1_CA16, CB3_CA16, CB2_CA16},
|
||||
{1, CB7_CA15, CB9_CA15, CB8_CA15},
|
||||
|
||||
{1, CB7_CA1, CB9_CA1, CB8_CA1},
|
||||
{1, CB7_CA2, CB9_CA2, CB8_CA2},
|
||||
{1, CB7_CA3, CB9_CA3, CB8_CA3},
|
||||
{1, CB7_CA4, CB9_CA4, CB8_CA4},
|
||||
{1, CB7_CA5, CB9_CA5, CB8_CA5},
|
||||
{1, CB7_CA6, CB9_CA6, CB8_CA6},
|
||||
{1, CB7_CA7, CB9_CA7, CB8_CA7},
|
||||
{1, CB7_CA8, CB9_CA8, CB8_CA8},
|
||||
{1, CB7_CA9, CB9_CA9, CB8_CA9},
|
||||
{1, CB7_CA10, CB9_CA10, CB8_CA10},
|
||||
{1, CB7_CA11, CB9_CA11, CB8_CA11},
|
||||
{1, CB7_CA12, CB9_CA12, CB8_CA12},
|
||||
{1, CB7_CA14, CB9_CA14, CB8_CA14},
|
||||
|
||||
{1, CB1_CA1, CB3_CA1, CB2_CA1},
|
||||
{1, CB1_CA3, CB3_CA3, CB2_CA3},
|
||||
{1, CB1_CA4, CB3_CA4, CB2_CA4},
|
||||
{1, CB1_CA5, CB3_CA5, CB2_CA5},
|
||||
{1, CB1_CA6, CB3_CA6, CB2_CA6},
|
||||
{1, CB1_CA7, CB3_CA7, CB2_CA7},
|
||||
{1, CB1_CA8, CB3_CA8, CB2_CA8},
|
||||
{1, CB1_CA9, CB3_CA9, CB2_CA9},
|
||||
{1, CB1_CA10, CB3_CA10, CB2_CA10},
|
||||
{1, CB1_CA11, CB3_CA11, CB2_CA11},
|
||||
{1, CB1_CA12, CB3_CA12, CB2_CA12},
|
||||
{1, CB1_CA14, CB3_CA14, CB2_CA14},
|
||||
{1, CB1_CA16, CB3_CA16, CB2_CA16},
|
||||
|
||||
{1, CB4_CA1, CB6_CA1, CB5_CA1},
|
||||
{1, CB4_CA2, CB6_CA2, CB5_CA2},
|
||||
{1, CB4_CA3, CB6_CA3, CB5_CA3},
|
||||
{1, CB4_CA7, CB6_CA7, CB5_CA7},
|
||||
{1, CB4_CA11, CB6_CA11, CB5_CA11},
|
||||
{1, CB4_CA12, CB6_CA12, CB5_CA12},
|
||||
{1, CB4_CA13, CB6_CA13, CB5_CA13},
|
||||
{1, CB4_CA14, CB6_CA14, CB5_CA14},
|
||||
{1, CB4_CA15, CB6_CA15, CB5_CA15},
|
||||
{1, CB4_CA16, CB6_CA16, CB5_CA16},
|
||||
{1, CB1_CA15, CB3_CA15, CB2_CA15},
|
||||
|
||||
{0, CB10_CA1, CB12_CA1, CB11_CA1},
|
||||
{0, CB10_CA2, CB12_CA2, CB11_CA2},
|
||||
{0, CB10_CA3, CB12_CA3, CB11_CA3},
|
||||
{0, CB10_CA4, CB12_CA4, CB11_CA4},
|
||||
{0, CB10_CA5, CB12_CA5, CB11_CA5},
|
||||
{0, CB10_CA6, CB12_CA6, CB11_CA6},
|
||||
{0, CB10_CA7, CB12_CA7, CB11_CA7},
|
||||
{0, CB10_CA8, CB12_CA8, CB11_CA8},
|
||||
{0, CB10_CA9, CB12_CA9, CB11_CA9},
|
||||
{0, CB10_CA10, CB12_CA10, CB11_CA10},
|
||||
{0, CB10_CA11, CB12_CA11, CB11_CA11},
|
||||
{0, CB10_CA12, CB12_CA12, CB11_CA12},
|
||||
};
|
||||
#endif
|
||||
112
keyboards/keychron/c3_pro/c3_pro.c
Normal file
112
keyboards/keychron/c3_pro/c3_pro.c
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "c3_pro.h"
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_user(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
switch (keycode) {
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
case QK_RGB_MATRIX_TOGGLE:
|
||||
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;
|
||||
#endif
|
||||
#ifdef LED_MATRIX_ENABLE
|
||||
case QK_LED_MATRIX_TOGGLE:
|
||||
if (record->event.pressed) {
|
||||
switch (led_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
led_matrix_set_flags(LED_FLAG_NONE);
|
||||
led_matrix_set_value_all(0);
|
||||
} break;
|
||||
default: {
|
||||
led_matrix_set_flags(LED_FLAG_ALL);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
if (!led_matrix_is_enabled()) {
|
||||
led_matrix_set_flags(LED_FLAG_ALL);
|
||||
led_matrix_enable();
|
||||
}
|
||||
return false;
|
||||
#endif
|
||||
case KC_OSSW:
|
||||
if (record->event.pressed) {
|
||||
default_layer_xor(1U << 0);
|
||||
default_layer_xor(1U << 2);
|
||||
eeconfig_update_default_layer(default_layer_state);
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX)
|
||||
|
||||
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;
|
||||
}
|
||||
// RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue);
|
||||
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 255, 255, 255);
|
||||
} else {
|
||||
if (!rgb_matrix_get_flags()) {
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // RGB_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX
|
||||
|
||||
#if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX)
|
||||
|
||||
bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
|
||||
if (!led_matrix_indicators_advanced_user(led_min, led_max)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
|
||||
|
||||
} else {
|
||||
if (!led_matrix_get_flags()) {
|
||||
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // LED_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX
|
||||
25
keyboards/keychron/c3_pro/c3_pro.h
Normal file
25
keyboards/keychron/c3_pro/c3_pro.h
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
enum my_keycodes {
|
||||
KC_OS_SWITCH = QK_KB_11,
|
||||
};
|
||||
|
||||
#define KC_OSSW KC_OS_SWITCH
|
||||
24
keyboards/keychron/c3_pro/config.h
Normal file
24
keyboards/keychron/c3_pro/config.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* I2C driver Configuration */
|
||||
#define I2C1_SCL_PIN B8
|
||||
#define I2C1_SDA_PIN B9
|
||||
#define I2C1_CLOCK_SPEED 400000
|
||||
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
|
||||
|
||||
21
keyboards/keychron/c3_pro/halconf.h
Normal file
21
keyboards/keychron/c3_pro/halconf.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
26
keyboards/keychron/c3_pro/info.json
Normal file
26
keyboards/keychron/c3_pro/info.json
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"manufacturer": "Keychron",
|
||||
"maintainer": "Joe",
|
||||
"bootloader": "stm32-dfu",
|
||||
"community_layouts": ["tkl_ansi"],
|
||||
"diode_direction": "ROW2COL",
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 4096
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"processor": "STM32F401",
|
||||
"url": "https://github.com/Keychron",
|
||||
"usb": {
|
||||
"device_version": "1.0.1",
|
||||
"vid": "0x3434"
|
||||
}
|
||||
}
|
||||
28
keyboards/keychron/c3_pro/mcuconf.h
Normal file
28
keyboards/keychron/c3_pro/mcuconf.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/* Copyright 2024 @ 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_HSECLK
|
||||
#define STM32_HSECLK 16000000U
|
||||
|
||||
#undef STM32_PLLM_VALUE
|
||||
#define STM32_PLLM_VALUE 8
|
||||
|
||||
#undef STM32_I2C_USE_I2C1
|
||||
#define STM32_I2C_USE_I2C1 TRUE
|
||||
28
keyboards/keychron/c3_pro/readme.md
Normal file
28
keyboards/keychron/c3_pro/readme.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# Keychron C3 Pro
|
||||
|
||||

|
||||
|
||||
A customizable 87% keyboard.
|
||||
|
||||
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
|
||||
* Hardware Supported: Keychron C3 Pro
|
||||
* Hardware Availability: [Keychron](https://www.keychron.com/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keychron/c3_pro/ansi/red:default
|
||||
make keychron/c3_pro/ansi/rgb:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make keychron/c3_pro/ansi/red:default:flash
|
||||
make keychron/c3_pro/ansi/rgb:default:flash
|
||||
|
||||
## bootloader
|
||||
|
||||
Enter the bootloader in two ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
|
||||
* **Physical reset button**: Briefly press the RESET button under the spacebar.
|
||||
|
||||
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).
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = keyhive/navi10/rev3
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = keyhive/uno/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = maple_computing/christmas_tree/v2017
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = marksard/treadstone32/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = mechlovin/hannah65/rev1/haus
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = mechlovin/hannah65/rev1/haus
|
||||
|
|
@ -22,8 +22,11 @@
|
|||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#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
|
||||
|
||||
#define AW20216S_CS_PIN_1 A15
|
||||
#define AW20216S_EN_PIN C13
|
||||
|
|
|
|||
|
|
@ -22,8 +22,11 @@
|
|||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#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
|
||||
|
||||
#define AW20216S_CS_PIN_1 A15
|
||||
#define AW20216S_CS_PIN_2 B15
|
||||
|
|
|
|||
|
|
@ -22,8 +22,11 @@
|
|||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#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
|
||||
|
||||
#define AW20216S_CS_PIN_1 A15
|
||||
#define AW20216S_CS_PIN_2 B15
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = rate/pistachio/rev2
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = recompile_keys/choco60/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = recompile_keys/nomu30/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = salicylic_acid3/7skb/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = salicylic_acid3/getta25/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = salicylic_acid3/jisplit89/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = salicylic_acid3/naked48/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = salicylic_acid3/naked60/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = salicylic_acid3/naked64/rev1
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = salicylic_acid3/setta21/rev1
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C0", "C1", "C2", "C3", "A6", "B1", "B10", "B11", "B12", "B13", "B14", "B15", "C6", "C7"],
|
||||
"cols": ["C0", "C1", "C2", "C3", "A6", "B1", "B10", "B11", "B12", "B13", "B14", "C6", "C7", "C8", "C9", "A8"],
|
||||
"rows": ["A0", "A1", "A2", "A3", "C13"]
|
||||
},
|
||||
"processor": "WB32FQ95",
|
||||
|
|
@ -77,11 +77,15 @@
|
|||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [4, 6], "x": 103, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 9], "x": 154, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 10], "x": 172, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 11], "x": 190, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 12], "x": 207, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 13], "x": 224, "y": 64, "flags": 4},
|
||||
{"matrix": [3, 13], "x": 224, "y": 48, "flags": 4},
|
||||
{"matrix": [4, 15], "x": 224, "y": 64, "flags": 4},
|
||||
{"matrix": [3, 15], "x": 224, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 14], "x": 224, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 13], "x": 210, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 12], "x": 200, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 11], "x": 190, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 10], "x": 172, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 155, "y": 48, "flags": 4},
|
||||
|
|
@ -93,6 +97,7 @@
|
|||
{"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 34, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 17, "y": 48, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 52, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 34, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 17, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 0, "y": 64, "flags": 4},
|
||||
|
|
@ -109,8 +114,10 @@
|
|||
{"matrix": [2, 9], "x": 155, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 11], "x": 190, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 13], "x": 207, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 12], "x": 224, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 12], "x": 200, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 13], "x": 224, "y": 32, "flags": 4},
|
||||
{"matrix": [1, 14], "x": 224, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 13], "x": 224, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 12], "x": 207, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 11], "x": 190, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 10], "x": 172, "y": 16, "flags": 4},
|
||||
|
|
@ -137,7 +144,9 @@
|
|||
{"matrix": [0, 10], "x": 172, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 11], "x": 190, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 12], "x": 207, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 13], "x": 224, "y": 0, "flags": 4}
|
||||
{"matrix": [0, 13], "x": 210, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 14], "x": 210, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 15], "x": 224, "y": 0, "flags": 4}
|
||||
],
|
||||
"max_brightness": 110,
|
||||
"sleep": true,
|
||||
|
|
@ -145,13 +154,13 @@
|
|||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"device_version": "1.1.0",
|
||||
"pid": "0x1020",
|
||||
"suspend_wakeup_delay": 1000,
|
||||
"vid": "0x6332"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "A8"
|
||||
"pin": "B15"
|
||||
},
|
||||
"community_layouts": ["60_ansi", "60_iso"],
|
||||
"layouts": {
|
||||
|
|
@ -170,7 +179,9 @@
|
|||
{"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, 13], "x": 13, "y": 0, "w": 0.5},
|
||||
{"matrix": [0, 14], "x": 13.5, "y": 0},
|
||||
{"matrix": [0, 15], "x": 14.5, "y": 0, "w": 0.5},
|
||||
{"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},
|
||||
|
|
@ -184,7 +195,8 @@
|
|||
{"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": [1, 13], "x": 13.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 14.5, "y": 1, "w": 0.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},
|
||||
|
|
@ -197,28 +209,34 @@
|
|||
{"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, 13], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 0.75},
|
||||
{"matrix": [3, 1], "x": 0.75, "y": 3, "w": 0.5},
|
||||
{"matrix": [3, 2], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 12.25, "y": 3},
|
||||
{"matrix": [3, 14], "x": 13.25, "y": 3, "w": 0.75},
|
||||
{"matrix": [3, 15], "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, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [4, 6], "x": 4.75, "y": 4, "w": 4.25},
|
||||
{"matrix": [4, 9], "x": 9, "y": 4},
|
||||
{"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": [4, 15], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi": {
|
||||
|
|
@ -236,7 +254,7 @@
|
|||
{"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": 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},
|
||||
|
|
@ -250,7 +268,7 @@
|
|||
{"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": [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},
|
||||
|
|
@ -264,18 +282,18 @@
|
|||
{"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, 13], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [3, 1], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 3], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 14], "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},
|
||||
|
|
@ -283,7 +301,7 @@
|
|||
{"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": [4, 15], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso": {
|
||||
|
|
@ -301,7 +319,7 @@
|
|||
{"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": 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},
|
||||
|
|
@ -328,20 +346,20 @@
|
|||
{"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": [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, 13], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [3, 2], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 14], "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},
|
||||
|
|
@ -349,7 +367,7 @@
|
|||
{"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": [4, 15], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,18 +4,18 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
[0] = LAYOUT_60_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_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_TAB, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL
|
||||
),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
[1] = LAYOUT_60_iso(
|
||||
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_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, RM_VALU,
|
||||
_______, _______, _______, _______, _______, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR,
|
||||
_______, _______, _______, _______, _______, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, RM_VALU, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, RM_VALD, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, RM_HUEU, RM_NEXT
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = spaceholdings/nebula68b/solder
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = splitkb/kyria/rev3
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = takashiski/namecard2x4/rev2
|
||||
|
|
@ -1 +0,0 @@
|
|||
DEFAULT_FOLDER = tominabox1/le_chiffre/rev1
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
Copyright 2025 Tyson.Keebs
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -18,15 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
#pragma once
|
||||
|
||||
#define USE_I2C
|
||||
#define SCL_CLOCK 800000UL
|
||||
|
||||
//#define DEBUG_MATRIX_SCAN_RATE //Use this to determine scan-rate.
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
#define AUDIO_PIN C6
|
||||
#define STARTUP_SONG SONG(STARTUP_SOUND)
|
||||
#define NO_MUSIC_MODE
|
||||
#define TONE_QWERTY SONG(Q__NOTE(_E4));
|
||||
#define TONE_NUMPAD SONG(Q__NOTE(_D4));
|
||||
#endif
|
||||
#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
|
||||
21
keyboards/trnthsn/e8ghtyneo/halconf.h
Normal file
21
keyboards/trnthsn/e8ghtyneo/halconf.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/* Copyright 2025 Tyson.Keebs
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
992
keyboards/trnthsn/e8ghtyneo/info.json
Normal file
992
keyboards/trnthsn/e8ghtyneo/info.json
Normal file
|
|
@ -0,0 +1,992 @@
|
|||
{
|
||||
"manufacturer": "Tyson.Keebs",
|
||||
"keyboard_name": "E8ghtyNeo",
|
||||
"maintainer": "trnthsn",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A9", "A8", "B14", "B12", "B11", "B10", "B0", "A7", "A6", "A4", "A3", "A2", "A1", "A0", "C13", "B9", "B7"],
|
||||
"rows": ["B8", "A10", "B1", "A5", "C15", "C14"]
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"default": {
|
||||
"animation": "rainbow_mood"
|
||||
},
|
||||
"led_count": 4,
|
||||
"sleep": true
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "B15",
|
||||
"driver": "spi"
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "B3"
|
||||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"vid": "0x5453",
|
||||
"pid": "0x3845",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"community_layouts": [
|
||||
"tkl_ansi_tsangan",
|
||||
"tkl_ansi_tsangan_split_bs_rshift",
|
||||
"tkl_iso_tsangan",
|
||||
"tkl_iso_tsangan_split_bs_rshift"
|
||||
],
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [0, 13], "x": 13, "y": 1.25},
|
||||
{"label": "Delete", "matrix": [1, 13], "x": 14, "y": 1.25},
|
||||
|
||||
{"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
|
||||
|
||||
{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
|
||||
{"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.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": 1.75},
|
||||
{"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 5.25},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_ansi_tsangan": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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, 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, 13], "x": 12.25, "y": 4.25, "w": 2.75},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 5.25},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_ansi_tsangan_split_bs_rshift": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [0, 13], "x": 13, "y": 1.25},
|
||||
{"label": "Delete", "matrix": [1, 13], "x": 14, "y": 1.25},
|
||||
|
||||
{"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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, 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": 1.75},
|
||||
{"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 5.25},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_ansi_wkl": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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, 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, 13], "x": 12.25, "y": 4.25, "w": 2.75},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_ansi_wkl_split_bs_rshift": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [0, 13], "x": 13, "y": 1.25},
|
||||
{"label": "Delete", "matrix": [1, 13], "x": 14, "y": 1.25},
|
||||
|
||||
{"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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, 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": 1.75},
|
||||
{"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_iso_tsangan": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
|
||||
{"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.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, 13], "x": 12.25, "y": 4.25, "w": 2.75},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "Fn", "matrix": [5, 12], "x": 12.5, "y": 5.25},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_iso_tsangan_split_bs_rshift": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [0, 13], "x": 13, "y": 1.25},
|
||||
{"label": "Delete", "matrix": [1, 13], "x": 14, "y": 1.25},
|
||||
|
||||
{"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
|
||||
{"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.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": 1.75},
|
||||
{"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "Fn", "matrix": [5, 12], "x": 12.5, "y": 5.25},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_iso_wkl": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
|
||||
{"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.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, 13], "x": 12.25, "y": 4.25, "w": 2.75},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_iso_wkl_split_bs_rshift": {
|
||||
"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": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "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": "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": [0, 13], "x": 13, "y": 1.25},
|
||||
{"label": "Delete", "matrix": [1, 13], "x": 14, "y": 1.25},
|
||||
|
||||
{"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25},
|
||||
{"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25},
|
||||
{"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25},
|
||||
{"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25},
|
||||
{"label": "Page Down", "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": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
|
||||
{"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.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": 1.75},
|
||||
{"label": "Shift", "matrix": [4, 13], "x": 14, "y": 4.25},
|
||||
|
||||
{"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Space", "matrix": [5, 7], "x": 4, "y": 5.25, "w": 7},
|
||||
{"label": "Alt", "matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
39
keyboards/trnthsn/e8ghtyneo/keymaps/default/keymap.c
Normal file
39
keyboards/trnthsn/e8ghtyneo/keymaps/default/keymap.c
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright 2025 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│ │Prs│Srk│Ps │
|
||||
// └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
|
||||
// ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐
|
||||
// │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│ │Ins│Hm │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 │ ; │ ' │ # │Ent │
|
||||
// ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───┐
|
||||
// │Sft │Sft│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Fn │ │ ↑ │
|
||||
// ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
|
||||
// │Ctrl │Win│Alt │ │Alt │Win│Ctrl │ │ ← │ ↓ │ → │
|
||||
// └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
|
||||
|
||||
[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_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_BSLS, KC_ENT,
|
||||
KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, UG_TOGG, _______, _______, _______, _______, UG_NEXT, UG_VALD, UG_VALU, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_VOLD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
22
keyboards/trnthsn/e8ghtyneo/mcuconf.h
Normal file
22
keyboards/trnthsn/e8ghtyneo/mcuconf.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/* Copyright 2025 Tyson.Keebs
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_SPI_USE_SPI2
|
||||
#define STM32_SPI_USE_SPI2 TRUE
|
||||
27
keyboards/trnthsn/e8ghtyneo/readme.md
Normal file
27
keyboards/trnthsn/e8ghtyneo/readme.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# E8ghtyNeo
|
||||
|
||||

|
||||
|
||||
A TKL keyboard PCB compatible with Neo80. Supports Neo80 keyboard like an out-of-the-box PCB without any modification.
|
||||
|
||||
* Keyboard Maintainer: [Trnthsn](https://github.com/trnthsn)
|
||||
* Hardware Supported: STM32, E8ghtyNeo, Neo80
|
||||
* Hardware Availability: [ThanhSon.Mech](https://www.facebook.com/ThanhSon.mech)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make trnthsn/e8ghtyneo/stm32f072:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make trnthsn/e8ghtyneo/stm32f072: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
|
||||
4
keyboards/trnthsn/e8ghtyneo/stm32f072/keyboard.json
Normal file
4
keyboards/trnthsn/e8ghtyneo/stm32f072/keyboard.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu",
|
||||
}
|
||||
4
keyboards/trnthsn/e8ghtyneo/stm32f103/keyboard.json
Normal file
4
keyboards/trnthsn/e8ghtyneo/stm32f103/keyboard.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"processor": "STM32F103",
|
||||
"bootloader": "uf2boot",
|
||||
}
|
||||
32
keyboards/trojan_pinata/model_b/readme.md
Normal file
32
keyboards/trojan_pinata/model_b/readme.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Model-B
|
||||
|
||||
A 75% keyboard based on the RP2040.
|
||||
|
||||
* Keyboard Maintainer: [Brian Hill](https://github.com/TrojanPinata)
|
||||
* Hardware Supported: [GitHub](https://github.com/TrojanPinata/Model-B)
|
||||
|
||||
## Revisions
|
||||
|
||||
At the current moment there is only one variant of the Model-B, the rev-0 (aka the prototype board). Any others are clones and may not have the exact firmware requirements.
|
||||
|
||||
## Building and Flashing
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make trojan_pinata/model-b/rev0:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make trojan_pinata/model-b/rev0: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**: 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.
|
||||
14
keyboards/trojan_pinata/model_b/rev0/config.h
Normal file
14
keyboards/trojan_pinata/model_b/rev0/config.h
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2022 Stefan Kerkmann
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
|
||||
|
||||
// settings for the oled keyboard demo with Adafruit 0.91" OLED display on the Stemma QT port
|
||||
#define I2C_DRIVER I2CD0
|
||||
#define I2C1_SDA_PIN GP0
|
||||
#define I2C1_SCL_PIN GP1
|
||||
|
||||
#define OLED_TIMEOUT 3000000 // 5 minutes before oled turns off
|
||||
122
keyboards/trojan_pinata/model_b/rev0/keyboard.json
Normal file
122
keyboards/trojan_pinata/model_b/rev0/keyboard.json
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
{
|
||||
"manufacturer": "Trojan_Pinata",
|
||||
"keyboard_name": "Model-B",
|
||||
"maintainer": "Trojan_Pinata",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP27", "pin_b": "GP26"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"oled": true,
|
||||
"encoder": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22"],
|
||||
"rows": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"url": "https://github.com/TrojanPinata/Model-B",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0xA500",
|
||||
"vid": "0xE739"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 2], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 4], "x": 3.25, "y": 0},
|
||||
{"matrix": [0, 5], "x": 4.25, "y": 0},
|
||||
{"matrix": [0, 6], "x": 5.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 6.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 10], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 11], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 12], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 13], "x": 12.75, "y": 0},
|
||||
{"matrix": [0, 14], "x": 15.75, "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], "x": 13, "y": 1.5, "w": 2},
|
||||
{"matrix": [1, 14], "x": 15.25, "y": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.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], "x": 13.5, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [2, 14], "x": 15.25, "y": 2.5},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
|
||||
{"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], "x": 14, "y": 0},
|
||||
{"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25},
|
||||
{"matrix": [3, 14], "x": 16.25, "y": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25},
|
||||
{"matrix": [4, 1], "x": 2.25, "y": 4.5},
|
||||
{"matrix": [4, 2], "x": 3.25, "y": 4.5},
|
||||
{"matrix": [4, 3], "x": 4.25, "y": 4.5},
|
||||
{"matrix": [4, 4], "x": 5.25, "y": 4.5},
|
||||
{"matrix": [4, 5], "x": 6.25, "y": 4.5},
|
||||
{"matrix": [4, 6], "x": 7.25, "y": 4.5},
|
||||
{"matrix": [4, 7], "x": 8.25, "y": 4.5},
|
||||
{"matrix": [4, 8], "x": 9.25, "y": 4.5},
|
||||
{"matrix": [4, 9], "x": 10.25, "y": 4.5},
|
||||
{"matrix": [4, 10], "x": 11.25, "y": 4.5},
|
||||
{"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75},
|
||||
{"matrix": [4, 13], "x": 14.3, "y": 4.6},
|
||||
{"matrix": [4, 14], "x": 16.25, "y": 2.5},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25},
|
||||
{"matrix": [5, 9], "x": 10, "y": 5.5},
|
||||
{"matrix": [5, 10], "x": 11, "y": 5.5},
|
||||
{"matrix": [5, 11], "x": 12, "y": 5.5},
|
||||
{"matrix": [5, 12], "x": 13.3, "y": 5.6},
|
||||
{"matrix": [5, 13], "x": 14.3, "y": 5.6},
|
||||
{"matrix": [5, 14], "x": 15.3, "y": 5.6}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
/* Copyright 2024 Brian H (@Trojan_Pinata)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// keymaps
|
||||
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_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_INS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, QK_KB, 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_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
QK_BOOT, 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,
|
||||
|
||||
EE_CLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
|
||||
DB_TOGG, _______, _______, KC_MYCM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP,
|
||||
_______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_EXEC, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
// encoder handling
|
||||
#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(_______, _______) },
|
||||
};
|
||||
#endif
|
||||
24
keyboards/trojan_pinata/model_b/rev0/mcuconf.h
Normal file
24
keyboards/trojan_pinata/model_b/rev0/mcuconf.h
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#define RP_I2C_USE_I2C1 TRUE
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue